//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use objc2::__framework_prelude::*;
use objc2_foundation::*;

use crate::*;

// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct UICellAccessoryDisplayedState(pub NSInteger);
impl UICellAccessoryDisplayedState {
    pub const UICellAccessoryDisplayedAlways: Self = Self(0);
    pub const UICellAccessoryDisplayedWhenEditing: Self = Self(1);
    pub const UICellAccessoryDisplayedWhenNotEditing: Self = Self(2);
}

unsafe impl Encode for UICellAccessoryDisplayedState {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for UICellAccessoryDisplayedState {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

extern "C" {
    pub static UICellAccessoryStandardDimension: CGFloat;
}

extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct UICellAccessory;

    unsafe impl ClassType for UICellAccessory {
        type Super = NSObject;
        type Mutability = MainThreadOnly;
    }
);

unsafe impl NSCoding for UICellAccessory {}

unsafe impl NSCopying for UICellAccessory {}

unsafe impl NSObjectProtocol for UICellAccessory {}

unsafe impl NSSecureCoding for UICellAccessory {}

extern_methods!(
    unsafe impl UICellAccessory {
        #[method(displayedState)]
        pub unsafe fn displayedState(&self) -> UICellAccessoryDisplayedState;

        #[method(setDisplayedState:)]
        pub unsafe fn setDisplayedState(&self, displayed_state: UICellAccessoryDisplayedState);

        #[method(isHidden)]
        pub unsafe fn isHidden(&self) -> bool;

        #[method(setHidden:)]
        pub unsafe fn setHidden(&self, hidden: bool);

        #[method(reservedLayoutWidth)]
        pub unsafe fn reservedLayoutWidth(&self) -> CGFloat;

        #[method(setReservedLayoutWidth:)]
        pub unsafe fn setReservedLayoutWidth(&self, reserved_layout_width: CGFloat);

        #[cfg(feature = "UIColor")]
        #[method_id(@__retain_semantics Other tintColor)]
        pub unsafe fn tintColor(&self) -> Option<Retained<UIColor>>;

        #[cfg(feature = "UIColor")]
        #[method(setTintColor:)]
        pub unsafe fn setTintColor(&self, tint_color: Option<&UIColor>);

        #[method_id(@__retain_semantics Init initWithCoder:)]
        pub unsafe fn initWithCoder(
            this: Allocated<Self>,
            coder: &NSCoder,
        ) -> Option<Retained<Self>>;

        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
    }
);

extern_methods!(
    /// Methods declared on superclass `NSObject`
    unsafe impl UICellAccessory {
        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
    }
);

extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct UICellAccessoryDisclosureIndicator;

    unsafe impl ClassType for UICellAccessoryDisclosureIndicator {
        #[inherits(NSObject)]
        type Super = UICellAccessory;
        type Mutability = MainThreadOnly;
    }
);

unsafe impl NSCoding for UICellAccessoryDisclosureIndicator {}

unsafe impl NSCopying for UICellAccessoryDisclosureIndicator {}

unsafe impl NSObjectProtocol for UICellAccessoryDisclosureIndicator {}

unsafe impl NSSecureCoding for UICellAccessoryDisclosureIndicator {}

extern_methods!(
    unsafe impl UICellAccessoryDisclosureIndicator {}
);

extern_methods!(
    /// Methods declared on superclass `UICellAccessory`
    unsafe impl UICellAccessoryDisclosureIndicator {
        #[method_id(@__retain_semantics Init initWithCoder:)]
        pub unsafe fn initWithCoder(
            this: Allocated<Self>,
            coder: &NSCoder,
        ) -> Option<Retained<Self>>;

        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
    }
);

extern_methods!(
    /// Methods declared on superclass `NSObject`
    unsafe impl UICellAccessoryDisclosureIndicator {
        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
    }
);

extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct UICellAccessoryDetail;

    unsafe impl ClassType for UICellAccessoryDetail {
        #[inherits(NSObject)]
        type Super = UICellAccessory;
        type Mutability = MainThreadOnly;
    }
);

unsafe impl NSCoding for UICellAccessoryDetail {}

unsafe impl NSCopying for UICellAccessoryDetail {}

unsafe impl NSObjectProtocol for UICellAccessoryDetail {}

unsafe impl NSSecureCoding for UICellAccessoryDetail {}

extern_methods!(
    unsafe impl UICellAccessoryDetail {
        #[cfg(feature = "block2")]
        #[method(actionHandler)]
        pub unsafe fn actionHandler(&self) -> *mut block2::Block<dyn Fn()>;

        #[cfg(feature = "block2")]
        #[method(setActionHandler:)]
        pub unsafe fn setActionHandler(&self, action_handler: Option<&block2::Block<dyn Fn()>>);
    }
);

extern_methods!(
    /// Methods declared on superclass `UICellAccessory`
    unsafe impl UICellAccessoryDetail {
        #[method_id(@__retain_semantics Init initWithCoder:)]
        pub unsafe fn initWithCoder(
            this: Allocated<Self>,
            coder: &NSCoder,
        ) -> Option<Retained<Self>>;

        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
    }
);

extern_methods!(
    /// Methods declared on superclass `NSObject`
    unsafe impl UICellAccessoryDetail {
        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
    }
);

extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct UICellAccessoryCheckmark;

    unsafe impl ClassType for UICellAccessoryCheckmark {
        #[inherits(NSObject)]
        type Super = UICellAccessory;
        type Mutability = MainThreadOnly;
    }
);

unsafe impl NSCoding for UICellAccessoryCheckmark {}

unsafe impl NSCopying for UICellAccessoryCheckmark {}

unsafe impl NSObjectProtocol for UICellAccessoryCheckmark {}

unsafe impl NSSecureCoding for UICellAccessoryCheckmark {}

extern_methods!(
    unsafe impl UICellAccessoryCheckmark {}
);

extern_methods!(
    /// Methods declared on superclass `UICellAccessory`
    unsafe impl UICellAccessoryCheckmark {
        #[method_id(@__retain_semantics Init initWithCoder:)]
        pub unsafe fn initWithCoder(
            this: Allocated<Self>,
            coder: &NSCoder,
        ) -> Option<Retained<Self>>;

        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
    }
);

extern_methods!(
    /// Methods declared on superclass `NSObject`
    unsafe impl UICellAccessoryCheckmark {
        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
    }
);

extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct UICellAccessoryDelete;

    unsafe impl ClassType for UICellAccessoryDelete {
        #[inherits(NSObject)]
        type Super = UICellAccessory;
        type Mutability = MainThreadOnly;
    }
);

unsafe impl NSCoding for UICellAccessoryDelete {}

unsafe impl NSCopying for UICellAccessoryDelete {}

unsafe impl NSObjectProtocol for UICellAccessoryDelete {}

unsafe impl NSSecureCoding for UICellAccessoryDelete {}

extern_methods!(
    unsafe impl UICellAccessoryDelete {
        #[cfg(feature = "UIColor")]
        #[method_id(@__retain_semantics Other backgroundColor)]
        pub unsafe fn backgroundColor(&self) -> Option<Retained<UIColor>>;

        #[cfg(feature = "UIColor")]
        #[method(setBackgroundColor:)]
        pub unsafe fn setBackgroundColor(&self, background_color: Option<&UIColor>);

        #[cfg(feature = "block2")]
        #[method(actionHandler)]
        pub unsafe fn actionHandler(&self) -> *mut block2::Block<dyn Fn()>;

        #[cfg(feature = "block2")]
        #[method(setActionHandler:)]
        pub unsafe fn setActionHandler(&self, action_handler: Option<&block2::Block<dyn Fn()>>);
    }
);

extern_methods!(
    /// Methods declared on superclass `UICellAccessory`
    unsafe impl UICellAccessoryDelete {
        #[method_id(@__retain_semantics Init initWithCoder:)]
        pub unsafe fn initWithCoder(
            this: Allocated<Self>,
            coder: &NSCoder,
        ) -> Option<Retained<Self>>;

        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
    }
);

extern_methods!(
    /// Methods declared on superclass `NSObject`
    unsafe impl UICellAccessoryDelete {
        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
    }
);

extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct UICellAccessoryInsert;

    unsafe impl ClassType for UICellAccessoryInsert {
        #[inherits(NSObject)]
        type Super = UICellAccessory;
        type Mutability = MainThreadOnly;
    }
);

unsafe impl NSCoding for UICellAccessoryInsert {}

unsafe impl NSCopying for UICellAccessoryInsert {}

unsafe impl NSObjectProtocol for UICellAccessoryInsert {}

unsafe impl NSSecureCoding for UICellAccessoryInsert {}

extern_methods!(
    unsafe impl UICellAccessoryInsert {
        #[cfg(feature = "UIColor")]
        #[method_id(@__retain_semantics Other backgroundColor)]
        pub unsafe fn backgroundColor(&self) -> Option<Retained<UIColor>>;

        #[cfg(feature = "UIColor")]
        #[method(setBackgroundColor:)]
        pub unsafe fn setBackgroundColor(&self, background_color: Option<&UIColor>);

        #[cfg(feature = "block2")]
        #[method(actionHandler)]
        pub unsafe fn actionHandler(&self) -> *mut block2::Block<dyn Fn()>;

        #[cfg(feature = "block2")]
        #[method(setActionHandler:)]
        pub unsafe fn setActionHandler(&self, action_handler: Option<&block2::Block<dyn Fn()>>);
    }
);

extern_methods!(
    /// Methods declared on superclass `UICellAccessory`
    unsafe impl UICellAccessoryInsert {
        #[method_id(@__retain_semantics Init initWithCoder:)]
        pub unsafe fn initWithCoder(
            this: Allocated<Self>,
            coder: &NSCoder,
        ) -> Option<Retained<Self>>;

        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
    }
);

extern_methods!(
    /// Methods declared on superclass `NSObject`
    unsafe impl UICellAccessoryInsert {
        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
    }
);

extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct UICellAccessoryReorder;

    unsafe impl ClassType for UICellAccessoryReorder {
        #[inherits(NSObject)]
        type Super = UICellAccessory;
        type Mutability = MainThreadOnly;
    }
);

unsafe impl NSCoding for UICellAccessoryReorder {}

unsafe impl NSCopying for UICellAccessoryReorder {}

unsafe impl NSObjectProtocol for UICellAccessoryReorder {}

unsafe impl NSSecureCoding for UICellAccessoryReorder {}

extern_methods!(
    unsafe impl UICellAccessoryReorder {
        #[method(showsVerticalSeparator)]
        pub unsafe fn showsVerticalSeparator(&self) -> bool;

        #[method(setShowsVerticalSeparator:)]
        pub unsafe fn setShowsVerticalSeparator(&self, shows_vertical_separator: bool);
    }
);

extern_methods!(
    /// Methods declared on superclass `UICellAccessory`
    unsafe impl UICellAccessoryReorder {
        #[method_id(@__retain_semantics Init initWithCoder:)]
        pub unsafe fn initWithCoder(
            this: Allocated<Self>,
            coder: &NSCoder,
        ) -> Option<Retained<Self>>;

        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
    }
);

extern_methods!(
    /// Methods declared on superclass `NSObject`
    unsafe impl UICellAccessoryReorder {
        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
    }
);

extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct UICellAccessoryMultiselect;

    unsafe impl ClassType for UICellAccessoryMultiselect {
        #[inherits(NSObject)]
        type Super = UICellAccessory;
        type Mutability = MainThreadOnly;
    }
);

unsafe impl NSCoding for UICellAccessoryMultiselect {}

unsafe impl NSCopying for UICellAccessoryMultiselect {}

unsafe impl NSObjectProtocol for UICellAccessoryMultiselect {}

unsafe impl NSSecureCoding for UICellAccessoryMultiselect {}

extern_methods!(
    unsafe impl UICellAccessoryMultiselect {
        #[cfg(feature = "UIColor")]
        #[method_id(@__retain_semantics Other backgroundColor)]
        pub unsafe fn backgroundColor(&self) -> Option<Retained<UIColor>>;

        #[cfg(feature = "UIColor")]
        #[method(setBackgroundColor:)]
        pub unsafe fn setBackgroundColor(&self, background_color: Option<&UIColor>);
    }
);

extern_methods!(
    /// Methods declared on superclass `UICellAccessory`
    unsafe impl UICellAccessoryMultiselect {
        #[method_id(@__retain_semantics Init initWithCoder:)]
        pub unsafe fn initWithCoder(
            this: Allocated<Self>,
            coder: &NSCoder,
        ) -> Option<Retained<Self>>;

        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
    }
);

extern_methods!(
    /// Methods declared on superclass `NSObject`
    unsafe impl UICellAccessoryMultiselect {
        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
    }
);

// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct UICellAccessoryOutlineDisclosureStyle(pub NSInteger);
impl UICellAccessoryOutlineDisclosureStyle {
    #[doc(alias = "UICellAccessoryOutlineDisclosureStyleAutomatic")]
    pub const Automatic: Self = Self(0);
    #[doc(alias = "UICellAccessoryOutlineDisclosureStyleHeader")]
    pub const Header: Self = Self(1);
    #[doc(alias = "UICellAccessoryOutlineDisclosureStyleCell")]
    pub const Cell: Self = Self(2);
}

unsafe impl Encode for UICellAccessoryOutlineDisclosureStyle {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for UICellAccessoryOutlineDisclosureStyle {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct UICellAccessoryOutlineDisclosure;

    unsafe impl ClassType for UICellAccessoryOutlineDisclosure {
        #[inherits(NSObject)]
        type Super = UICellAccessory;
        type Mutability = MainThreadOnly;
    }
);

unsafe impl NSCoding for UICellAccessoryOutlineDisclosure {}

unsafe impl NSCopying for UICellAccessoryOutlineDisclosure {}

unsafe impl NSObjectProtocol for UICellAccessoryOutlineDisclosure {}

unsafe impl NSSecureCoding for UICellAccessoryOutlineDisclosure {}

extern_methods!(
    unsafe impl UICellAccessoryOutlineDisclosure {
        #[method(style)]
        pub unsafe fn style(&self) -> UICellAccessoryOutlineDisclosureStyle;

        #[method(setStyle:)]
        pub unsafe fn setStyle(&self, style: UICellAccessoryOutlineDisclosureStyle);

        #[cfg(feature = "block2")]
        #[method(actionHandler)]
        pub unsafe fn actionHandler(&self) -> *mut block2::Block<dyn Fn()>;

        #[cfg(feature = "block2")]
        #[method(setActionHandler:)]
        pub unsafe fn setActionHandler(&self, action_handler: Option<&block2::Block<dyn Fn()>>);
    }
);

extern_methods!(
    /// Methods declared on superclass `UICellAccessory`
    unsafe impl UICellAccessoryOutlineDisclosure {
        #[method_id(@__retain_semantics Init initWithCoder:)]
        pub unsafe fn initWithCoder(
            this: Allocated<Self>,
            coder: &NSCoder,
        ) -> Option<Retained<Self>>;

        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
    }
);

extern_methods!(
    /// Methods declared on superclass `NSObject`
    unsafe impl UICellAccessoryOutlineDisclosure {
        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
    }
);

extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct UICellAccessoryPopUpMenu;

    unsafe impl ClassType for UICellAccessoryPopUpMenu {
        #[inherits(NSObject)]
        type Super = UICellAccessory;
        type Mutability = MainThreadOnly;
    }
);

unsafe impl NSCoding for UICellAccessoryPopUpMenu {}

unsafe impl NSCopying for UICellAccessoryPopUpMenu {}

unsafe impl NSObjectProtocol for UICellAccessoryPopUpMenu {}

unsafe impl NSSecureCoding for UICellAccessoryPopUpMenu {}

extern_methods!(
    unsafe impl UICellAccessoryPopUpMenu {
        #[cfg(all(feature = "UIMenu", feature = "UIMenuElement"))]
        #[method_id(@__retain_semantics Init initWithMenu:)]
        pub unsafe fn initWithMenu(this: Allocated<Self>, menu: &UIMenu) -> Retained<Self>;

        #[cfg(all(feature = "UIMenu", feature = "UIMenuElement"))]
        #[method_id(@__retain_semantics Other menu)]
        pub unsafe fn menu(&self) -> Retained<UIMenu>;

        #[cfg(all(feature = "UIMenu", feature = "UIMenuElement", feature = "block2"))]
        #[method(selectedElementDidChangeHandler)]
        pub unsafe fn selectedElementDidChangeHandler(
            &self,
        ) -> *mut block2::Block<dyn Fn(NonNull<UIMenu>)>;

        #[cfg(all(feature = "UIMenu", feature = "UIMenuElement", feature = "block2"))]
        #[method(setSelectedElementDidChangeHandler:)]
        pub unsafe fn setSelectedElementDidChangeHandler(
            &self,
            selected_element_did_change_handler: Option<&block2::Block<dyn Fn(NonNull<UIMenu>)>>,
        );

        #[method_id(@__retain_semantics Init initWithCoder:)]
        pub unsafe fn initWithCoder(
            this: Allocated<Self>,
            coder: &NSCoder,
        ) -> Option<Retained<Self>>;

        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;

        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
    }
);

extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct UICellAccessoryLabel;

    unsafe impl ClassType for UICellAccessoryLabel {
        #[inherits(NSObject)]
        type Super = UICellAccessory;
        type Mutability = MainThreadOnly;
    }
);

unsafe impl NSCoding for UICellAccessoryLabel {}

unsafe impl NSCopying for UICellAccessoryLabel {}

unsafe impl NSObjectProtocol for UICellAccessoryLabel {}

unsafe impl NSSecureCoding for UICellAccessoryLabel {}

extern_methods!(
    unsafe impl UICellAccessoryLabel {
        #[method_id(@__retain_semantics Init initWithText:)]
        pub unsafe fn initWithText(this: Allocated<Self>, text: &NSString) -> Retained<Self>;

        #[method_id(@__retain_semantics Other text)]
        pub unsafe fn text(&self) -> Retained<NSString>;

        #[cfg(feature = "UIFont")]
        #[method_id(@__retain_semantics Other font)]
        pub unsafe fn font(&self) -> Retained<UIFont>;

        #[cfg(feature = "UIFont")]
        #[method(setFont:)]
        pub unsafe fn setFont(&self, font: &UIFont);

        #[method(adjustsFontForContentSizeCategory)]
        pub unsafe fn adjustsFontForContentSizeCategory(&self) -> bool;

        #[method(setAdjustsFontForContentSizeCategory:)]
        pub unsafe fn setAdjustsFontForContentSizeCategory(
            &self,
            adjusts_font_for_content_size_category: bool,
        );

        #[method_id(@__retain_semantics Init initWithCoder:)]
        pub unsafe fn initWithCoder(
            this: Allocated<Self>,
            coder: &NSCoder,
        ) -> Option<Retained<Self>>;

        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;

        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
    }
);

// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct UICellAccessoryPlacement(pub NSInteger);
impl UICellAccessoryPlacement {
    #[doc(alias = "UICellAccessoryPlacementLeading")]
    pub const Leading: Self = Self(0);
    #[doc(alias = "UICellAccessoryPlacementTrailing")]
    pub const Trailing: Self = Self(1);
}

unsafe impl Encode for UICellAccessoryPlacement {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for UICellAccessoryPlacement {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

#[cfg(feature = "block2")]
pub type UICellAccessoryPosition =
    *mut block2::Block<dyn Fn(NonNull<NSArray<UICellAccessory>>) -> NSUInteger>;

extern "C" {
    #[cfg(feature = "block2")]
    pub fn UICellAccessoryPositionBeforeAccessoryOfClass(
        accessory_class: &AnyClass,
    ) -> UICellAccessoryPosition;
}

extern "C" {
    #[cfg(feature = "block2")]
    pub fn UICellAccessoryPositionAfterAccessoryOfClass(
        accessory_class: &AnyClass,
    ) -> UICellAccessoryPosition;
}

extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct UICellAccessoryCustomView;

    unsafe impl ClassType for UICellAccessoryCustomView {
        #[inherits(NSObject)]
        type Super = UICellAccessory;
        type Mutability = MainThreadOnly;
    }
);

unsafe impl NSCoding for UICellAccessoryCustomView {}

unsafe impl NSCopying for UICellAccessoryCustomView {}

unsafe impl NSObjectProtocol for UICellAccessoryCustomView {}

unsafe impl NSSecureCoding for UICellAccessoryCustomView {}

extern_methods!(
    unsafe impl UICellAccessoryCustomView {
        #[cfg(all(feature = "UIResponder", feature = "UIView"))]
        #[method_id(@__retain_semantics Init initWithCustomView:placement:)]
        pub unsafe fn initWithCustomView_placement(
            this: Allocated<Self>,
            custom_view: &UIView,
            placement: UICellAccessoryPlacement,
        ) -> Retained<Self>;

        #[cfg(all(feature = "UIResponder", feature = "UIView"))]
        #[method_id(@__retain_semantics Other customView)]
        pub unsafe fn customView(&self) -> Retained<UIView>;

        #[method(placement)]
        pub unsafe fn placement(&self) -> UICellAccessoryPlacement;

        #[method(maintainsFixedSize)]
        pub unsafe fn maintainsFixedSize(&self) -> bool;

        #[method(setMaintainsFixedSize:)]
        pub unsafe fn setMaintainsFixedSize(&self, maintains_fixed_size: bool);

        #[cfg(feature = "block2")]
        #[method(position)]
        pub unsafe fn position(&self) -> UICellAccessoryPosition;

        #[cfg(feature = "block2")]
        #[method(setPosition:)]
        pub unsafe fn setPosition(&self, position: UICellAccessoryPosition);

        #[method_id(@__retain_semantics Init initWithCoder:)]
        pub unsafe fn initWithCoder(
            this: Allocated<Self>,
            coder: &NSCoder,
        ) -> Option<Retained<Self>>;

        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;

        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
    }
);
