#[allow(unused_imports)]
use crate::objc::*;
#[allow(unused_imports)]
use crate::AppKit::*;
#[allow(unused_imports)]
use crate::CoreFoundation::*;
#[allow(unused_imports)]
use crate::CoreServices::*;
#[allow(unused_imports)]
use crate::IOKit::*;
#[allow(unused_imports)]
use crate::Security::*;
#[allow(unused_imports)]
use libc::{gid_t, id_t, key_t, pid_t, uid_t};

#[allow(unused_imports)]
use objc2::msg_send;
pub type au_asid_t = pid_t;
pub type NSInteger = ::std::os::raw::c_long;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _NSZone {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _xpc_type_s {
    _unused: [u8; 0],
}
pub type xpc_type_t = *const _xpc_type_s;
pub type xpc_object_t = NSObject;
pub type NSExceptionName = NSString;
pub type NSRunLoopMode = NSString;
pub type NSComparisonResult = NSInteger;
pub type NSComparator = *mut ::std::os::raw::c_void;
pub type NSEnumerationOptions = NSUInteger;
pub type NSSortOptions = NSUInteger;
pub type NSQualityOfService = NSInteger;
pub type NSZone = _NSZone;
pub trait PNSCopying: Sized + std::ops::Deref {
    unsafe fn copyWithZone_(&self, zone: *mut NSZone) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, copyWithZone : zone)
    }
}
pub trait PNSMutableCopying: Sized + std::ops::Deref {
    unsafe fn mutableCopyWithZone_(&self, zone: *mut NSZone) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, mutableCopyWithZone : zone)
    }
}
pub trait PNSCoding: Sized + std::ops::Deref {
    unsafe fn encodeWithCoder_(&self, coder: NSCoder)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeWithCoder : coder)
    }
    unsafe fn initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
}
pub trait PNSSecureCoding: Sized + std::ops::Deref {
    unsafe fn supportsSecureCoding() -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSSecureCoding").unwrap(), supportsSecureCoding)
    }
}
pub trait NSObject_NSCoderMethods: Sized + std::ops::Deref {
    unsafe fn replacementObjectForCoder_(&self, coder: NSCoder) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replacementObjectForCoder : coder)
    }
    unsafe fn awakeAfterUsingCoder_(&self, coder: NSCoder) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, awakeAfterUsingCoder : coder)
    }
    unsafe fn classForCoder(&self) -> Class
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, classForCoder)
    }
    unsafe fn version() -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSObject").unwrap(), version)
    }
    unsafe fn setVersion_(aVersion: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSObject").unwrap(), setVersion : aVersion)
    }
}
pub trait NSObject_NSDeprecatedMethods: Sized + std::ops::Deref {
    unsafe fn poseAsClass_(aClass: Class)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSObject").unwrap(), poseAsClass : aClass)
    }
}
pub trait PNSDiscardableContent: Sized + std::ops::Deref {
    unsafe fn beginContentAccess(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, beginContentAccess)
    }
    unsafe fn endContentAccess(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endContentAccess)
    }
    unsafe fn discardContentIfPossible(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, discardContentIfPossible)
    }
    unsafe fn isContentDiscarded(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isContentDiscarded)
    }
}
pub trait NSObject_NSDiscardableContentProxy: Sized + std::ops::Deref {
    unsafe fn autoContentAccessingProxy(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, autoContentAccessingProxy)
    }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct NSFastEnumerationState {
    pub state: ::std::os::raw::c_ulong,
    pub itemsPtr: *mut id,
    pub mutationsPtr: *mut ::std::os::raw::c_ulong,
    pub extra: [::std::os::raw::c_ulong; 5usize],
}
pub trait PNSFastEnumeration: Sized + std::ops::Deref {
    unsafe fn countByEnumeratingWithState_objects_count_(
        &self,
        state: *mut NSFastEnumerationState,
        buffer: *mut id,
        len: NSUInteger,
    ) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, countByEnumeratingWithState : state, objects : buffer, count : len)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSEnumerator(pub id);
impl std::ops::Deref for NSEnumerator {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSEnumerator {}
impl NSEnumerator {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSEnumerator").unwrap(), alloc) })
    }
}
impl PNSFastEnumeration for NSEnumerator {}
impl INSObject for NSEnumerator {}
impl PNSObject for NSEnumerator {}
impl std::convert::TryFrom<NSObject> for NSEnumerator {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSEnumerator, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSEnumerator").unwrap()) };
        if is_kind_of {
            Ok(NSEnumerator(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSEnumerator")
        }
    }
}
impl<ObjectType: 'static> INSEnumerator<ObjectType> for NSEnumerator {}
pub trait INSEnumerator<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn nextObject(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nextObject)
    }
}
impl<ObjectType: 'static> NSEnumerator_NSExtendedEnumerator<ObjectType> for NSEnumerator {}
pub trait NSEnumerator_NSExtendedEnumerator<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn allObjects(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allObjects)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSValue(pub id);
impl std::ops::Deref for NSValue {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSValue {}
impl NSValue {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSValue").unwrap(), alloc) })
    }
}
impl PNSCopying for NSValue {}
impl PNSSecureCoding for NSValue {}
impl INSObject for NSValue {}
impl PNSObject for NSValue {}
impl std::convert::TryFrom<NSObject> for NSValue {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSValue, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSValue").unwrap()) };
        if is_kind_of {
            Ok(NSValue(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSValue")
        }
    }
}
impl INSValue for NSValue {}
pub trait INSValue: Sized + std::ops::Deref {
    unsafe fn getValue_size_(&self, value: *mut ::std::os::raw::c_void, size: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getValue : value, size : size)
    }
    unsafe fn initWithBytes_objCType_(
        &self,
        value: *const ::std::os::raw::c_void,
        type_: *const ::std::os::raw::c_char,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithBytes : value, objCType : type_)
    }
    unsafe fn initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
    unsafe fn objCType(&self) -> *const ::std::os::raw::c_char
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, objCType)
    }
}
impl NSValue_NSValueCreation for NSValue {}
pub trait NSValue_NSValueCreation: Sized + std::ops::Deref {
    unsafe fn valueWithBytes_objCType_(
        value: *const ::std::os::raw::c_void,
        type_: *const ::std::os::raw::c_char,
    ) -> NSValue
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSValue").unwrap(), valueWithBytes : value, objCType : type_)
    }
    unsafe fn value_withObjCType_(
        value: *const ::std::os::raw::c_void,
        type_: *const ::std::os::raw::c_char,
    ) -> NSValue
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSValue").unwrap(), value : value, withObjCType : type_)
    }
}
impl NSValue_NSValueExtensionMethods for NSValue {}
pub trait NSValue_NSValueExtensionMethods: Sized + std::ops::Deref {
    unsafe fn isEqualToValue_(&self, value: NSValue) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isEqualToValue : value)
    }
    unsafe fn nonretainedObjectValue(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nonretainedObjectValue)
    }
    unsafe fn pointerValue(&self) -> *mut ::std::os::raw::c_void
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pointerValue)
    }
    unsafe fn valueWithNonretainedObject_(anObject: id) -> NSValue
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSValue").unwrap(), valueWithNonretainedObject : anObject)
    }
    unsafe fn valueWithPointer_(pointer: *const ::std::os::raw::c_void) -> NSValue
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSValue").unwrap(), valueWithPointer : pointer)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSNumber(pub id);
impl std::ops::Deref for NSNumber {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSNumber {}
impl NSNumber {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSNumber").unwrap(), alloc) })
    }
}
impl INSValue for NSNumber {}
impl PNSCopying for NSNumber {}
impl PNSSecureCoding for NSNumber {}
impl From<NSNumber> for NSValue {
    fn from(child: NSNumber) -> NSValue {
        NSValue(child.0)
    }
}
impl std::convert::TryFrom<NSValue> for NSNumber {
    type Error = &'static str;
    fn try_from(parent: NSValue) -> Result<NSNumber, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSNumber").unwrap()) };
        if is_kind_of {
            Ok(NSNumber(parent.0))
        } else {
            Err("This NSValue cannot be downcasted to NSNumber")
        }
    }
}
impl INSObject for NSNumber {}
impl PNSObject for NSNumber {}
impl INSNumber for NSNumber {}
pub trait INSNumber: Sized + std::ops::Deref {
    unsafe fn initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
    unsafe fn initWithChar_(&self, value: ::std::os::raw::c_char) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithChar : value)
    }
    unsafe fn initWithUnsignedChar_(&self, value: ::std::os::raw::c_uchar) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithUnsignedChar : value)
    }
    unsafe fn initWithShort_(&self, value: ::std::os::raw::c_short) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithShort : value)
    }
    unsafe fn initWithUnsignedShort_(&self, value: ::std::os::raw::c_ushort) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithUnsignedShort : value)
    }
    unsafe fn initWithInt_(&self, value: ::std::os::raw::c_int) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithInt : value)
    }
    unsafe fn initWithUnsignedInt_(&self, value: ::std::os::raw::c_uint) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithUnsignedInt : value)
    }
    unsafe fn initWithLong_(&self, value: ::std::os::raw::c_long) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithLong : value)
    }
    unsafe fn initWithUnsignedLong_(&self, value: ::std::os::raw::c_ulong) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithUnsignedLong : value)
    }
    unsafe fn initWithLongLong_(&self, value: ::std::os::raw::c_longlong) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithLongLong : value)
    }
    unsafe fn initWithUnsignedLongLong_(&self, value: ::std::os::raw::c_ulonglong) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithUnsignedLongLong : value)
    }
    unsafe fn initWithFloat_(&self, value: f32) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithFloat : value)
    }
    unsafe fn initWithDouble_(&self, value: f64) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDouble : value)
    }
    unsafe fn initWithBool_(&self, value: BOOL) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithBool : value)
    }
    unsafe fn initWithInteger_(&self, value: NSInteger) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithInteger : value)
    }
    unsafe fn initWithUnsignedInteger_(&self, value: NSUInteger) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithUnsignedInteger : value)
    }
    unsafe fn compare_(&self, otherNumber: NSNumber) -> NSComparisonResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, compare : otherNumber)
    }
    unsafe fn isEqualToNumber_(&self, number: NSNumber) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isEqualToNumber : number)
    }
    unsafe fn descriptionWithLocale_(&self, locale: id) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, descriptionWithLocale : locale)
    }
    unsafe fn charValue(&self) -> ::std::os::raw::c_char
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, charValue)
    }
    unsafe fn unsignedCharValue(&self) -> ::std::os::raw::c_uchar
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, unsignedCharValue)
    }
    unsafe fn shortValue(&self) -> ::std::os::raw::c_short
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shortValue)
    }
    unsafe fn unsignedShortValue(&self) -> ::std::os::raw::c_ushort
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, unsignedShortValue)
    }
    unsafe fn intValue(&self) -> ::std::os::raw::c_int
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, intValue)
    }
    unsafe fn unsignedIntValue(&self) -> ::std::os::raw::c_uint
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, unsignedIntValue)
    }
    unsafe fn longValue(&self) -> ::std::os::raw::c_long
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, longValue)
    }
    unsafe fn unsignedLongValue(&self) -> ::std::os::raw::c_ulong
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, unsignedLongValue)
    }
    unsafe fn longLongValue(&self) -> ::std::os::raw::c_longlong
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, longLongValue)
    }
    unsafe fn unsignedLongLongValue(&self) -> ::std::os::raw::c_ulonglong
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, unsignedLongLongValue)
    }
    unsafe fn floatValue(&self) -> f32
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, floatValue)
    }
    unsafe fn doubleValue(&self) -> f64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, doubleValue)
    }
    unsafe fn boolValue(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, boolValue)
    }
    unsafe fn integerValue(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, integerValue)
    }
    unsafe fn unsignedIntegerValue(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, unsignedIntegerValue)
    }
    unsafe fn stringValue(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stringValue)
    }
}
impl NSNumber_NSNumberCreation for NSNumber {}
pub trait NSNumber_NSNumberCreation: Sized + std::ops::Deref {
    unsafe fn numberWithChar_(value: ::std::os::raw::c_char) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNumber").unwrap(), numberWithChar : value)
    }
    unsafe fn numberWithUnsignedChar_(value: ::std::os::raw::c_uchar) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNumber").unwrap(), numberWithUnsignedChar : value)
    }
    unsafe fn numberWithShort_(value: ::std::os::raw::c_short) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNumber").unwrap(), numberWithShort : value)
    }
    unsafe fn numberWithUnsignedShort_(value: ::std::os::raw::c_ushort) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNumber").unwrap(), numberWithUnsignedShort : value)
    }
    unsafe fn numberWithInt_(value: ::std::os::raw::c_int) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNumber").unwrap(), numberWithInt : value)
    }
    unsafe fn numberWithUnsignedInt_(value: ::std::os::raw::c_uint) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNumber").unwrap(), numberWithUnsignedInt : value)
    }
    unsafe fn numberWithLong_(value: ::std::os::raw::c_long) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNumber").unwrap(), numberWithLong : value)
    }
    unsafe fn numberWithUnsignedLong_(value: ::std::os::raw::c_ulong) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNumber").unwrap(), numberWithUnsignedLong : value)
    }
    unsafe fn numberWithLongLong_(value: ::std::os::raw::c_longlong) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNumber").unwrap(), numberWithLongLong : value)
    }
    unsafe fn numberWithUnsignedLongLong_(value: ::std::os::raw::c_ulonglong) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNumber").unwrap(), numberWithUnsignedLongLong : value)
    }
    unsafe fn numberWithFloat_(value: f32) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNumber").unwrap(), numberWithFloat : value)
    }
    unsafe fn numberWithDouble_(value: f64) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNumber").unwrap(), numberWithDouble : value)
    }
    unsafe fn numberWithBool_(value: BOOL) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNumber").unwrap(), numberWithBool : value)
    }
    unsafe fn numberWithInteger_(value: NSInteger) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNumber").unwrap(), numberWithInteger : value)
    }
    unsafe fn numberWithUnsignedInteger_(value: NSUInteger) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNumber").unwrap(), numberWithUnsignedInteger : value)
    }
}
impl NSValue_NSDeprecated for NSValue {}
pub trait NSValue_NSDeprecated: Sized + std::ops::Deref {
    unsafe fn getValue_(&self, value: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getValue : value)
    }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _NSRange {
    pub location: NSUInteger,
    pub length: NSUInteger,
}
pub type NSRange = _NSRange;
pub type NSRangePointer = *mut NSRange;
impl NSValue_NSValueRangeExtensions for NSValue {}
pub trait NSValue_NSValueRangeExtensions: Sized + std::ops::Deref {
    unsafe fn rangeValue(&self) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rangeValue)
    }
    unsafe fn valueWithRange_(range: NSRange) -> NSValue
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSValue").unwrap(), valueWithRange : range)
    }
}
pub type NSCollectionChangeType = NSInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSOrderedCollectionChange(pub id);
impl std::ops::Deref for NSOrderedCollectionChange {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSOrderedCollectionChange {}
impl NSOrderedCollectionChange {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSOrderedCollectionChange").unwrap(), alloc) })
    }
}
impl INSObject for NSOrderedCollectionChange {}
impl PNSObject for NSOrderedCollectionChange {}
impl std::convert::TryFrom<NSObject> for NSOrderedCollectionChange {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSOrderedCollectionChange, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSOrderedCollectionChange").unwrap()) };
        if is_kind_of {
            Ok(NSOrderedCollectionChange(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSOrderedCollectionChange")
        }
    }
}
impl<ObjectType: 'static> INSOrderedCollectionChange<ObjectType> for NSOrderedCollectionChange {}
pub trait INSOrderedCollectionChange<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn init(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithObject_type_index_(
        &self,
        anObject: id,
        type_: NSCollectionChangeType,
        index: NSUInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithObject : anObject, r#type : type_, index : index)
    }
    unsafe fn initWithObject_type_index_associatedIndex_(
        &self,
        anObject: id,
        type_: NSCollectionChangeType,
        index: NSUInteger,
        associatedIndex: NSUInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithObject : anObject, r#type : type_, index : index, associatedIndex : associatedIndex)
    }
    unsafe fn object(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, object)
    }
    unsafe fn changeType(&self) -> NSCollectionChangeType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, changeType)
    }
    unsafe fn index(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, index)
    }
    unsafe fn associatedIndex(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, associatedIndex)
    }
    unsafe fn changeWithObject_type_index_(
        anObject: id,
        type_: NSCollectionChangeType,
        index: NSUInteger,
    ) -> NSOrderedCollectionChange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSOrderedCollectionChange").unwrap(), changeWithObject : anObject, r#type : type_, index : index)
    }
    unsafe fn changeWithObject_type_index_associatedIndex_(
        anObject: id,
        type_: NSCollectionChangeType,
        index: NSUInteger,
        associatedIndex: NSUInteger,
    ) -> NSOrderedCollectionChange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSOrderedCollectionChange").unwrap(), changeWithObject : anObject, r#type : type_, index : index, associatedIndex : associatedIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSIndexSet(pub id);
impl std::ops::Deref for NSIndexSet {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSIndexSet {}
impl NSIndexSet {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSIndexSet").unwrap(), alloc) })
    }
}
impl PNSCopying for NSIndexSet {}
impl PNSMutableCopying for NSIndexSet {}
impl PNSSecureCoding for NSIndexSet {}
impl INSObject for NSIndexSet {}
impl PNSObject for NSIndexSet {}
impl std::convert::TryFrom<NSObject> for NSIndexSet {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSIndexSet, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSIndexSet").unwrap()) };
        if is_kind_of {
            Ok(NSIndexSet(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSIndexSet")
        }
    }
}
impl INSIndexSet for NSIndexSet {}
pub trait INSIndexSet: Sized + std::ops::Deref {
    unsafe fn initWithIndexesInRange_(&self, range: NSRange) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithIndexesInRange : range)
    }
    unsafe fn initWithIndexSet_(&self, indexSet: NSIndexSet) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithIndexSet : indexSet)
    }
    unsafe fn initWithIndex_(&self, value: NSUInteger) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithIndex : value)
    }
    unsafe fn isEqualToIndexSet_(&self, indexSet: NSIndexSet) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isEqualToIndexSet : indexSet)
    }
    unsafe fn indexGreaterThanIndex_(&self, value: NSUInteger) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexGreaterThanIndex : value)
    }
    unsafe fn indexLessThanIndex_(&self, value: NSUInteger) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexLessThanIndex : value)
    }
    unsafe fn indexGreaterThanOrEqualToIndex_(&self, value: NSUInteger) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexGreaterThanOrEqualToIndex : value)
    }
    unsafe fn indexLessThanOrEqualToIndex_(&self, value: NSUInteger) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexLessThanOrEqualToIndex : value)
    }
    unsafe fn getIndexes_maxCount_inIndexRange_(
        &self,
        indexBuffer: *mut NSUInteger,
        bufferSize: NSUInteger,
        range: NSRangePointer,
    ) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getIndexes : indexBuffer, maxCount : bufferSize, inIndexRange : range)
    }
    unsafe fn countOfIndexesInRange_(&self, range: NSRange) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, countOfIndexesInRange : range)
    }
    unsafe fn containsIndex_(&self, value: NSUInteger) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, containsIndex : value)
    }
    unsafe fn containsIndexesInRange_(&self, range: NSRange) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, containsIndexesInRange : range)
    }
    unsafe fn containsIndexes_(&self, indexSet: NSIndexSet) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, containsIndexes : indexSet)
    }
    unsafe fn intersectsIndexesInRange_(&self, range: NSRange) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, intersectsIndexesInRange : range)
    }
    unsafe fn enumerateIndexesUsingBlock_(&self, block: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateIndexesUsingBlock : block)
    }
    unsafe fn enumerateIndexesWithOptions_usingBlock_(
        &self,
        opts: NSEnumerationOptions,
        block: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateIndexesWithOptions : opts, usingBlock : block)
    }
    unsafe fn enumerateIndexesInRange_options_usingBlock_(
        &self,
        range: NSRange,
        opts: NSEnumerationOptions,
        block: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateIndexesInRange : range, options : opts, usingBlock : block)
    }
    unsafe fn indexPassingTest_(&self, predicate: *mut ::std::os::raw::c_void) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexPassingTest : predicate)
    }
    unsafe fn indexWithOptions_passingTest_(
        &self,
        opts: NSEnumerationOptions,
        predicate: *mut ::std::os::raw::c_void,
    ) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexWithOptions : opts, passingTest : predicate)
    }
    unsafe fn indexInRange_options_passingTest_(
        &self,
        range: NSRange,
        opts: NSEnumerationOptions,
        predicate: *mut ::std::os::raw::c_void,
    ) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexInRange : range, options : opts, passingTest : predicate)
    }
    unsafe fn indexesPassingTest_(&self, predicate: *mut ::std::os::raw::c_void) -> NSIndexSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexesPassingTest : predicate)
    }
    unsafe fn indexesWithOptions_passingTest_(
        &self,
        opts: NSEnumerationOptions,
        predicate: *mut ::std::os::raw::c_void,
    ) -> NSIndexSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexesWithOptions : opts, passingTest : predicate)
    }
    unsafe fn indexesInRange_options_passingTest_(
        &self,
        range: NSRange,
        opts: NSEnumerationOptions,
        predicate: *mut ::std::os::raw::c_void,
    ) -> NSIndexSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexesInRange : range, options : opts, passingTest : predicate)
    }
    unsafe fn enumerateRangesUsingBlock_(&self, block: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateRangesUsingBlock : block)
    }
    unsafe fn enumerateRangesWithOptions_usingBlock_(
        &self,
        opts: NSEnumerationOptions,
        block: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateRangesWithOptions : opts, usingBlock : block)
    }
    unsafe fn enumerateRangesInRange_options_usingBlock_(
        &self,
        range: NSRange,
        opts: NSEnumerationOptions,
        block: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateRangesInRange : range, options : opts, usingBlock : block)
    }
    unsafe fn count(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, count)
    }
    unsafe fn firstIndex(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, firstIndex)
    }
    unsafe fn lastIndex(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lastIndex)
    }
    unsafe fn indexSet() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSIndexSet").unwrap(), indexSet)
    }
    unsafe fn indexSetWithIndex_(value: NSUInteger) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSIndexSet").unwrap(), indexSetWithIndex : value)
    }
    unsafe fn indexSetWithIndexesInRange_(range: NSRange) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSIndexSet").unwrap(), indexSetWithIndexesInRange : range)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMutableIndexSet(pub id);
impl std::ops::Deref for NSMutableIndexSet {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMutableIndexSet {}
impl NSMutableIndexSet {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableIndexSet").unwrap(), alloc) })
    }
}
impl INSIndexSet for NSMutableIndexSet {}
impl PNSCopying for NSMutableIndexSet {}
impl PNSMutableCopying for NSMutableIndexSet {}
impl PNSSecureCoding for NSMutableIndexSet {}
impl From<NSMutableIndexSet> for NSIndexSet {
    fn from(child: NSMutableIndexSet) -> NSIndexSet {
        NSIndexSet(child.0)
    }
}
impl std::convert::TryFrom<NSIndexSet> for NSMutableIndexSet {
    type Error = &'static str;
    fn try_from(parent: NSIndexSet) -> Result<NSMutableIndexSet, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMutableIndexSet").unwrap()) };
        if is_kind_of {
            Ok(NSMutableIndexSet(parent.0))
        } else {
            Err("This NSIndexSet cannot be downcasted to NSMutableIndexSet")
        }
    }
}
impl INSObject for NSMutableIndexSet {}
impl PNSObject for NSMutableIndexSet {}
impl INSMutableIndexSet for NSMutableIndexSet {}
pub trait INSMutableIndexSet: Sized + std::ops::Deref {
    unsafe fn addIndexes_(&self, indexSet: NSIndexSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addIndexes : indexSet)
    }
    unsafe fn removeIndexes_(&self, indexSet: NSIndexSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeIndexes : indexSet)
    }
    unsafe fn removeAllIndexes(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, removeAllIndexes)
    }
    unsafe fn addIndex_(&self, value: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addIndex : value)
    }
    unsafe fn removeIndex_(&self, value: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeIndex : value)
    }
    unsafe fn addIndexesInRange_(&self, range: NSRange)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addIndexesInRange : range)
    }
    unsafe fn removeIndexesInRange_(&self, range: NSRange)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeIndexesInRange : range)
    }
    unsafe fn shiftIndexesStartingAtIndex_by_(&self, index: NSUInteger, delta: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, shiftIndexesStartingAtIndex : index, by : delta)
    }
}
pub type NSOrderedCollectionDifferenceCalculationOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSOrderedCollectionDifference(pub id);
impl std::ops::Deref for NSOrderedCollectionDifference {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSOrderedCollectionDifference {}
impl NSOrderedCollectionDifference {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSOrderedCollectionDifference").unwrap(), alloc) })
    }
}
impl PNSFastEnumeration for NSOrderedCollectionDifference {}
impl INSObject for NSOrderedCollectionDifference {}
impl PNSObject for NSOrderedCollectionDifference {}
impl std::convert::TryFrom<NSObject> for NSOrderedCollectionDifference {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSOrderedCollectionDifference, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSOrderedCollectionDifference").unwrap())
        };
        if is_kind_of {
            Ok(NSOrderedCollectionDifference(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSOrderedCollectionDifference")
        }
    }
}
impl<ObjectType: 'static> INSOrderedCollectionDifference<ObjectType>
    for NSOrderedCollectionDifference
{
}
pub trait INSOrderedCollectionDifference<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn initWithChanges_(&self, changes: NSArray) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithChanges : changes)
    }
    unsafe fn initWithInsertIndexes_insertedObjects_removeIndexes_removedObjects_additionalChanges_(
        &self,
        inserts: NSIndexSet,
        insertedObjects: NSArray,
        removes: NSIndexSet,
        removedObjects: NSArray,
        changes: NSArray,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithInsertIndexes : inserts, insertedObjects : insertedObjects, removeIndexes : removes, removedObjects : removedObjects, additionalChanges : changes)
    }
    unsafe fn initWithInsertIndexes_insertedObjects_removeIndexes_removedObjects_(
        &self,
        inserts: NSIndexSet,
        insertedObjects: NSArray,
        removes: NSIndexSet,
        removedObjects: NSArray,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithInsertIndexes : inserts, insertedObjects : insertedObjects, removeIndexes : removes, removedObjects : removedObjects)
    }
    unsafe fn differenceByTransformingChangesWithBlock_(
        &self,
        block: *mut ::std::os::raw::c_void,
    ) -> NSOrderedCollectionDifference
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, differenceByTransformingChangesWithBlock : block)
    }
    unsafe fn inverseDifference(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, inverseDifference)
    }
    unsafe fn insertions(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, insertions)
    }
    unsafe fn removals(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, removals)
    }
    unsafe fn hasChanges(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hasChanges)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSArray(pub id);
impl std::ops::Deref for NSArray {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSArray {}
impl NSArray {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSArray").unwrap(), alloc) })
    }
}
impl PNSCopying for NSArray {}
impl PNSMutableCopying for NSArray {}
impl PNSSecureCoding for NSArray {}
impl PNSFastEnumeration for NSArray {}
impl INSObject for NSArray {}
impl PNSObject for NSArray {}
impl std::convert::TryFrom<NSObject> for NSArray {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSArray, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSArray").unwrap()) };
        if is_kind_of {
            Ok(NSArray(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSArray")
        }
    }
}
impl<ObjectType: 'static> INSArray<ObjectType> for NSArray {}
pub trait INSArray<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn objectAtIndex_(&self, index: NSUInteger) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectAtIndex : index)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithObjects_count_(
        &self,
        objects: *const *mut u64,
        cnt: NSUInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithObjects : objects, count : cnt)
    }
    unsafe fn initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
    unsafe fn count(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, count)
    }
}
impl<ObjectType: 'static> NSArray_NSExtendedArray<ObjectType> for NSArray {}
pub trait NSArray_NSExtendedArray<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn arrayByAddingObject_(&self, anObject: id) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, arrayByAddingObject : anObject)
    }
    unsafe fn arrayByAddingObjectsFromArray_(&self, otherArray: NSArray) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, arrayByAddingObjectsFromArray : otherArray)
    }
    unsafe fn componentsJoinedByString_(&self, separator: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, componentsJoinedByString : separator)
    }
    unsafe fn containsObject_(&self, anObject: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, containsObject : anObject)
    }
    unsafe fn descriptionWithLocale_(&self, locale: id) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, descriptionWithLocale : locale)
    }
    unsafe fn descriptionWithLocale_indent_(&self, locale: id, level: NSUInteger) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, descriptionWithLocale : locale, indent : level)
    }
    unsafe fn firstObjectCommonWithArray_(&self, otherArray: NSArray) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, firstObjectCommonWithArray : otherArray)
    }
    unsafe fn getObjects_range_(&self, objects: *mut id, range: NSRange)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getObjects : objects, range : range)
    }
    unsafe fn indexOfObject_(&self, anObject: id) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexOfObject : anObject)
    }
    unsafe fn indexOfObject_inRange_(&self, anObject: id, range: NSRange) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexOfObject : anObject, inRange : range)
    }
    unsafe fn indexOfObjectIdenticalTo_(&self, anObject: id) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexOfObjectIdenticalTo : anObject)
    }
    unsafe fn indexOfObjectIdenticalTo_inRange_(&self, anObject: id, range: NSRange) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexOfObjectIdenticalTo : anObject, inRange : range)
    }
    unsafe fn isEqualToArray_(&self, otherArray: NSArray) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isEqualToArray : otherArray)
    }
    unsafe fn objectEnumerator(&self) -> NSEnumerator
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, objectEnumerator)
    }
    unsafe fn reverseObjectEnumerator(&self) -> NSEnumerator
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reverseObjectEnumerator)
    }
    unsafe fn sortedArrayUsingFunction_context_(
        &self,
        comparator: ::std::option::Option<
            unsafe extern "C" fn(
                arg1: id,
                arg2: id,
                arg3: *mut ::std::os::raw::c_void,
            ) -> NSInteger,
        >,
        context: *mut ::std::os::raw::c_void,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sortedArrayUsingFunction : comparator, context : context)
    }
    unsafe fn sortedArrayUsingFunction_context_hint_(
        &self,
        comparator: ::std::option::Option<
            unsafe extern "C" fn(
                arg1: id,
                arg2: id,
                arg3: *mut ::std::os::raw::c_void,
            ) -> NSInteger,
        >,
        context: *mut ::std::os::raw::c_void,
        hint: NSData,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sortedArrayUsingFunction : comparator, context : context, hint : hint)
    }
    unsafe fn sortedArrayUsingSelector_(&self, comparator: objc2::runtime::Sel) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sortedArrayUsingSelector : comparator)
    }
    unsafe fn subarrayWithRange_(&self, range: NSRange) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subarrayWithRange : range)
    }
    unsafe fn writeToURL_error_(&self, url: NSURL, error: *mut NSError) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeToURL : url, error : error)
    }
    unsafe fn makeObjectsPerformSelector_(&self, aSelector: objc2::runtime::Sel)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, makeObjectsPerformSelector : aSelector)
    }
    unsafe fn makeObjectsPerformSelector_withObject_(
        &self,
        aSelector: objc2::runtime::Sel,
        argument: id,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, makeObjectsPerformSelector : aSelector, withObject : argument)
    }
    unsafe fn objectsAtIndexes_(&self, indexes: NSIndexSet) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectsAtIndexes : indexes)
    }
    unsafe fn objectAtIndexedSubscript_(&self, idx: NSUInteger) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectAtIndexedSubscript : idx)
    }
    unsafe fn enumerateObjectsUsingBlock_(&self, block: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateObjectsUsingBlock : block)
    }
    unsafe fn enumerateObjectsWithOptions_usingBlock_(
        &self,
        opts: NSEnumerationOptions,
        block: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateObjectsWithOptions : opts, usingBlock : block)
    }
    unsafe fn enumerateObjectsAtIndexes_options_usingBlock_(
        &self,
        s: NSIndexSet,
        opts: NSEnumerationOptions,
        block: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateObjectsAtIndexes : s, options : opts, usingBlock : block)
    }
    unsafe fn indexOfObjectPassingTest_(&self, predicate: *mut ::std::os::raw::c_void) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexOfObjectPassingTest : predicate)
    }
    unsafe fn indexOfObjectWithOptions_passingTest_(
        &self,
        opts: NSEnumerationOptions,
        predicate: *mut ::std::os::raw::c_void,
    ) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexOfObjectWithOptions : opts, passingTest : predicate)
    }
    unsafe fn indexOfObjectAtIndexes_options_passingTest_(
        &self,
        s: NSIndexSet,
        opts: NSEnumerationOptions,
        predicate: *mut ::std::os::raw::c_void,
    ) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexOfObjectAtIndexes : s, options : opts, passingTest : predicate)
    }
    unsafe fn indexesOfObjectsPassingTest_(
        &self,
        predicate: *mut ::std::os::raw::c_void,
    ) -> NSIndexSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexesOfObjectsPassingTest : predicate)
    }
    unsafe fn indexesOfObjectsWithOptions_passingTest_(
        &self,
        opts: NSEnumerationOptions,
        predicate: *mut ::std::os::raw::c_void,
    ) -> NSIndexSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexesOfObjectsWithOptions : opts, passingTest : predicate)
    }
    unsafe fn indexesOfObjectsAtIndexes_options_passingTest_(
        &self,
        s: NSIndexSet,
        opts: NSEnumerationOptions,
        predicate: *mut ::std::os::raw::c_void,
    ) -> NSIndexSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexesOfObjectsAtIndexes : s, options : opts, passingTest : predicate)
    }
    unsafe fn sortedArrayUsingComparator_(&self, cmptr: NSComparator) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sortedArrayUsingComparator : cmptr)
    }
    unsafe fn sortedArrayWithOptions_usingComparator_(
        &self,
        opts: NSSortOptions,
        cmptr: NSComparator,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sortedArrayWithOptions : opts, usingComparator : cmptr)
    }
    unsafe fn indexOfObject_inSortedRange_options_usingComparator_(
        &self,
        obj: id,
        r: NSRange,
        opts: NSBinarySearchingOptions,
        cmp: NSComparator,
    ) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexOfObject : obj, inSortedRange : r, options : opts, usingComparator : cmp)
    }
    unsafe fn description(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, description)
    }
    unsafe fn firstObject(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, firstObject)
    }
    unsafe fn lastObject(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lastObject)
    }
    unsafe fn sortedArrayHint(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sortedArrayHint)
    }
}
pub type NSBinarySearchingOptions = NSUInteger;
impl<ObjectType: 'static> NSArray_NSArrayCreation<ObjectType> for NSArray {}
pub trait NSArray_NSArrayCreation<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn initWithObjects_(&self, firstObj: id) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithObjects : firstObj)
    }
    unsafe fn initWithArray_(&self, array: NSArray) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithArray : array)
    }
    unsafe fn initWithArray_copyItems_(&self, array: NSArray, flag: BOOL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithArray : array, copyItems : flag)
    }
    unsafe fn initWithContentsOfURL_error_(&self, url: NSURL, error: *mut NSError) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfURL : url, error : error)
    }
    unsafe fn array() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSArray").unwrap(), array)
    }
    unsafe fn arrayWithObject_(anObject: id) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSArray").unwrap(), arrayWithObject : anObject)
    }
    unsafe fn arrayWithObjects_count_(objects: *const *mut u64, cnt: NSUInteger) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSArray").unwrap(), arrayWithObjects : objects, count : cnt)
    }
    unsafe fn arrayWithObjects_(firstObj: id) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSArray").unwrap(), arrayWithObjects : firstObj)
    }
    unsafe fn arrayWithArray_(array: NSArray) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSArray").unwrap(), arrayWithArray : array)
    }
    unsafe fn arrayWithContentsOfURL_error_(url: NSURL, error: *mut NSError) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSArray").unwrap(), arrayWithContentsOfURL : url, error : error)
    }
}
impl<ObjectType: 'static> NSArray_NSArrayDiffing<ObjectType> for NSArray {}
pub trait NSArray_NSArrayDiffing<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn differenceFromArray_withOptions_usingEquivalenceTest_(
        &self,
        other: NSArray,
        options: NSOrderedCollectionDifferenceCalculationOptions,
        block: *mut ::std::os::raw::c_void,
    ) -> NSOrderedCollectionDifference
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, differenceFromArray : other, withOptions : options, usingEquivalenceTest : block)
    }
    unsafe fn differenceFromArray_withOptions_(
        &self,
        other: NSArray,
        options: NSOrderedCollectionDifferenceCalculationOptions,
    ) -> NSOrderedCollectionDifference
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, differenceFromArray : other, withOptions : options)
    }
    unsafe fn differenceFromArray_(&self, other: NSArray) -> NSOrderedCollectionDifference
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, differenceFromArray : other)
    }
    unsafe fn arrayByApplyingDifference_(
        &self,
        difference: NSOrderedCollectionDifference,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, arrayByApplyingDifference : difference)
    }
}
impl<ObjectType: 'static> NSArray_NSDeprecated<ObjectType> for NSArray {}
pub trait NSArray_NSDeprecated<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn getObjects_(&self, objects: *mut id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getObjects : objects)
    }
    unsafe fn initWithContentsOfFile_(&self, path: NSString) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfFile : path)
    }
    unsafe fn initWithContentsOfURL_(&self, url: NSURL) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfURL : url)
    }
    unsafe fn writeToFile_atomically_(&self, path: NSString, useAuxiliaryFile: BOOL) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeToFile : path, atomically : useAuxiliaryFile)
    }
    unsafe fn writeToURL_atomically_(&self, url: NSURL, atomically: BOOL) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeToURL : url, atomically : atomically)
    }
    unsafe fn arrayWithContentsOfFile_(path: NSString) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSArray").unwrap(), arrayWithContentsOfFile : path)
    }
    unsafe fn arrayWithContentsOfURL_(url: NSURL) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSArray").unwrap(), arrayWithContentsOfURL : url)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMutableArray(pub id);
impl std::ops::Deref for NSMutableArray {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMutableArray {}
impl NSMutableArray {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableArray").unwrap(), alloc) })
    }
}
impl<ObjectType: 'static> INSArray<ObjectType> for NSMutableArray {}
impl PNSCopying for NSMutableArray {}
impl PNSMutableCopying for NSMutableArray {}
impl PNSSecureCoding for NSMutableArray {}
impl PNSFastEnumeration for NSMutableArray {}
impl INSObject for NSMutableArray {}
impl PNSObject for NSMutableArray {}
impl std::convert::TryFrom<NSObject> for NSMutableArray {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSMutableArray, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMutableArray").unwrap()) };
        if is_kind_of {
            Ok(NSMutableArray(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSMutableArray")
        }
    }
}
impl<ObjectType: 'static> INSMutableArray<ObjectType> for NSMutableArray {}
pub trait INSMutableArray<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn addObject_(&self, anObject: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addObject : anObject)
    }
    unsafe fn insertObject_atIndex_(&self, anObject: id, index: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, insertObject : anObject, atIndex : index)
    }
    unsafe fn removeLastObject(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, removeLastObject)
    }
    unsafe fn removeObjectAtIndex_(&self, index: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObjectAtIndex : index)
    }
    unsafe fn replaceObjectAtIndex_withObject_(&self, index: NSUInteger, anObject: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replaceObjectAtIndex : index, withObject : anObject)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithCapacity_(&self, numItems: NSUInteger) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCapacity : numItems)
    }
    unsafe fn initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
}
impl<ObjectType: 'static> NSMutableArray_NSExtendedMutableArray<ObjectType> for NSMutableArray {}
pub trait NSMutableArray_NSExtendedMutableArray<ObjectType: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn addObjectsFromArray_(&self, otherArray: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addObjectsFromArray : otherArray)
    }
    unsafe fn exchangeObjectAtIndex_withObjectAtIndex_(&self, idx1: NSUInteger, idx2: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, exchangeObjectAtIndex : idx1, withObjectAtIndex : idx2)
    }
    unsafe fn removeAllObjects(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, removeAllObjects)
    }
    unsafe fn removeObject_inRange_(&self, anObject: id, range: NSRange)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObject : anObject, inRange : range)
    }
    unsafe fn removeObject_(&self, anObject: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObject : anObject)
    }
    unsafe fn removeObjectIdenticalTo_inRange_(&self, anObject: id, range: NSRange)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObjectIdenticalTo : anObject, inRange : range)
    }
    unsafe fn removeObjectIdenticalTo_(&self, anObject: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObjectIdenticalTo : anObject)
    }
    unsafe fn removeObjectsFromIndices_numIndices_(&self, indices: *mut NSUInteger, cnt: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObjectsFromIndices : indices, numIndices : cnt)
    }
    unsafe fn removeObjectsInArray_(&self, otherArray: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObjectsInArray : otherArray)
    }
    unsafe fn removeObjectsInRange_(&self, range: NSRange)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObjectsInRange : range)
    }
    unsafe fn replaceObjectsInRange_withObjectsFromArray_range_(
        &self,
        range: NSRange,
        otherArray: NSArray,
        otherRange: NSRange,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replaceObjectsInRange : range, withObjectsFromArray : otherArray, range : otherRange)
    }
    unsafe fn replaceObjectsInRange_withObjectsFromArray_(
        &self,
        range: NSRange,
        otherArray: NSArray,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replaceObjectsInRange : range, withObjectsFromArray : otherArray)
    }
    unsafe fn setArray_(&self, otherArray: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArray : otherArray)
    }
    unsafe fn sortUsingFunction_context_(
        &self,
        compare: ::std::option::Option<
            unsafe extern "C" fn(
                arg1: id,
                arg2: id,
                arg3: *mut ::std::os::raw::c_void,
            ) -> NSInteger,
        >,
        context: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sortUsingFunction : compare, context : context)
    }
    unsafe fn sortUsingSelector_(&self, comparator: objc2::runtime::Sel)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sortUsingSelector : comparator)
    }
    unsafe fn insertObjects_atIndexes_(&self, objects: NSArray, indexes: NSIndexSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, insertObjects : objects, atIndexes : indexes)
    }
    unsafe fn removeObjectsAtIndexes_(&self, indexes: NSIndexSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObjectsAtIndexes : indexes)
    }
    unsafe fn replaceObjectsAtIndexes_withObjects_(&self, indexes: NSIndexSet, objects: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replaceObjectsAtIndexes : indexes, withObjects : objects)
    }
    unsafe fn setObject_atIndexedSubscript_(&self, obj: id, idx: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setObject : obj, atIndexedSubscript : idx)
    }
    unsafe fn sortUsingComparator_(&self, cmptr: NSComparator)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sortUsingComparator : cmptr)
    }
    unsafe fn sortWithOptions_usingComparator_(&self, opts: NSSortOptions, cmptr: NSComparator)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sortWithOptions : opts, usingComparator : cmptr)
    }
}
impl<ObjectType: 'static> NSMutableArray_NSMutableArrayCreation<ObjectType> for NSMutableArray {}
pub trait NSMutableArray_NSMutableArrayCreation<ObjectType: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn initWithContentsOfFile_(&self, path: NSString) -> NSMutableArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfFile : path)
    }
    unsafe fn initWithContentsOfURL_(&self, url: NSURL) -> NSMutableArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfURL : url)
    }
    unsafe fn arrayWithCapacity_(numItems: NSUInteger) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableArray").unwrap(), arrayWithCapacity : numItems)
    }
    unsafe fn arrayWithContentsOfFile_(path: NSString) -> NSMutableArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableArray").unwrap(), arrayWithContentsOfFile : path)
    }
    unsafe fn arrayWithContentsOfURL_(url: NSURL) -> NSMutableArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableArray").unwrap(), arrayWithContentsOfURL : url)
    }
}
impl<ObjectType: 'static> NSMutableArray_NSMutableArrayDiffing<ObjectType> for NSMutableArray {}
pub trait NSMutableArray_NSMutableArrayDiffing<ObjectType: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn applyDifference_(&self, difference: NSOrderedCollectionDifference)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, applyDifference : difference)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSAutoreleasePool(pub id);
impl std::ops::Deref for NSAutoreleasePool {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSAutoreleasePool {}
impl NSAutoreleasePool {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSAutoreleasePool").unwrap(), alloc) })
    }
}
impl INSObject for NSAutoreleasePool {}
impl PNSObject for NSAutoreleasePool {}
impl std::convert::TryFrom<NSObject> for NSAutoreleasePool {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSAutoreleasePool, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSAutoreleasePool").unwrap()) };
        if is_kind_of {
            Ok(NSAutoreleasePool(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSAutoreleasePool")
        }
    }
}
impl INSAutoreleasePool for NSAutoreleasePool {}
pub trait INSAutoreleasePool: Sized + std::ops::Deref {
    unsafe fn addObject_(&self, anObject: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addObject : anObject)
    }
    unsafe fn drain(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, drain)
    }
    unsafe fn class_addObject_(anObject: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAutoreleasePool").unwrap(), addObject : anObject)
    }
}
pub type unichar = ::std::os::raw::c_ushort;
pub type NSItemProviderRepresentationVisibility = NSInteger;
pub type NSItemProviderFileOptions = NSInteger;
pub trait PNSItemProviderWriting: Sized + std::ops::Deref {
    unsafe fn itemProviderVisibilityForRepresentationWithTypeIdentifier_(
        &self,
        typeIdentifier: NSString,
    ) -> NSItemProviderRepresentationVisibility
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, itemProviderVisibilityForRepresentationWithTypeIdentifier : typeIdentifier)
    }
    unsafe fn loadDataWithTypeIdentifier_forItemProviderCompletionHandler_(
        &self,
        typeIdentifier: NSString,
        completionHandler: *mut ::std::os::raw::c_void,
    ) -> NSProgress
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, loadDataWithTypeIdentifier : typeIdentifier, forItemProviderCompletionHandler : completionHandler)
    }
    unsafe fn writableTypeIdentifiersForItemProvider(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, writableTypeIdentifiersForItemProvider)
    }
    unsafe fn class_itemProviderVisibilityForRepresentationWithTypeIdentifier_(
        typeIdentifier: NSString,
    ) -> NSItemProviderRepresentationVisibility
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSItemProviderWriting").unwrap(), itemProviderVisibilityForRepresentationWithTypeIdentifier : typeIdentifier)
    }
    unsafe fn class_writableTypeIdentifiersForItemProvider() -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSItemProviderWriting").unwrap(), writableTypeIdentifiersForItemProvider)
    }
}
pub trait PNSItemProviderReading: Sized + std::ops::Deref {
    unsafe fn objectWithItemProviderData_typeIdentifier_error_(
        data: NSData,
        typeIdentifier: NSString,
        outError: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSItemProviderReading").unwrap(), objectWithItemProviderData : data, typeIdentifier : typeIdentifier, error : outError)
    }
    unsafe fn readableTypeIdentifiersForItemProvider() -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSItemProviderReading").unwrap(), readableTypeIdentifiersForItemProvider)
    }
}
pub type NSItemProviderCompletionHandler = *mut ::std::os::raw::c_void;
pub type NSItemProviderLoadHandler = *mut ::std::os::raw::c_void;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSItemProvider(pub id);
impl std::ops::Deref for NSItemProvider {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSItemProvider {}
impl NSItemProvider {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSItemProvider").unwrap(), alloc) })
    }
}
impl PNSCopying for NSItemProvider {}
impl INSObject for NSItemProvider {}
impl PNSObject for NSItemProvider {}
impl std::convert::TryFrom<NSObject> for NSItemProvider {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSItemProvider, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSItemProvider").unwrap()) };
        if is_kind_of {
            Ok(NSItemProvider(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSItemProvider")
        }
    }
}
impl INSItemProvider for NSItemProvider {}
pub trait INSItemProvider: 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 registerDataRepresentationForTypeIdentifier_visibility_loadHandler_(
        &self,
        typeIdentifier: NSString,
        visibility: NSItemProviderRepresentationVisibility,
        loadHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, registerDataRepresentationForTypeIdentifier : typeIdentifier, visibility : visibility, loadHandler : loadHandler)
    }
    unsafe fn registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler_(
        &self,
        typeIdentifier: NSString,
        fileOptions: NSItemProviderFileOptions,
        visibility: NSItemProviderRepresentationVisibility,
        loadHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, registerFileRepresentationForTypeIdentifier : typeIdentifier, fileOptions : fileOptions, visibility : visibility, loadHandler : loadHandler)
    }
    unsafe fn registeredTypeIdentifiersWithFileOptions_(
        &self,
        fileOptions: NSItemProviderFileOptions,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, registeredTypeIdentifiersWithFileOptions : fileOptions)
    }
    unsafe fn hasItemConformingToTypeIdentifier_(&self, typeIdentifier: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, hasItemConformingToTypeIdentifier : typeIdentifier)
    }
    unsafe fn hasRepresentationConformingToTypeIdentifier_fileOptions_(
        &self,
        typeIdentifier: NSString,
        fileOptions: NSItemProviderFileOptions,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, hasRepresentationConformingToTypeIdentifier : typeIdentifier, fileOptions : fileOptions)
    }
    unsafe fn loadDataRepresentationForTypeIdentifier_completionHandler_(
        &self,
        typeIdentifier: NSString,
        completionHandler: *mut ::std::os::raw::c_void,
    ) -> NSProgress
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, loadDataRepresentationForTypeIdentifier : typeIdentifier, completionHandler : completionHandler)
    }
    unsafe fn loadFileRepresentationForTypeIdentifier_completionHandler_(
        &self,
        typeIdentifier: NSString,
        completionHandler: *mut ::std::os::raw::c_void,
    ) -> NSProgress
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, loadFileRepresentationForTypeIdentifier : typeIdentifier, completionHandler : completionHandler)
    }
    unsafe fn loadInPlaceFileRepresentationForTypeIdentifier_completionHandler_(
        &self,
        typeIdentifier: NSString,
        completionHandler: *mut ::std::os::raw::c_void,
    ) -> NSProgress
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, loadInPlaceFileRepresentationForTypeIdentifier : typeIdentifier, completionHandler : completionHandler)
    }
    unsafe fn initWithObject_(&self, object: *mut u64) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithObject : object)
    }
    unsafe fn registerObject_visibility_(
        &self,
        object: *mut u64,
        visibility: NSItemProviderRepresentationVisibility,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, registerObject : object, visibility : visibility)
    }
    unsafe fn registerObjectOfClass_visibility_loadHandler_(
        &self,
        aClass: *mut u64,
        visibility: NSItemProviderRepresentationVisibility,
        loadHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, registerObjectOfClass : aClass, visibility : visibility, loadHandler : loadHandler)
    }
    unsafe fn canLoadObjectOfClass_(&self, aClass: *mut u64) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, canLoadObjectOfClass : aClass)
    }
    unsafe fn loadObjectOfClass_completionHandler_(
        &self,
        aClass: *mut u64,
        completionHandler: *mut ::std::os::raw::c_void,
    ) -> NSProgress
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, loadObjectOfClass : aClass, completionHandler : completionHandler)
    }
    unsafe fn initWithItem_typeIdentifier_(
        &self,
        item: *mut u64,
        typeIdentifier: NSString,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithItem : item, typeIdentifier : typeIdentifier)
    }
    unsafe fn initWithContentsOfURL_(&self, fileURL: NSURL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfURL : fileURL)
    }
    unsafe fn registerItemForTypeIdentifier_loadHandler_(
        &self,
        typeIdentifier: NSString,
        loadHandler: NSItemProviderLoadHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, registerItemForTypeIdentifier : typeIdentifier, loadHandler : loadHandler)
    }
    unsafe fn loadItemForTypeIdentifier_options_completionHandler_(
        &self,
        typeIdentifier: NSString,
        options: NSDictionary,
        completionHandler: NSItemProviderCompletionHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, loadItemForTypeIdentifier : typeIdentifier, options : options, completionHandler : completionHandler)
    }
    unsafe fn registeredTypeIdentifiers(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, registeredTypeIdentifiers)
    }
    unsafe fn suggestedName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, suggestedName)
    }
    unsafe fn setSuggestedName_(&self, suggestedName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSuggestedName : suggestedName)
    }
}
impl NSItemProvider_NSPreviewSupport for NSItemProvider {}
pub trait NSItemProvider_NSPreviewSupport: Sized + std::ops::Deref {
    unsafe fn loadPreviewImageWithOptions_completionHandler_(
        &self,
        options: NSDictionary,
        completionHandler: NSItemProviderCompletionHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, loadPreviewImageWithOptions : options, completionHandler : completionHandler)
    }
    unsafe fn previewImageHandler(&self) -> NSItemProviderLoadHandler
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previewImageHandler)
    }
    unsafe fn setPreviewImageHandler_(&self, previewImageHandler: NSItemProviderLoadHandler)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPreviewImageHandler : previewImageHandler)
    }
}
pub type NSItemProviderErrorCode = NSInteger;
pub type NSStringCompareOptions = NSUInteger;
pub type NSStringEncoding = NSUInteger;
pub type NSStringEncodingConversionOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSString(pub id);
impl std::ops::Deref for NSString {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSString {}
impl NSString {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSString").unwrap(), alloc) })
    }
}
impl PNSCopying for NSString {}
impl PNSMutableCopying for NSString {}
impl PNSSecureCoding for NSString {}
impl INSObject for NSString {}
impl PNSObject for NSString {}
impl std::convert::TryFrom<NSObject> for NSString {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSString, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSString").unwrap()) };
        if is_kind_of {
            Ok(NSString(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSString")
        }
    }
}
impl INSString for NSString {}
pub trait INSString: Sized + std::ops::Deref {
    unsafe fn characterAtIndex_(&self, index: NSUInteger) -> unichar
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, characterAtIndex : index)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
    unsafe fn length(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, length)
    }
}
impl NSString_NSStringExtensionMethods for NSString {}
pub trait NSString_NSStringExtensionMethods: Sized + std::ops::Deref {
    unsafe fn substringFromIndex_(&self, from: NSUInteger) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, substringFromIndex : from)
    }
    unsafe fn substringToIndex_(&self, to: NSUInteger) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, substringToIndex : to)
    }
    unsafe fn substringWithRange_(&self, range: NSRange) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, substringWithRange : range)
    }
    unsafe fn getCharacters_range_(&self, buffer: *mut unichar, range: NSRange)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getCharacters : buffer, range : range)
    }
    unsafe fn compare_(&self, string: NSString) -> NSComparisonResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, compare : string)
    }
    unsafe fn compare_options_(
        &self,
        string: NSString,
        mask: NSStringCompareOptions,
    ) -> NSComparisonResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, compare : string, options : mask)
    }
    unsafe fn compare_options_range_(
        &self,
        string: NSString,
        mask: NSStringCompareOptions,
        rangeOfReceiverToCompare: NSRange,
    ) -> NSComparisonResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, compare : string, options : mask, range : rangeOfReceiverToCompare)
    }
    unsafe fn compare_options_range_locale_(
        &self,
        string: NSString,
        mask: NSStringCompareOptions,
        rangeOfReceiverToCompare: NSRange,
        locale: id,
    ) -> NSComparisonResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, compare : string, options : mask, range : rangeOfReceiverToCompare, locale : locale)
    }
    unsafe fn caseInsensitiveCompare_(&self, string: NSString) -> NSComparisonResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, caseInsensitiveCompare : string)
    }
    unsafe fn localizedCompare_(&self, string: NSString) -> NSComparisonResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, localizedCompare : string)
    }
    unsafe fn localizedCaseInsensitiveCompare_(&self, string: NSString) -> NSComparisonResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, localizedCaseInsensitiveCompare : string)
    }
    unsafe fn localizedStandardCompare_(&self, string: NSString) -> NSComparisonResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, localizedStandardCompare : string)
    }
    unsafe fn isEqualToString_(&self, aString: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isEqualToString : aString)
    }
    unsafe fn hasPrefix_(&self, str_: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, hasPrefix : str_)
    }
    unsafe fn hasSuffix_(&self, str_: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, hasSuffix : str_)
    }
    unsafe fn commonPrefixWithString_options_(
        &self,
        str_: NSString,
        mask: NSStringCompareOptions,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, commonPrefixWithString : str_, options : mask)
    }
    unsafe fn containsString_(&self, str_: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, containsString : str_)
    }
    unsafe fn localizedCaseInsensitiveContainsString_(&self, str_: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, localizedCaseInsensitiveContainsString : str_)
    }
    unsafe fn localizedStandardContainsString_(&self, str_: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, localizedStandardContainsString : str_)
    }
    unsafe fn localizedStandardRangeOfString_(&self, str_: NSString) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, localizedStandardRangeOfString : str_)
    }
    unsafe fn rangeOfString_(&self, searchString: NSString) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rangeOfString : searchString)
    }
    unsafe fn rangeOfString_options_(
        &self,
        searchString: NSString,
        mask: NSStringCompareOptions,
    ) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rangeOfString : searchString, options : mask)
    }
    unsafe fn rangeOfString_options_range_(
        &self,
        searchString: NSString,
        mask: NSStringCompareOptions,
        rangeOfReceiverToSearch: NSRange,
    ) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rangeOfString : searchString, options : mask, range : rangeOfReceiverToSearch)
    }
    unsafe fn rangeOfString_options_range_locale_(
        &self,
        searchString: NSString,
        mask: NSStringCompareOptions,
        rangeOfReceiverToSearch: NSRange,
        locale: NSLocale,
    ) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rangeOfString : searchString, options : mask, range : rangeOfReceiverToSearch, locale : locale)
    }
    unsafe fn rangeOfCharacterFromSet_(&self, searchSet: NSCharacterSet) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rangeOfCharacterFromSet : searchSet)
    }
    unsafe fn rangeOfCharacterFromSet_options_(
        &self,
        searchSet: NSCharacterSet,
        mask: NSStringCompareOptions,
    ) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rangeOfCharacterFromSet : searchSet, options : mask)
    }
    unsafe fn rangeOfCharacterFromSet_options_range_(
        &self,
        searchSet: NSCharacterSet,
        mask: NSStringCompareOptions,
        rangeOfReceiverToSearch: NSRange,
    ) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rangeOfCharacterFromSet : searchSet, options : mask, range : rangeOfReceiverToSearch)
    }
    unsafe fn rangeOfComposedCharacterSequenceAtIndex_(&self, index: NSUInteger) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rangeOfComposedCharacterSequenceAtIndex : index)
    }
    unsafe fn rangeOfComposedCharacterSequencesForRange_(&self, range: NSRange) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rangeOfComposedCharacterSequencesForRange : range)
    }
    unsafe fn stringByAppendingString_(&self, aString: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringByAppendingString : aString)
    }
    unsafe fn stringByAppendingFormat_(&self, format: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringByAppendingFormat : format)
    }
    unsafe fn uppercaseStringWithLocale_(&self, locale: NSLocale) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, uppercaseStringWithLocale : locale)
    }
    unsafe fn lowercaseStringWithLocale_(&self, locale: NSLocale) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, lowercaseStringWithLocale : locale)
    }
    unsafe fn capitalizedStringWithLocale_(&self, locale: NSLocale) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, capitalizedStringWithLocale : locale)
    }
    unsafe fn getLineStart_end_contentsEnd_forRange_(
        &self,
        startPtr: *mut NSUInteger,
        lineEndPtr: *mut NSUInteger,
        contentsEndPtr: *mut NSUInteger,
        range: NSRange,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getLineStart : startPtr, end : lineEndPtr, contentsEnd : contentsEndPtr, forRange : range)
    }
    unsafe fn lineRangeForRange_(&self, range: NSRange) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, lineRangeForRange : range)
    }
    unsafe fn getParagraphStart_end_contentsEnd_forRange_(
        &self,
        startPtr: *mut NSUInteger,
        parEndPtr: *mut NSUInteger,
        contentsEndPtr: *mut NSUInteger,
        range: NSRange,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getParagraphStart : startPtr, end : parEndPtr, contentsEnd : contentsEndPtr, forRange : range)
    }
    unsafe fn paragraphRangeForRange_(&self, range: NSRange) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, paragraphRangeForRange : range)
    }
    unsafe fn enumerateSubstringsInRange_options_usingBlock_(
        &self,
        range: NSRange,
        opts: NSStringEnumerationOptions,
        block: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateSubstringsInRange : range, options : opts, usingBlock : block)
    }
    unsafe fn enumerateLinesUsingBlock_(&self, block: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateLinesUsingBlock : block)
    }
    unsafe fn dataUsingEncoding_allowLossyConversion_(
        &self,
        encoding: NSStringEncoding,
        lossy: BOOL,
    ) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dataUsingEncoding : encoding, allowLossyConversion : lossy)
    }
    unsafe fn dataUsingEncoding_(&self, encoding: NSStringEncoding) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dataUsingEncoding : encoding)
    }
    unsafe fn canBeConvertedToEncoding_(&self, encoding: NSStringEncoding) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, canBeConvertedToEncoding : encoding)
    }
    unsafe fn cStringUsingEncoding_(
        &self,
        encoding: NSStringEncoding,
    ) -> *const ::std::os::raw::c_char
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cStringUsingEncoding : encoding)
    }
    unsafe fn getCString_maxLength_encoding_(
        &self,
        buffer: *mut ::std::os::raw::c_char,
        maxBufferCount: NSUInteger,
        encoding: NSStringEncoding,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getCString : buffer, maxLength : maxBufferCount, encoding : encoding)
    }
    unsafe fn getBytes_maxLength_usedLength_encoding_options_range_remainingRange_(
        &self,
        buffer: *mut ::std::os::raw::c_void,
        maxBufferCount: NSUInteger,
        usedBufferCount: *mut NSUInteger,
        encoding: NSStringEncoding,
        options: NSStringEncodingConversionOptions,
        range: NSRange,
        leftover: NSRangePointer,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getBytes : buffer, maxLength : maxBufferCount, usedLength : usedBufferCount, encoding : encoding, options : options, range : range, remainingRange : leftover)
    }
    unsafe fn maximumLengthOfBytesUsingEncoding_(&self, enc: NSStringEncoding) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, maximumLengthOfBytesUsingEncoding : enc)
    }
    unsafe fn lengthOfBytesUsingEncoding_(&self, enc: NSStringEncoding) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, lengthOfBytesUsingEncoding : enc)
    }
    unsafe fn componentsSeparatedByString_(&self, separator: NSString) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, componentsSeparatedByString : separator)
    }
    unsafe fn componentsSeparatedByCharactersInSet_(&self, separator: NSCharacterSet) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, componentsSeparatedByCharactersInSet : separator)
    }
    unsafe fn stringByTrimmingCharactersInSet_(&self, set: NSCharacterSet) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringByTrimmingCharactersInSet : set)
    }
    unsafe fn stringByPaddingToLength_withString_startingAtIndex_(
        &self,
        newLength: NSUInteger,
        padString: NSString,
        padIndex: NSUInteger,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringByPaddingToLength : newLength, withString : padString, startingAtIndex : padIndex)
    }
    unsafe fn stringByFoldingWithOptions_locale_(
        &self,
        options: NSStringCompareOptions,
        locale: NSLocale,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringByFoldingWithOptions : options, locale : locale)
    }
    unsafe fn stringByReplacingOccurrencesOfString_withString_options_range_(
        &self,
        target: NSString,
        replacement: NSString,
        options: NSStringCompareOptions,
        searchRange: NSRange,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringByReplacingOccurrencesOfString : target, withString : replacement, options : options, range : searchRange)
    }
    unsafe fn stringByReplacingOccurrencesOfString_withString_(
        &self,
        target: NSString,
        replacement: NSString,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringByReplacingOccurrencesOfString : target, withString : replacement)
    }
    unsafe fn stringByReplacingCharactersInRange_withString_(
        &self,
        range: NSRange,
        replacement: NSString,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringByReplacingCharactersInRange : range, withString : replacement)
    }
    unsafe fn stringByApplyingTransform_reverse_(
        &self,
        transform: NSString,
        reverse: BOOL,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringByApplyingTransform : transform, reverse : reverse)
    }
    unsafe fn writeToURL_atomically_encoding_error_(
        &self,
        url: NSURL,
        useAuxiliaryFile: BOOL,
        enc: NSStringEncoding,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeToURL : url, atomically : useAuxiliaryFile, encoding : enc, error : error)
    }
    unsafe fn writeToFile_atomically_encoding_error_(
        &self,
        path: NSString,
        useAuxiliaryFile: BOOL,
        enc: NSStringEncoding,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeToFile : path, atomically : useAuxiliaryFile, encoding : enc, error : error)
    }
    unsafe fn initWithCharactersNoCopy_length_freeWhenDone_(
        &self,
        characters: *mut unichar,
        length: NSUInteger,
        freeBuffer: BOOL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCharactersNoCopy : characters, length : length, freeWhenDone : freeBuffer)
    }
    unsafe fn initWithCharactersNoCopy_length_deallocator_(
        &self,
        chars: *mut unichar,
        len: NSUInteger,
        deallocator: *mut ::std::os::raw::c_void,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCharactersNoCopy : chars, length : len, deallocator : deallocator)
    }
    unsafe fn initWithCharacters_length_(
        &self,
        characters: *const unichar,
        length: NSUInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCharacters : characters, length : length)
    }
    unsafe fn initWithUTF8String_(
        &self,
        nullTerminatedCString: *const ::std::os::raw::c_char,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithUTF8String : nullTerminatedCString)
    }
    unsafe fn initWithString_(&self, aString: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithString : aString)
    }
    unsafe fn initWithFormat_(&self, format: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithFormat : format)
    }
    unsafe fn initWithFormat_arguments_(&self, format: NSString, argList: va_list) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithFormat : format, arguments : argList)
    }
    unsafe fn initWithFormat_locale_(&self, format: NSString, locale: id) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithFormat : format, locale : locale)
    }
    unsafe fn initWithFormat_locale_arguments_(
        &self,
        format: NSString,
        locale: id,
        argList: va_list,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithFormat : format, locale : locale, arguments : argList)
    }
    unsafe fn initWithValidatedFormat_validFormatSpecifiers_error_(
        &self,
        format: NSString,
        validFormatSpecifiers: NSString,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithValidatedFormat : format, validFormatSpecifiers : validFormatSpecifiers, error : error)
    }
    unsafe fn initWithValidatedFormat_validFormatSpecifiers_locale_error_(
        &self,
        format: NSString,
        validFormatSpecifiers: NSString,
        locale: id,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithValidatedFormat : format, validFormatSpecifiers : validFormatSpecifiers, locale : locale, error : error)
    }
    unsafe fn initWithValidatedFormat_validFormatSpecifiers_arguments_error_(
        &self,
        format: NSString,
        validFormatSpecifiers: NSString,
        argList: va_list,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithValidatedFormat : format, validFormatSpecifiers : validFormatSpecifiers, arguments : argList, error : error)
    }
    unsafe fn initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_(
        &self,
        format: NSString,
        validFormatSpecifiers: NSString,
        locale: id,
        argList: va_list,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithValidatedFormat : format, validFormatSpecifiers : validFormatSpecifiers, locale : locale, arguments : argList, error : error)
    }
    unsafe fn initWithData_encoding_(
        &self,
        data: NSData,
        encoding: NSStringEncoding,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithData : data, encoding : encoding)
    }
    unsafe fn initWithBytes_length_encoding_(
        &self,
        bytes: *const ::std::os::raw::c_void,
        len: NSUInteger,
        encoding: NSStringEncoding,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithBytes : bytes, length : len, encoding : encoding)
    }
    unsafe fn initWithBytesNoCopy_length_encoding_freeWhenDone_(
        &self,
        bytes: *mut ::std::os::raw::c_void,
        len: NSUInteger,
        encoding: NSStringEncoding,
        freeBuffer: BOOL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithBytesNoCopy : bytes, length : len, encoding : encoding, freeWhenDone : freeBuffer)
    }
    unsafe fn initWithBytesNoCopy_length_encoding_deallocator_(
        &self,
        bytes: *mut ::std::os::raw::c_void,
        len: NSUInteger,
        encoding: NSStringEncoding,
        deallocator: *mut ::std::os::raw::c_void,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithBytesNoCopy : bytes, length : len, encoding : encoding, deallocator : deallocator)
    }
    unsafe fn initWithCString_encoding_(
        &self,
        nullTerminatedCString: *const ::std::os::raw::c_char,
        encoding: NSStringEncoding,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCString : nullTerminatedCString, encoding : encoding)
    }
    unsafe fn initWithContentsOfURL_encoding_error_(
        &self,
        url: NSURL,
        enc: NSStringEncoding,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfURL : url, encoding : enc, error : error)
    }
    unsafe fn initWithContentsOfFile_encoding_error_(
        &self,
        path: NSString,
        enc: NSStringEncoding,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfFile : path, encoding : enc, error : error)
    }
    unsafe fn initWithContentsOfURL_usedEncoding_error_(
        &self,
        url: NSURL,
        enc: *mut NSStringEncoding,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfURL : url, usedEncoding : enc, error : error)
    }
    unsafe fn initWithContentsOfFile_usedEncoding_error_(
        &self,
        path: NSString,
        enc: *mut NSStringEncoding,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfFile : path, usedEncoding : enc, error : error)
    }
    unsafe fn doubleValue(&self) -> f64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, doubleValue)
    }
    unsafe fn floatValue(&self) -> f32
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, floatValue)
    }
    unsafe fn intValue(&self) -> ::std::os::raw::c_int
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, intValue)
    }
    unsafe fn integerValue(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, integerValue)
    }
    unsafe fn longLongValue(&self) -> ::std::os::raw::c_longlong
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, longLongValue)
    }
    unsafe fn boolValue(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, boolValue)
    }
    unsafe fn uppercaseString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, uppercaseString)
    }
    unsafe fn lowercaseString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lowercaseString)
    }
    unsafe fn capitalizedString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, capitalizedString)
    }
    unsafe fn localizedUppercaseString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localizedUppercaseString)
    }
    unsafe fn localizedLowercaseString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localizedLowercaseString)
    }
    unsafe fn localizedCapitalizedString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localizedCapitalizedString)
    }
    unsafe fn UTF8String(&self) -> *const ::std::os::raw::c_char
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, UTF8String)
    }
    unsafe fn fastestEncoding(&self) -> NSStringEncoding
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fastestEncoding)
    }
    unsafe fn smallestEncoding(&self) -> NSStringEncoding
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, smallestEncoding)
    }
    unsafe fn decomposedStringWithCanonicalMapping(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, decomposedStringWithCanonicalMapping)
    }
    unsafe fn precomposedStringWithCanonicalMapping(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, precomposedStringWithCanonicalMapping)
    }
    unsafe fn decomposedStringWithCompatibilityMapping(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, decomposedStringWithCompatibilityMapping)
    }
    unsafe fn precomposedStringWithCompatibilityMapping(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, precomposedStringWithCompatibilityMapping)
    }
    unsafe fn description(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, description)
    }
    unsafe fn hash(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hash)
    }
    unsafe fn localizedNameOfStringEncoding_(encoding: NSStringEncoding) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSString").unwrap(), localizedNameOfStringEncoding : encoding)
    }
    unsafe fn string() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSString").unwrap(), string)
    }
    unsafe fn stringWithString_(string: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSString").unwrap(), stringWithString : string)
    }
    unsafe fn stringWithCharacters_length_(
        characters: *const unichar,
        length: NSUInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSString").unwrap(), stringWithCharacters : characters, length : length)
    }
    unsafe fn stringWithUTF8String_(
        nullTerminatedCString: *const ::std::os::raw::c_char,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSString").unwrap(), stringWithUTF8String : nullTerminatedCString)
    }
    unsafe fn stringWithFormat_(format: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSString").unwrap(), stringWithFormat : format)
    }
    unsafe fn localizedStringWithFormat_(format: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSString").unwrap(), localizedStringWithFormat : format)
    }
    unsafe fn stringWithValidatedFormat_validFormatSpecifiers_error_(
        format: NSString,
        validFormatSpecifiers: NSString,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSString").unwrap(), stringWithValidatedFormat : format, validFormatSpecifiers : validFormatSpecifiers, error : error)
    }
    unsafe fn localizedStringWithValidatedFormat_validFormatSpecifiers_error_(
        format: NSString,
        validFormatSpecifiers: NSString,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSString").unwrap(), localizedStringWithValidatedFormat : format, validFormatSpecifiers : validFormatSpecifiers, error : error)
    }
    unsafe fn stringWithCString_encoding_(
        c_string: *const ::std::os::raw::c_char,
        enc: NSStringEncoding,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSString").unwrap(), stringWithCString : c_string, encoding : enc)
    }
    unsafe fn stringWithContentsOfURL_encoding_error_(
        url: NSURL,
        enc: NSStringEncoding,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSString").unwrap(), stringWithContentsOfURL : url, encoding : enc, error : error)
    }
    unsafe fn stringWithContentsOfFile_encoding_error_(
        path: NSString,
        enc: NSStringEncoding,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSString").unwrap(), stringWithContentsOfFile : path, encoding : enc, error : error)
    }
    unsafe fn stringWithContentsOfURL_usedEncoding_error_(
        url: NSURL,
        enc: *mut NSStringEncoding,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSString").unwrap(), stringWithContentsOfURL : url, usedEncoding : enc, error : error)
    }
    unsafe fn stringWithContentsOfFile_usedEncoding_error_(
        path: NSString,
        enc: *mut NSStringEncoding,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSString").unwrap(), stringWithContentsOfFile : path, usedEncoding : enc, error : error)
    }
    unsafe fn availableStringEncodings() -> *const NSStringEncoding
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSString").unwrap(), availableStringEncodings)
    }
    unsafe fn defaultCStringEncoding() -> NSStringEncoding
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSString").unwrap(), defaultCStringEncoding)
    }
}
pub type NSStringEnumerationOptions = NSUInteger;
pub type NSStringEncodingDetectionOptionsKey = NSString;
impl NSString_NSStringEncodingDetection for NSString {}
pub trait NSString_NSStringEncodingDetection: Sized + std::ops::Deref {
    unsafe fn stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_(
        data: NSData,
        opts: NSDictionary,
        string: *mut NSString,
        usedLossyConversion: *mut BOOL,
    ) -> NSStringEncoding
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSString").unwrap(), stringEncodingForData : data, encodingOptions : opts, convertedString : string, usedLossyConversion : usedLossyConversion)
    }
}
impl NSString_NSItemProvider for NSString {}
pub trait NSString_NSItemProvider: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMutableString(pub id);
impl std::ops::Deref for NSMutableString {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMutableString {}
impl NSMutableString {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableString").unwrap(), alloc) })
    }
}
impl INSString for NSMutableString {}
impl PNSCopying for NSMutableString {}
impl PNSMutableCopying for NSMutableString {}
impl PNSSecureCoding for NSMutableString {}
impl From<NSMutableString> for NSString {
    fn from(child: NSMutableString) -> NSString {
        NSString(child.0)
    }
}
impl std::convert::TryFrom<NSString> for NSMutableString {
    type Error = &'static str;
    fn try_from(parent: NSString) -> Result<NSMutableString, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMutableString").unwrap()) };
        if is_kind_of {
            Ok(NSMutableString(parent.0))
        } else {
            Err("This NSString cannot be downcasted to NSMutableString")
        }
    }
}
impl INSObject for NSMutableString {}
impl PNSObject for NSMutableString {}
impl INSMutableString for NSMutableString {}
pub trait INSMutableString: Sized + std::ops::Deref {
    unsafe fn replaceCharactersInRange_withString_(&self, range: NSRange, aString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replaceCharactersInRange : range, withString : aString)
    }
}
impl NSMutableString_NSMutableStringExtensionMethods for NSMutableString {}
pub trait NSMutableString_NSMutableStringExtensionMethods: Sized + std::ops::Deref {
    unsafe fn insertString_atIndex_(&self, aString: NSString, loc: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, insertString : aString, atIndex : loc)
    }
    unsafe fn deleteCharactersInRange_(&self, range: NSRange)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deleteCharactersInRange : range)
    }
    unsafe fn appendString_(&self, aString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, appendString : aString)
    }
    unsafe fn appendFormat_(&self, format: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, appendFormat : format)
    }
    unsafe fn setString_(&self, aString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setString : aString)
    }
    unsafe fn replaceOccurrencesOfString_withString_options_range_(
        &self,
        target: NSString,
        replacement: NSString,
        options: NSStringCompareOptions,
        searchRange: NSRange,
    ) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replaceOccurrencesOfString : target, withString : replacement, options : options, range : searchRange)
    }
    unsafe fn applyTransform_reverse_range_updatedRange_(
        &self,
        transform: NSString,
        reverse: BOOL,
        range: NSRange,
        resultingRange: NSRangePointer,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, applyTransform : transform, reverse : reverse, range : range, updatedRange : resultingRange)
    }
    unsafe fn initWithCapacity_(&self, capacity: NSUInteger) -> NSMutableString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCapacity : capacity)
    }
    unsafe fn stringWithCapacity_(capacity: NSUInteger) -> NSMutableString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableString").unwrap(), stringWithCapacity : capacity)
    }
}
impl NSString_NSExtendedStringPropertyListParsing for NSString {}
pub trait NSString_NSExtendedStringPropertyListParsing: Sized + std::ops::Deref {
    unsafe fn propertyList(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, propertyList)
    }
    unsafe fn propertyListFromStringsFileFormat(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, propertyListFromStringsFileFormat)
    }
}
impl NSString_NSStringDeprecated for NSString {}
pub trait NSString_NSStringDeprecated: Sized + std::ops::Deref {
    unsafe fn cString(&self) -> *const ::std::os::raw::c_char
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cString)
    }
    unsafe fn lossyCString(&self) -> *const ::std::os::raw::c_char
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lossyCString)
    }
    unsafe fn cStringLength(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cStringLength)
    }
    unsafe fn getCString_(&self, bytes: *mut ::std::os::raw::c_char)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getCString : bytes)
    }
    unsafe fn getCString_maxLength_(
        &self,
        bytes: *mut ::std::os::raw::c_char,
        maxLength: NSUInteger,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getCString : bytes, maxLength : maxLength)
    }
    unsafe fn getCString_maxLength_range_remainingRange_(
        &self,
        bytes: *mut ::std::os::raw::c_char,
        maxLength: NSUInteger,
        aRange: NSRange,
        leftoverRange: NSRangePointer,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getCString : bytes, maxLength : maxLength, range : aRange, remainingRange : leftoverRange)
    }
    unsafe fn writeToFile_atomically_(&self, path: NSString, useAuxiliaryFile: BOOL) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeToFile : path, atomically : useAuxiliaryFile)
    }
    unsafe fn writeToURL_atomically_(&self, url: NSURL, atomically: BOOL) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeToURL : url, atomically : atomically)
    }
    unsafe fn initWithContentsOfFile_(&self, path: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfFile : path)
    }
    unsafe fn initWithContentsOfURL_(&self, url: NSURL) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfURL : url)
    }
    unsafe fn initWithCStringNoCopy_length_freeWhenDone_(
        &self,
        bytes: *mut ::std::os::raw::c_char,
        length: NSUInteger,
        freeBuffer: BOOL,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCStringNoCopy : bytes, length : length, freeWhenDone : freeBuffer)
    }
    unsafe fn initWithCString_length_(
        &self,
        bytes: *const ::std::os::raw::c_char,
        length: NSUInteger,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCString : bytes, length : length)
    }
    unsafe fn initWithCString_(&self, bytes: *const ::std::os::raw::c_char) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCString : bytes)
    }
    unsafe fn getCharacters_(&self, buffer: *mut unichar)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getCharacters : buffer)
    }
    unsafe fn stringWithContentsOfFile_(path: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSString").unwrap(), stringWithContentsOfFile : path)
    }
    unsafe fn stringWithContentsOfURL_(url: NSURL) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSString").unwrap(), stringWithContentsOfURL : url)
    }
    unsafe fn stringWithCString_length_(
        bytes: *const ::std::os::raw::c_char,
        length: NSUInteger,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSString").unwrap(), stringWithCString : bytes, length : length)
    }
    unsafe fn stringWithCString_(bytes: *const ::std::os::raw::c_char) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSString").unwrap(), stringWithCString : bytes)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSSimpleCString(pub id);
impl std::ops::Deref for NSSimpleCString {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSSimpleCString {}
impl NSSimpleCString {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSSimpleCString").unwrap(), alloc) })
    }
}
impl INSString for NSSimpleCString {}
impl PNSCopying for NSSimpleCString {}
impl PNSMutableCopying for NSSimpleCString {}
impl PNSSecureCoding for NSSimpleCString {}
impl std::convert::TryFrom<NSString> for NSSimpleCString {
    type Error = &'static str;
    fn try_from(parent: NSString) -> Result<NSSimpleCString, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSSimpleCString").unwrap()) };
        if is_kind_of {
            Ok(NSSimpleCString(parent.0))
        } else {
            Err("This NSString cannot be downcasted to NSSimpleCString")
        }
    }
}
impl INSObject for NSSimpleCString {}
impl PNSObject for NSSimpleCString {}
impl INSSimpleCString for NSSimpleCString {}
pub trait INSSimpleCString: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSConstantString(pub id);
impl std::ops::Deref for NSConstantString {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSConstantString {}
impl NSConstantString {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSConstantString").unwrap(), alloc) })
    }
}
impl INSSimpleCString for NSConstantString {}
impl From<NSConstantString> for NSSimpleCString {
    fn from(child: NSConstantString) -> NSSimpleCString {
        NSSimpleCString(child.0)
    }
}
impl std::convert::TryFrom<NSSimpleCString> for NSConstantString {
    type Error = &'static str;
    fn try_from(parent: NSSimpleCString) -> Result<NSConstantString, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSConstantString").unwrap()) };
        if is_kind_of {
            Ok(NSConstantString(parent.0))
        } else {
            Err("This NSSimpleCString cannot be downcasted to NSConstantString")
        }
    }
}
impl INSString for NSConstantString {}
impl PNSCopying for NSConstantString {}
impl PNSMutableCopying for NSConstantString {}
impl PNSSecureCoding for NSConstantString {}
impl INSObject for NSConstantString {}
impl PNSObject for NSConstantString {}
impl INSConstantString for NSConstantString {}
pub trait INSConstantString: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSDictionary(pub id);
impl std::ops::Deref for NSDictionary {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSDictionary {}
impl NSDictionary {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSDictionary").unwrap(), alloc) })
    }
}
impl PNSCopying for NSDictionary {}
impl PNSMutableCopying for NSDictionary {}
impl PNSSecureCoding for NSDictionary {}
impl PNSFastEnumeration for NSDictionary {}
impl INSObject for NSDictionary {}
impl PNSObject for NSDictionary {}
impl std::convert::TryFrom<NSObject> for NSDictionary {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSDictionary, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSDictionary").unwrap()) };
        if is_kind_of {
            Ok(NSDictionary(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSDictionary")
        }
    }
}
impl<KeyType: 'static, ObjectType: 'static> INSDictionary<KeyType, ObjectType> for NSDictionary {}
pub trait INSDictionary<KeyType: 'static, ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn objectForKey_(&self, aKey: id) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectForKey : aKey)
    }
    unsafe fn keyEnumerator(&self) -> NSEnumerator
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, keyEnumerator)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithObjects_forKeys_count_(
        &self,
        objects: *const *mut u64,
        keys: *const *mut u64,
        cnt: NSUInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithObjects : objects, forKeys : keys, count : cnt)
    }
    unsafe fn initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
    unsafe fn count(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, count)
    }
}
impl<KeyType: 'static, ObjectType: 'static> NSDictionary_NSExtendedDictionary<KeyType, ObjectType>
    for NSDictionary
{
}
pub trait NSDictionary_NSExtendedDictionary<KeyType: 'static, ObjectType: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn allKeysForObject_(&self, anObject: id) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, allKeysForObject : anObject)
    }
    unsafe fn descriptionWithLocale_(&self, locale: id) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, descriptionWithLocale : locale)
    }
    unsafe fn descriptionWithLocale_indent_(&self, locale: id, level: NSUInteger) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, descriptionWithLocale : locale, indent : level)
    }
    unsafe fn isEqualToDictionary_(&self, otherDictionary: NSDictionary) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isEqualToDictionary : otherDictionary)
    }
    unsafe fn objectEnumerator(&self) -> NSEnumerator
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, objectEnumerator)
    }
    unsafe fn objectsForKeys_notFoundMarker_(&self, keys: NSArray, marker: id) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectsForKeys : keys, notFoundMarker : marker)
    }
    unsafe fn writeToURL_error_(&self, url: NSURL, error: *mut NSError) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeToURL : url, error : error)
    }
    unsafe fn keysSortedByValueUsingSelector_(&self, comparator: objc2::runtime::Sel) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keysSortedByValueUsingSelector : comparator)
    }
    unsafe fn getObjects_andKeys_count_(&self, objects: *mut id, keys: *mut id, count: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getObjects : objects, andKeys : keys, count : count)
    }
    unsafe fn objectForKeyedSubscript_(&self, key: id) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectForKeyedSubscript : key)
    }
    unsafe fn enumerateKeysAndObjectsUsingBlock_(&self, block: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateKeysAndObjectsUsingBlock : block)
    }
    unsafe fn enumerateKeysAndObjectsWithOptions_usingBlock_(
        &self,
        opts: NSEnumerationOptions,
        block: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateKeysAndObjectsWithOptions : opts, usingBlock : block)
    }
    unsafe fn keysSortedByValueUsingComparator_(&self, cmptr: NSComparator) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keysSortedByValueUsingComparator : cmptr)
    }
    unsafe fn keysSortedByValueWithOptions_usingComparator_(
        &self,
        opts: NSSortOptions,
        cmptr: NSComparator,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keysSortedByValueWithOptions : opts, usingComparator : cmptr)
    }
    unsafe fn keysOfEntriesPassingTest_(&self, predicate: *mut ::std::os::raw::c_void) -> NSSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keysOfEntriesPassingTest : predicate)
    }
    unsafe fn keysOfEntriesWithOptions_passingTest_(
        &self,
        opts: NSEnumerationOptions,
        predicate: *mut ::std::os::raw::c_void,
    ) -> NSSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keysOfEntriesWithOptions : opts, passingTest : predicate)
    }
    unsafe fn allKeys(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allKeys)
    }
    unsafe fn allValues(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allValues)
    }
    unsafe fn description(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, description)
    }
    unsafe fn descriptionInStringsFileFormat(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, descriptionInStringsFileFormat)
    }
}
impl<KeyType: 'static, ObjectType: 'static> NSDictionary_NSDeprecated<KeyType, ObjectType>
    for NSDictionary
{
}
pub trait NSDictionary_NSDeprecated<KeyType: 'static, ObjectType: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn getObjects_andKeys_(&self, objects: *mut id, keys: *mut id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getObjects : objects, andKeys : keys)
    }
    unsafe fn initWithContentsOfFile_(&self, path: NSString) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfFile : path)
    }
    unsafe fn initWithContentsOfURL_(&self, url: NSURL) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfURL : url)
    }
    unsafe fn writeToFile_atomically_(&self, path: NSString, useAuxiliaryFile: BOOL) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeToFile : path, atomically : useAuxiliaryFile)
    }
    unsafe fn writeToURL_atomically_(&self, url: NSURL, atomically: BOOL) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeToURL : url, atomically : atomically)
    }
    unsafe fn dictionaryWithContentsOfFile_(path: NSString) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDictionary").unwrap(), dictionaryWithContentsOfFile : path)
    }
    unsafe fn dictionaryWithContentsOfURL_(url: NSURL) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDictionary").unwrap(), dictionaryWithContentsOfURL : url)
    }
}
impl<KeyType: 'static, ObjectType: 'static> NSDictionary_NSDictionaryCreation<KeyType, ObjectType>
    for NSDictionary
{
}
pub trait NSDictionary_NSDictionaryCreation<KeyType: 'static, ObjectType: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn initWithObjectsAndKeys_(&self, firstObject: id) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithObjectsAndKeys : firstObject)
    }
    unsafe fn initWithDictionary_(&self, otherDictionary: NSDictionary) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDictionary : otherDictionary)
    }
    unsafe fn initWithDictionary_copyItems_(
        &self,
        otherDictionary: NSDictionary,
        flag: BOOL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDictionary : otherDictionary, copyItems : flag)
    }
    unsafe fn initWithObjects_forKeys_(&self, objects: NSArray, keys: NSArray) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithObjects : objects, forKeys : keys)
    }
    unsafe fn initWithContentsOfURL_error_(&self, url: NSURL, error: *mut NSError) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfURL : url, error : error)
    }
    unsafe fn dictionary() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDictionary").unwrap(), dictionary)
    }
    unsafe fn dictionaryWithObject_forKey_(object: id, key: *mut u64) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDictionary").unwrap(), dictionaryWithObject : object, forKey : key)
    }
    unsafe fn dictionaryWithObjects_forKeys_count_(
        objects: *const *mut u64,
        keys: *const *mut u64,
        cnt: NSUInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDictionary").unwrap(), dictionaryWithObjects : objects, forKeys : keys, count : cnt)
    }
    unsafe fn dictionaryWithObjectsAndKeys_(firstObject: id) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDictionary").unwrap(), dictionaryWithObjectsAndKeys : firstObject)
    }
    unsafe fn dictionaryWithDictionary_(dict: NSDictionary) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDictionary").unwrap(), dictionaryWithDictionary : dict)
    }
    unsafe fn dictionaryWithObjects_forKeys_(objects: NSArray, keys: NSArray) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDictionary").unwrap(), dictionaryWithObjects : objects, forKeys : keys)
    }
    unsafe fn dictionaryWithContentsOfURL_error_(url: NSURL, error: *mut NSError) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDictionary").unwrap(), dictionaryWithContentsOfURL : url, error : error)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMutableDictionary(pub id);
impl std::ops::Deref for NSMutableDictionary {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMutableDictionary {}
impl NSMutableDictionary {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableDictionary").unwrap(), alloc) })
    }
}
impl<KeyType: 'static, ObjectType: 'static> INSDictionary<KeyType, ObjectType>
    for NSMutableDictionary
{
}
impl PNSCopying for NSMutableDictionary {}
impl PNSMutableCopying for NSMutableDictionary {}
impl PNSSecureCoding for NSMutableDictionary {}
impl PNSFastEnumeration for NSMutableDictionary {}
impl INSObject for NSMutableDictionary {}
impl PNSObject for NSMutableDictionary {}
impl std::convert::TryFrom<NSObject> for NSMutableDictionary {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSMutableDictionary, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMutableDictionary").unwrap()) };
        if is_kind_of {
            Ok(NSMutableDictionary(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSMutableDictionary")
        }
    }
}
impl<KeyType: 'static, ObjectType: 'static> INSMutableDictionary<KeyType, ObjectType>
    for NSMutableDictionary
{
}
pub trait INSMutableDictionary<KeyType: 'static, ObjectType: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn removeObjectForKey_(&self, aKey: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObjectForKey : aKey)
    }
    unsafe fn setObject_forKey_(&self, anObject: id, aKey: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setObject : anObject, forKey : aKey)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithCapacity_(&self, numItems: NSUInteger) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCapacity : numItems)
    }
    unsafe fn initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
}
impl<KeyType: 'static, ObjectType: 'static>
    NSMutableDictionary_NSExtendedMutableDictionary<KeyType, ObjectType> for NSMutableDictionary
{
}
pub trait NSMutableDictionary_NSExtendedMutableDictionary<KeyType: 'static, ObjectType: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn addEntriesFromDictionary_(&self, otherDictionary: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addEntriesFromDictionary : otherDictionary)
    }
    unsafe fn removeAllObjects(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, removeAllObjects)
    }
    unsafe fn removeObjectsForKeys_(&self, keyArray: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObjectsForKeys : keyArray)
    }
    unsafe fn setDictionary_(&self, otherDictionary: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDictionary : otherDictionary)
    }
    unsafe fn setObject_forKeyedSubscript_(&self, obj: id, key: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setObject : obj, forKeyedSubscript : key)
    }
}
impl<KeyType: 'static, ObjectType: 'static>
    NSMutableDictionary_NSMutableDictionaryCreation<KeyType, ObjectType> for NSMutableDictionary
{
}
pub trait NSMutableDictionary_NSMutableDictionaryCreation<KeyType: 'static, ObjectType: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn initWithContentsOfFile_(&self, path: NSString) -> NSMutableDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfFile : path)
    }
    unsafe fn initWithContentsOfURL_(&self, url: NSURL) -> NSMutableDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfURL : url)
    }
    unsafe fn dictionaryWithCapacity_(numItems: NSUInteger) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableDictionary").unwrap(), dictionaryWithCapacity : numItems)
    }
    unsafe fn dictionaryWithContentsOfFile_(path: NSString) -> NSMutableDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableDictionary").unwrap(), dictionaryWithContentsOfFile : path)
    }
    unsafe fn dictionaryWithContentsOfURL_(url: NSURL) -> NSMutableDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableDictionary").unwrap(), dictionaryWithContentsOfURL : url)
    }
}
impl<KeyType: 'static, ObjectType: 'static>
    NSDictionary_NSSharedKeySetDictionary<KeyType, ObjectType> for NSDictionary
{
}
pub trait NSDictionary_NSSharedKeySetDictionary<KeyType: 'static, ObjectType: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn sharedKeySetForKeys_(keys: NSArray) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDictionary").unwrap(), sharedKeySetForKeys : keys)
    }
}
impl<KeyType: 'static, ObjectType: 'static>
    NSMutableDictionary_NSSharedKeySetDictionary<KeyType, ObjectType> for NSMutableDictionary
{
}
pub trait NSMutableDictionary_NSSharedKeySetDictionary<KeyType: 'static, ObjectType: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn dictionaryWithSharedKeySet_(keyset: id) -> NSMutableDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableDictionary").unwrap(), dictionaryWithSharedKeySet : keyset)
    }
}
impl<K: 'static, V: 'static> NSDictionary_NSGenericFastEnumeration<K, V> for NSDictionary {}
pub trait NSDictionary_NSGenericFastEnumeration<K: 'static, V: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn countByEnumeratingWithState_objects_count_(
        &self,
        state: *mut NSFastEnumerationState,
        buffer: *mut id,
        len: NSUInteger,
    ) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, countByEnumeratingWithState : state, objects : buffer, count : len)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSSet(pub id);
impl std::ops::Deref for NSSet {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSSet {}
impl NSSet {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSSet").unwrap(), alloc) })
    }
}
impl PNSCopying for NSSet {}
impl PNSMutableCopying for NSSet {}
impl PNSSecureCoding for NSSet {}
impl PNSFastEnumeration for NSSet {}
impl INSObject for NSSet {}
impl PNSObject for NSSet {}
impl std::convert::TryFrom<NSObject> for NSSet {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSSet, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSSet").unwrap()) };
        if is_kind_of {
            Ok(NSSet(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSSet")
        }
    }
}
impl<ObjectType: 'static> INSSet<ObjectType> for NSSet {}
pub trait INSSet<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn member_(&self, object: id) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, member : object)
    }
    unsafe fn objectEnumerator(&self) -> NSEnumerator
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, objectEnumerator)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithObjects_count_(
        &self,
        objects: *const *mut u64,
        cnt: NSUInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithObjects : objects, count : cnt)
    }
    unsafe fn initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
    unsafe fn count(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, count)
    }
}
impl<ObjectType: 'static> NSSet_NSExtendedSet<ObjectType> for NSSet {}
pub trait NSSet_NSExtendedSet<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn anyObject(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, anyObject)
    }
    unsafe fn containsObject_(&self, anObject: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, containsObject : anObject)
    }
    unsafe fn descriptionWithLocale_(&self, locale: id) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, descriptionWithLocale : locale)
    }
    unsafe fn intersectsSet_(&self, otherSet: NSSet) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, intersectsSet : otherSet)
    }
    unsafe fn isEqualToSet_(&self, otherSet: NSSet) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isEqualToSet : otherSet)
    }
    unsafe fn isSubsetOfSet_(&self, otherSet: NSSet) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isSubsetOfSet : otherSet)
    }
    unsafe fn makeObjectsPerformSelector_(&self, aSelector: objc2::runtime::Sel)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, makeObjectsPerformSelector : aSelector)
    }
    unsafe fn makeObjectsPerformSelector_withObject_(
        &self,
        aSelector: objc2::runtime::Sel,
        argument: id,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, makeObjectsPerformSelector : aSelector, withObject : argument)
    }
    unsafe fn setByAddingObject_(&self, anObject: id) -> NSSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setByAddingObject : anObject)
    }
    unsafe fn setByAddingObjectsFromSet_(&self, other: NSSet) -> NSSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setByAddingObjectsFromSet : other)
    }
    unsafe fn setByAddingObjectsFromArray_(&self, other: NSArray) -> NSSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setByAddingObjectsFromArray : other)
    }
    unsafe fn enumerateObjectsUsingBlock_(&self, block: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateObjectsUsingBlock : block)
    }
    unsafe fn enumerateObjectsWithOptions_usingBlock_(
        &self,
        opts: NSEnumerationOptions,
        block: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateObjectsWithOptions : opts, usingBlock : block)
    }
    unsafe fn objectsPassingTest_(&self, predicate: *mut ::std::os::raw::c_void) -> NSSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectsPassingTest : predicate)
    }
    unsafe fn objectsWithOptions_passingTest_(
        &self,
        opts: NSEnumerationOptions,
        predicate: *mut ::std::os::raw::c_void,
    ) -> NSSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectsWithOptions : opts, passingTest : predicate)
    }
    unsafe fn allObjects(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allObjects)
    }
    unsafe fn description(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, description)
    }
}
impl<ObjectType: 'static> NSSet_NSSetCreation<ObjectType> for NSSet {}
pub trait NSSet_NSSetCreation<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn initWithObjects_(&self, firstObj: id) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithObjects : firstObj)
    }
    unsafe fn initWithSet_(&self, set: NSSet) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithSet : set)
    }
    unsafe fn initWithSet_copyItems_(&self, set: NSSet, flag: BOOL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithSet : set, copyItems : flag)
    }
    unsafe fn initWithArray_(&self, array: NSArray) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithArray : array)
    }
    unsafe fn set() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSSet").unwrap(), set)
    }
    unsafe fn setWithObject_(object: id) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSSet").unwrap(), setWithObject : object)
    }
    unsafe fn setWithObjects_count_(objects: *const *mut u64, cnt: NSUInteger) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSSet").unwrap(), setWithObjects : objects, count : cnt)
    }
    unsafe fn setWithObjects_(firstObj: id) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSSet").unwrap(), setWithObjects : firstObj)
    }
    unsafe fn setWithSet_(set: NSSet) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSSet").unwrap(), setWithSet : set)
    }
    unsafe fn setWithArray_(array: NSArray) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSSet").unwrap(), setWithArray : array)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMutableSet(pub id);
impl std::ops::Deref for NSMutableSet {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMutableSet {}
impl NSMutableSet {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableSet").unwrap(), alloc) })
    }
}
impl<ObjectType: 'static> INSSet<ObjectType> for NSMutableSet {}
impl PNSCopying for NSMutableSet {}
impl PNSMutableCopying for NSMutableSet {}
impl PNSSecureCoding for NSMutableSet {}
impl PNSFastEnumeration for NSMutableSet {}
impl INSObject for NSMutableSet {}
impl PNSObject for NSMutableSet {}
impl std::convert::TryFrom<NSObject> for NSMutableSet {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSMutableSet, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMutableSet").unwrap()) };
        if is_kind_of {
            Ok(NSMutableSet(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSMutableSet")
        }
    }
}
impl<ObjectType: 'static> INSMutableSet<ObjectType> for NSMutableSet {}
pub trait INSMutableSet<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn addObject_(&self, object: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addObject : object)
    }
    unsafe fn removeObject_(&self, object: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObject : object)
    }
    unsafe fn initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithCapacity_(&self, numItems: NSUInteger) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCapacity : numItems)
    }
}
impl<ObjectType: 'static> NSMutableSet_NSExtendedMutableSet<ObjectType> for NSMutableSet {}
pub trait NSMutableSet_NSExtendedMutableSet<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn addObjectsFromArray_(&self, array: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addObjectsFromArray : array)
    }
    unsafe fn intersectSet_(&self, otherSet: NSSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, intersectSet : otherSet)
    }
    unsafe fn minusSet_(&self, otherSet: NSSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, minusSet : otherSet)
    }
    unsafe fn removeAllObjects(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, removeAllObjects)
    }
    unsafe fn unionSet_(&self, otherSet: NSSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unionSet : otherSet)
    }
    unsafe fn setSet_(&self, otherSet: NSSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSet : otherSet)
    }
}
impl<ObjectType: 'static> NSMutableSet_NSMutableSetCreation<ObjectType> for NSMutableSet {}
pub trait NSMutableSet_NSMutableSetCreation<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn setWithCapacity_(numItems: NSUInteger) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableSet").unwrap(), setWithCapacity : numItems)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSCountedSet(pub id);
impl std::ops::Deref for NSCountedSet {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSCountedSet {}
impl NSCountedSet {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSCountedSet").unwrap(), alloc) })
    }
}
impl<ObjectType: 'static> INSMutableSet<ObjectType> for NSCountedSet {}
impl<ObjectType: 'static> INSSet<ObjectType> for NSCountedSet {}
impl PNSCopying for NSCountedSet {}
impl PNSMutableCopying for NSCountedSet {}
impl PNSSecureCoding for NSCountedSet {}
impl PNSFastEnumeration for NSCountedSet {}
impl INSObject for NSCountedSet {}
impl PNSObject for NSCountedSet {}
impl std::convert::TryFrom<NSObject> for NSCountedSet {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSCountedSet, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSCountedSet").unwrap()) };
        if is_kind_of {
            Ok(NSCountedSet(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSCountedSet")
        }
    }
}
impl<ObjectType: 'static> INSCountedSet<ObjectType> for NSCountedSet {}
pub trait INSCountedSet<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn initWithCapacity_(&self, numItems: NSUInteger) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCapacity : numItems)
    }
    unsafe fn initWithArray_(&self, array: NSArray) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithArray : array)
    }
    unsafe fn initWithSet_(&self, set: NSSet) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithSet : set)
    }
    unsafe fn countForObject_(&self, object: id) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, countForObject : object)
    }
    unsafe fn objectEnumerator(&self) -> NSEnumerator
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, objectEnumerator)
    }
    unsafe fn addObject_(&self, object: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addObject : object)
    }
    unsafe fn removeObject_(&self, object: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObject : object)
    }
}
pub type NSProgressKind = NSString;
pub type NSProgressUserInfoKey = NSString;
pub type NSProgressFileOperationKind = NSString;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSProgress(pub id);
impl std::ops::Deref for NSProgress {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSProgress {}
impl NSProgress {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSProgress").unwrap(), alloc) })
    }
}
impl INSObject for NSProgress {}
impl PNSObject for NSProgress {}
impl std::convert::TryFrom<NSObject> for NSProgress {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSProgress, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSProgress").unwrap()) };
        if is_kind_of {
            Ok(NSProgress(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSProgress")
        }
    }
}
impl INSProgress for NSProgress {}
pub trait INSProgress: Sized + std::ops::Deref {
    unsafe fn initWithParent_userInfo_(
        &self,
        parentProgressOrNil: NSProgress,
        userInfoOrNil: NSDictionary,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithParent : parentProgressOrNil, userInfo : userInfoOrNil)
    }
    unsafe fn becomeCurrentWithPendingUnitCount_(&self, unitCount: i64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, becomeCurrentWithPendingUnitCount : unitCount)
    }
    unsafe fn performAsCurrentWithPendingUnitCount_usingBlock_(
        &self,
        unitCount: i64,
        work: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, performAsCurrentWithPendingUnitCount : unitCount, usingBlock : work)
    }
    unsafe fn resignCurrent(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, resignCurrent)
    }
    unsafe fn addChild_withPendingUnitCount_(&self, child: NSProgress, inUnitCount: i64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addChild : child, withPendingUnitCount : inUnitCount)
    }
    unsafe fn setUserInfoObject_forKey_(&self, objectOrNil: id, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserInfoObject : objectOrNil, forKey : key)
    }
    unsafe fn cancel(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cancel)
    }
    unsafe fn pause(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pause)
    }
    unsafe fn resume(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, resume)
    }
    unsafe fn publish(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, publish)
    }
    unsafe fn unpublish(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, unpublish)
    }
    unsafe fn totalUnitCount(&self) -> i64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, totalUnitCount)
    }
    unsafe fn setTotalUnitCount_(&self, totalUnitCount: i64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTotalUnitCount : totalUnitCount)
    }
    unsafe fn completedUnitCount(&self) -> i64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, completedUnitCount)
    }
    unsafe fn setCompletedUnitCount_(&self, completedUnitCount: i64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCompletedUnitCount : completedUnitCount)
    }
    unsafe fn localizedDescription(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localizedDescription)
    }
    unsafe fn setLocalizedDescription_(&self, localizedDescription: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocalizedDescription : localizedDescription)
    }
    unsafe fn localizedAdditionalDescription(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localizedAdditionalDescription)
    }
    unsafe fn setLocalizedAdditionalDescription_(&self, localizedAdditionalDescription: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocalizedAdditionalDescription : localizedAdditionalDescription)
    }
    unsafe fn isCancellable(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isCancellable)
    }
    unsafe fn setCancellable_(&self, cancellable: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCancellable : cancellable)
    }
    unsafe fn isPausable(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isPausable)
    }
    unsafe fn setPausable_(&self, pausable: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPausable : pausable)
    }
    unsafe fn isCancelled(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isCancelled)
    }
    unsafe fn isPaused(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isPaused)
    }
    unsafe fn cancellationHandler(&self) -> *mut ::std::os::raw::c_void
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cancellationHandler)
    }
    unsafe fn setCancellationHandler_(&self, cancellationHandler: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCancellationHandler : cancellationHandler)
    }
    unsafe fn pausingHandler(&self) -> *mut ::std::os::raw::c_void
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pausingHandler)
    }
    unsafe fn setPausingHandler_(&self, pausingHandler: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPausingHandler : pausingHandler)
    }
    unsafe fn resumingHandler(&self) -> *mut ::std::os::raw::c_void
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, resumingHandler)
    }
    unsafe fn setResumingHandler_(&self, resumingHandler: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setResumingHandler : resumingHandler)
    }
    unsafe fn isIndeterminate(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isIndeterminate)
    }
    unsafe fn fractionCompleted(&self) -> f64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fractionCompleted)
    }
    unsafe fn isFinished(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isFinished)
    }
    unsafe fn userInfo(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userInfo)
    }
    unsafe fn kind(&self) -> NSProgressKind
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, kind)
    }
    unsafe fn setKind_(&self, kind: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setKind : kind)
    }
    unsafe fn estimatedTimeRemaining(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, estimatedTimeRemaining)
    }
    unsafe fn setEstimatedTimeRemaining_(&self, estimatedTimeRemaining: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEstimatedTimeRemaining : estimatedTimeRemaining)
    }
    unsafe fn throughput(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, throughput)
    }
    unsafe fn setThroughput_(&self, throughput: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setThroughput : throughput)
    }
    unsafe fn fileOperationKind(&self) -> NSProgressFileOperationKind
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileOperationKind)
    }
    unsafe fn setFileOperationKind_(&self, fileOperationKind: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFileOperationKind : fileOperationKind)
    }
    unsafe fn fileURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileURL)
    }
    unsafe fn setFileURL_(&self, fileURL: NSURL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFileURL : fileURL)
    }
    unsafe fn fileTotalCount(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileTotalCount)
    }
    unsafe fn setFileTotalCount_(&self, fileTotalCount: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFileTotalCount : fileTotalCount)
    }
    unsafe fn fileCompletedCount(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileCompletedCount)
    }
    unsafe fn setFileCompletedCount_(&self, fileCompletedCount: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFileCompletedCount : fileCompletedCount)
    }
    unsafe fn isOld(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isOld)
    }
    unsafe fn currentProgress() -> NSProgress
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSProgress").unwrap(), currentProgress)
    }
    unsafe fn progressWithTotalUnitCount_(unitCount: i64) -> NSProgress
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSProgress").unwrap(), progressWithTotalUnitCount : unitCount)
    }
    unsafe fn discreteProgressWithTotalUnitCount_(unitCount: i64) -> NSProgress
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSProgress").unwrap(), discreteProgressWithTotalUnitCount : unitCount)
    }
    unsafe fn progressWithTotalUnitCount_parent_pendingUnitCount_(
        unitCount: i64,
        parent: NSProgress,
        portionOfParentTotalUnitCount: i64,
    ) -> NSProgress
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSProgress").unwrap(), progressWithTotalUnitCount : unitCount, parent : parent, pendingUnitCount : portionOfParentTotalUnitCount)
    }
    unsafe fn addSubscriberForFileURL_withPublishingHandler_(
        url: NSURL,
        publishingHandler: NSProgressPublishingHandler,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSProgress").unwrap(), addSubscriberForFileURL : url, withPublishingHandler : publishingHandler)
    }
    unsafe fn removeSubscriber_(subscriber: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSProgress").unwrap(), removeSubscriber : subscriber)
    }
}
pub type NSProgressPublishingHandler = *mut ::std::os::raw::c_void;
pub trait PNSProgressReporting: Sized + std::ops::Deref {
    unsafe fn progress(&self) -> NSProgress
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, progress)
    }
}
pub type NSNotificationName = NSString;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSNotification(pub id);
impl std::ops::Deref for NSNotification {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSNotification {}
impl NSNotification {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSNotification").unwrap(), alloc) })
    }
}
impl PNSCopying for NSNotification {}
impl PNSCoding for NSNotification {}
impl INSObject for NSNotification {}
impl PNSObject for NSNotification {}
impl std::convert::TryFrom<NSObject> for NSNotification {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSNotification, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSNotification").unwrap()) };
        if is_kind_of {
            Ok(NSNotification(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSNotification")
        }
    }
}
impl INSNotification for NSNotification {}
pub trait INSNotification: Sized + std::ops::Deref {
    unsafe fn initWithName_object_userInfo_(
        &self,
        name: NSString,
        object: id,
        userInfo: NSDictionary,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithName : name, object : object, userInfo : userInfo)
    }
    unsafe fn initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
    unsafe fn name(&self) -> NSNotificationName
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn object(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, object)
    }
    unsafe fn userInfo(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userInfo)
    }
}
impl NSNotification_NSNotificationCreation for NSNotification {}
pub trait NSNotification_NSNotificationCreation: 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 notificationWithName_object_(aName: NSString, anObject: id) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNotification").unwrap(), notificationWithName : aName, object : anObject)
    }
    unsafe fn notificationWithName_object_userInfo_(
        aName: NSString,
        anObject: id,
        aUserInfo: NSDictionary,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNotification").unwrap(), notificationWithName : aName, object : anObject, userInfo : aUserInfo)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSNotificationCenter(pub id);
impl std::ops::Deref for NSNotificationCenter {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSNotificationCenter {}
impl NSNotificationCenter {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSNotificationCenter").unwrap(), alloc) })
    }
}
impl INSObject for NSNotificationCenter {}
impl PNSObject for NSNotificationCenter {}
impl std::convert::TryFrom<NSObject> for NSNotificationCenter {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSNotificationCenter, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSNotificationCenter").unwrap()) };
        if is_kind_of {
            Ok(NSNotificationCenter(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSNotificationCenter")
        }
    }
}
impl INSNotificationCenter for NSNotificationCenter {}
pub trait INSNotificationCenter: Sized + std::ops::Deref {
    unsafe fn addObserver_selector_name_object_(
        &self,
        observer: id,
        aSelector: objc2::runtime::Sel,
        aName: NSString,
        anObject: id,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addObserver : observer, selector : aSelector, name : aName, object : anObject)
    }
    unsafe fn postNotification_(&self, notification: NSNotification)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, postNotification : notification)
    }
    unsafe fn postNotificationName_object_(&self, aName: NSString, anObject: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, postNotificationName : aName, object : anObject)
    }
    unsafe fn postNotificationName_object_userInfo_(
        &self,
        aName: NSString,
        anObject: id,
        aUserInfo: NSDictionary,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, postNotificationName : aName, object : anObject, userInfo : aUserInfo)
    }
    unsafe fn removeObserver_(&self, observer: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObserver : observer)
    }
    unsafe fn removeObserver_name_object_(&self, observer: id, aName: NSString, anObject: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObserver : observer, name : aName, object : anObject)
    }
    unsafe fn addObserverForName_object_queue_usingBlock_(
        &self,
        name: NSString,
        obj: id,
        queue: NSOperationQueue,
        block: *mut ::std::os::raw::c_void,
    ) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addObserverForName : name, object : obj, queue : queue, usingBlock : block)
    }
    unsafe fn defaultCenter() -> NSNotificationCenter
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNotificationCenter").unwrap(), defaultCenter)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSBundle(pub id);
impl std::ops::Deref for NSBundle {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSBundle {}
impl NSBundle {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSBundle").unwrap(), alloc) })
    }
}
impl INSObject for NSBundle {}
impl PNSObject for NSBundle {}
impl std::convert::TryFrom<NSObject> for NSBundle {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSBundle, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSBundle").unwrap()) };
        if is_kind_of {
            Ok(NSBundle(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSBundle")
        }
    }
}
impl INSBundle for NSBundle {}
pub trait INSBundle: Sized + std::ops::Deref {
    unsafe fn initWithPath_(&self, path: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithPath : path)
    }
    unsafe fn initWithURL_(&self, url: NSURL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithURL : url)
    }
    unsafe fn load(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, load)
    }
    unsafe fn unload(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, unload)
    }
    unsafe fn preflightAndReturnError_(&self, error: *mut NSError) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, preflightAndReturnError : error)
    }
    unsafe fn loadAndReturnError_(&self, error: *mut NSError) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, loadAndReturnError : error)
    }
    unsafe fn URLForAuxiliaryExecutable_(&self, executableName: NSString) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLForAuxiliaryExecutable : executableName)
    }
    unsafe fn pathForAuxiliaryExecutable_(&self, executableName: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pathForAuxiliaryExecutable : executableName)
    }
    unsafe fn URLForResource_withExtension_(&self, name: NSString, ext: NSString) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLForResource : name, withExtension : ext)
    }
    unsafe fn URLForResource_withExtension_subdirectory_(
        &self,
        name: NSString,
        ext: NSString,
        subpath: NSString,
    ) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLForResource : name, withExtension : ext, subdirectory : subpath)
    }
    unsafe fn URLForResource_withExtension_subdirectory_localization_(
        &self,
        name: NSString,
        ext: NSString,
        subpath: NSString,
        localizationName: NSString,
    ) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLForResource : name, withExtension : ext, subdirectory : subpath, localization : localizationName)
    }
    unsafe fn URLsForResourcesWithExtension_subdirectory_(
        &self,
        ext: NSString,
        subpath: NSString,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLsForResourcesWithExtension : ext, subdirectory : subpath)
    }
    unsafe fn URLsForResourcesWithExtension_subdirectory_localization_(
        &self,
        ext: NSString,
        subpath: NSString,
        localizationName: NSString,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLsForResourcesWithExtension : ext, subdirectory : subpath, localization : localizationName)
    }
    unsafe fn pathForResource_ofType_(&self, name: NSString, ext: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pathForResource : name, ofType : ext)
    }
    unsafe fn pathForResource_ofType_inDirectory_(
        &self,
        name: NSString,
        ext: NSString,
        subpath: NSString,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pathForResource : name, ofType : ext, inDirectory : subpath)
    }
    unsafe fn pathForResource_ofType_inDirectory_forLocalization_(
        &self,
        name: NSString,
        ext: NSString,
        subpath: NSString,
        localizationName: NSString,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pathForResource : name, ofType : ext, inDirectory : subpath, forLocalization : localizationName)
    }
    unsafe fn pathsForResourcesOfType_inDirectory_(
        &self,
        ext: NSString,
        subpath: NSString,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pathsForResourcesOfType : ext, inDirectory : subpath)
    }
    unsafe fn pathsForResourcesOfType_inDirectory_forLocalization_(
        &self,
        ext: NSString,
        subpath: NSString,
        localizationName: NSString,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pathsForResourcesOfType : ext, inDirectory : subpath, forLocalization : localizationName)
    }
    unsafe fn localizedStringForKey_value_table_(
        &self,
        key: NSString,
        value: NSString,
        tableName: NSString,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, localizedStringForKey : key, value : value, table : tableName)
    }
    unsafe fn localizedAttributedStringForKey_value_table_(
        &self,
        key: NSString,
        value: NSString,
        tableName: NSString,
    ) -> NSAttributedString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, localizedAttributedStringForKey : key, value : value, table : tableName)
    }
    unsafe fn localizedStringForKey_value_table_localizations_(
        &self,
        key: NSString,
        value: NSString,
        tableName: NSString,
        localizations: NSArray,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, localizedStringForKey : key, value : value, table : tableName, localizations : localizations)
    }
    unsafe fn objectForInfoDictionaryKey_(&self, key: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectForInfoDictionaryKey : key)
    }
    unsafe fn classNamed_(&self, className: NSString) -> Class
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, classNamed : className)
    }
    unsafe fn isLoaded(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isLoaded)
    }
    unsafe fn bundleURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, bundleURL)
    }
    unsafe fn resourceURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, resourceURL)
    }
    unsafe fn executableURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, executableURL)
    }
    unsafe fn privateFrameworksURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, privateFrameworksURL)
    }
    unsafe fn sharedFrameworksURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sharedFrameworksURL)
    }
    unsafe fn sharedSupportURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sharedSupportURL)
    }
    unsafe fn builtInPlugInsURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, builtInPlugInsURL)
    }
    unsafe fn appStoreReceiptURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, appStoreReceiptURL)
    }
    unsafe fn bundlePath(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, bundlePath)
    }
    unsafe fn resourcePath(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, resourcePath)
    }
    unsafe fn executablePath(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, executablePath)
    }
    unsafe fn privateFrameworksPath(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, privateFrameworksPath)
    }
    unsafe fn sharedFrameworksPath(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sharedFrameworksPath)
    }
    unsafe fn sharedSupportPath(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sharedSupportPath)
    }
    unsafe fn builtInPlugInsPath(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, builtInPlugInsPath)
    }
    unsafe fn bundleIdentifier(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, bundleIdentifier)
    }
    unsafe fn infoDictionary(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, infoDictionary)
    }
    unsafe fn localizedInfoDictionary(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localizedInfoDictionary)
    }
    unsafe fn principalClass(&self) -> Class
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, principalClass)
    }
    unsafe fn preferredLocalizations(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, preferredLocalizations)
    }
    unsafe fn localizations(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localizations)
    }
    unsafe fn developmentLocalization(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, developmentLocalization)
    }
    unsafe fn executableArchitectures(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, executableArchitectures)
    }
    unsafe fn bundleWithPath_(path: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSBundle").unwrap(), bundleWithPath : path)
    }
    unsafe fn bundleWithURL_(url: NSURL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSBundle").unwrap(), bundleWithURL : url)
    }
    unsafe fn bundleForClass_(aClass: Class) -> NSBundle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSBundle").unwrap(), bundleForClass : aClass)
    }
    unsafe fn bundleWithIdentifier_(identifier: NSString) -> NSBundle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSBundle").unwrap(), bundleWithIdentifier : identifier)
    }
    unsafe fn URLForResource_withExtension_subdirectory_inBundleWithURL_(
        name: NSString,
        ext: NSString,
        subpath: NSString,
        bundleURL: NSURL,
    ) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSBundle").unwrap(), URLForResource : name, withExtension : ext, subdirectory : subpath, inBundleWithURL : bundleURL)
    }
    unsafe fn URLsForResourcesWithExtension_subdirectory_inBundleWithURL_(
        ext: NSString,
        subpath: NSString,
        bundleURL: NSURL,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSBundle").unwrap(), URLsForResourcesWithExtension : ext, subdirectory : subpath, inBundleWithURL : bundleURL)
    }
    unsafe fn class_pathForResource_ofType_inDirectory_(
        name: NSString,
        ext: NSString,
        bundlePath: NSString,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSBundle").unwrap(), pathForResource : name, ofType : ext, inDirectory : bundlePath)
    }
    unsafe fn class_pathsForResourcesOfType_inDirectory_(
        ext: NSString,
        bundlePath: NSString,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSBundle").unwrap(), pathsForResourcesOfType : ext, inDirectory : bundlePath)
    }
    unsafe fn preferredLocalizationsFromArray_(localizationsArray: NSArray) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSBundle").unwrap(), preferredLocalizationsFromArray : localizationsArray)
    }
    unsafe fn preferredLocalizationsFromArray_forPreferences_(
        localizationsArray: NSArray,
        preferencesArray: NSArray,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSBundle").unwrap(), preferredLocalizationsFromArray : localizationsArray, forPreferences : preferencesArray)
    }
    unsafe fn mainBundle() -> NSBundle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSBundle").unwrap(), mainBundle)
    }
    unsafe fn allBundles() -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSBundle").unwrap(), allBundles)
    }
    unsafe fn allFrameworks() -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSBundle").unwrap(), allFrameworks)
    }
}
impl NSString_NSBundleExtensionMethods for NSString {}
pub trait NSString_NSBundleExtensionMethods: Sized + std::ops::Deref {
    unsafe fn variantFittingPresentationWidth_(&self, width: NSInteger) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, variantFittingPresentationWidth : width)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSBundleResourceRequest(pub id);
impl std::ops::Deref for NSBundleResourceRequest {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSBundleResourceRequest {}
impl NSBundleResourceRequest {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSBundleResourceRequest").unwrap(), alloc) })
    }
}
impl PNSProgressReporting for NSBundleResourceRequest {}
impl INSObject for NSBundleResourceRequest {}
impl PNSObject for NSBundleResourceRequest {}
impl std::convert::TryFrom<NSObject> for NSBundleResourceRequest {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSBundleResourceRequest, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSBundleResourceRequest").unwrap()) };
        if is_kind_of {
            Ok(NSBundleResourceRequest(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSBundleResourceRequest")
        }
    }
}
impl INSBundleResourceRequest for NSBundleResourceRequest {}
pub trait INSBundleResourceRequest: 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 initWithTags_(&self, tags: NSSet) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithTags : tags)
    }
    unsafe fn initWithTags_bundle_(&self, tags: NSSet, bundle: NSBundle) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithTags : tags, bundle : bundle)
    }
    unsafe fn beginAccessingResourcesWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, beginAccessingResourcesWithCompletionHandler : completionHandler)
    }
    unsafe fn conditionallyBeginAccessingResourcesWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, conditionallyBeginAccessingResourcesWithCompletionHandler : completionHandler)
    }
    unsafe fn endAccessingResources(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endAccessingResources)
    }
    unsafe fn loadingPriority(&self) -> f64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, loadingPriority)
    }
    unsafe fn setLoadingPriority_(&self, loadingPriority: f64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLoadingPriority : loadingPriority)
    }
    unsafe fn tags(&self) -> NSSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tags)
    }
    unsafe fn bundle(&self) -> NSBundle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, bundle)
    }
    unsafe fn progress(&self) -> NSProgress
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, progress)
    }
}
impl NSBundle_NSBundleResourceRequestAdditions for NSBundle {}
pub trait NSBundle_NSBundleResourceRequestAdditions: Sized + std::ops::Deref {
    unsafe fn setPreservationPriority_forTags_(&self, priority: f64, tags: NSSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPreservationPriority : priority, forTags : tags)
    }
    unsafe fn preservationPriorityForTag_(&self, tag: NSString) -> f64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, preservationPriorityForTag : tag)
    }
}
pub type NSTimeInterval = f64;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSDate(pub id);
impl std::ops::Deref for NSDate {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSDate {}
impl NSDate {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSDate").unwrap(), alloc) })
    }
}
impl PNSCopying for NSDate {}
impl PNSSecureCoding for NSDate {}
impl INSObject for NSDate {}
impl PNSObject for NSDate {}
impl std::convert::TryFrom<NSObject> for NSDate {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSDate, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSDate").unwrap()) };
        if is_kind_of {
            Ok(NSDate(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSDate")
        }
    }
}
impl INSDate for NSDate {}
pub trait INSDate: 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 initWithTimeIntervalSinceReferenceDate_(&self, ti: NSTimeInterval) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithTimeIntervalSinceReferenceDate : ti)
    }
    unsafe fn initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
    unsafe fn timeIntervalSinceReferenceDate(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeIntervalSinceReferenceDate)
    }
}
impl NSDate_NSExtendedDate for NSDate {}
pub trait NSDate_NSExtendedDate: Sized + std::ops::Deref {
    unsafe fn timeIntervalSinceDate_(&self, anotherDate: NSDate) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, timeIntervalSinceDate : anotherDate)
    }
    unsafe fn addTimeInterval_(&self, seconds: NSTimeInterval) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addTimeInterval : seconds)
    }
    unsafe fn dateByAddingTimeInterval_(&self, ti: NSTimeInterval) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dateByAddingTimeInterval : ti)
    }
    unsafe fn earlierDate_(&self, anotherDate: NSDate) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, earlierDate : anotherDate)
    }
    unsafe fn laterDate_(&self, anotherDate: NSDate) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, laterDate : anotherDate)
    }
    unsafe fn compare_(&self, other: NSDate) -> NSComparisonResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, compare : other)
    }
    unsafe fn isEqualToDate_(&self, otherDate: NSDate) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isEqualToDate : otherDate)
    }
    unsafe fn descriptionWithLocale_(&self, locale: id) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, descriptionWithLocale : locale)
    }
    unsafe fn timeIntervalSinceNow(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeIntervalSinceNow)
    }
    unsafe fn timeIntervalSince1970(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeIntervalSince1970)
    }
    unsafe fn description(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, description)
    }
    unsafe fn timeIntervalSinceReferenceDate() -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDate").unwrap(), timeIntervalSinceReferenceDate)
    }
}
impl NSDate_NSDateCreation for NSDate {}
pub trait NSDate_NSDateCreation: Sized + std::ops::Deref {
    unsafe fn initWithTimeIntervalSinceNow_(&self, secs: NSTimeInterval) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithTimeIntervalSinceNow : secs)
    }
    unsafe fn initWithTimeIntervalSince1970_(&self, secs: NSTimeInterval) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithTimeIntervalSince1970 : secs)
    }
    unsafe fn initWithTimeInterval_sinceDate_(
        &self,
        secsToBeAdded: NSTimeInterval,
        date: NSDate,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithTimeInterval : secsToBeAdded, sinceDate : date)
    }
    unsafe fn date() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDate").unwrap(), date)
    }
    unsafe fn dateWithTimeIntervalSinceNow_(secs: NSTimeInterval) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDate").unwrap(), dateWithTimeIntervalSinceNow : secs)
    }
    unsafe fn dateWithTimeIntervalSinceReferenceDate_(ti: NSTimeInterval) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDate").unwrap(), dateWithTimeIntervalSinceReferenceDate : ti)
    }
    unsafe fn dateWithTimeIntervalSince1970_(secs: NSTimeInterval) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDate").unwrap(), dateWithTimeIntervalSince1970 : secs)
    }
    unsafe fn dateWithTimeInterval_sinceDate_(
        secsToBeAdded: NSTimeInterval,
        date: NSDate,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDate").unwrap(), dateWithTimeInterval : secsToBeAdded, sinceDate : date)
    }
    unsafe fn distantFuture() -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDate").unwrap(), distantFuture)
    }
    unsafe fn distantPast() -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDate").unwrap(), distantPast)
    }
    unsafe fn now() -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDate").unwrap(), now)
    }
}
pub type NSCalendarIdentifier = NSString;
pub type NSCalendarUnit = NSUInteger;
pub type NSCalendarOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSCalendar(pub id);
impl std::ops::Deref for NSCalendar {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSCalendar {}
impl NSCalendar {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSCalendar").unwrap(), alloc) })
    }
}
impl PNSCopying for NSCalendar {}
impl PNSSecureCoding for NSCalendar {}
impl INSObject for NSCalendar {}
impl PNSObject for NSCalendar {}
impl std::convert::TryFrom<NSObject> for NSCalendar {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSCalendar, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSCalendar").unwrap()) };
        if is_kind_of {
            Ok(NSCalendar(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSCalendar")
        }
    }
}
impl INSCalendar for NSCalendar {}
pub trait INSCalendar: 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 initWithCalendarIdentifier_(&self, ident: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCalendarIdentifier : ident)
    }
    unsafe fn minimumRangeOfUnit_(&self, unit: NSCalendarUnit) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, minimumRangeOfUnit : unit)
    }
    unsafe fn maximumRangeOfUnit_(&self, unit: NSCalendarUnit) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, maximumRangeOfUnit : unit)
    }
    unsafe fn rangeOfUnit_inUnit_forDate_(
        &self,
        smaller: NSCalendarUnit,
        larger: NSCalendarUnit,
        date: NSDate,
    ) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rangeOfUnit : smaller, inUnit : larger, forDate : date)
    }
    unsafe fn ordinalityOfUnit_inUnit_forDate_(
        &self,
        smaller: NSCalendarUnit,
        larger: NSCalendarUnit,
        date: NSDate,
    ) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, ordinalityOfUnit : smaller, inUnit : larger, forDate : date)
    }
    unsafe fn rangeOfUnit_startDate_interval_forDate_(
        &self,
        unit: NSCalendarUnit,
        datep: *mut NSDate,
        tip: *mut NSTimeInterval,
        date: NSDate,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rangeOfUnit : unit, startDate : datep, interval : tip, forDate : date)
    }
    unsafe fn dateFromComponents_(&self, comps: NSDateComponents) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dateFromComponents : comps)
    }
    unsafe fn components_fromDate_(
        &self,
        unitFlags: NSCalendarUnit,
        date: NSDate,
    ) -> NSDateComponents
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, components : unitFlags, fromDate : date)
    }
    unsafe fn dateByAddingComponents_toDate_options_(
        &self,
        comps: NSDateComponents,
        date: NSDate,
        opts: NSCalendarOptions,
    ) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dateByAddingComponents : comps, toDate : date, options : opts)
    }
    unsafe fn components_fromDate_toDate_options_(
        &self,
        unitFlags: NSCalendarUnit,
        startingDate: NSDate,
        resultDate: NSDate,
        opts: NSCalendarOptions,
    ) -> NSDateComponents
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, components : unitFlags, fromDate : startingDate, toDate : resultDate, options : opts)
    }
    unsafe fn getEra_year_month_day_fromDate_(
        &self,
        eraValuePointer: *mut NSInteger,
        yearValuePointer: *mut NSInteger,
        monthValuePointer: *mut NSInteger,
        dayValuePointer: *mut NSInteger,
        date: NSDate,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getEra : eraValuePointer, year : yearValuePointer, month : monthValuePointer, day : dayValuePointer, fromDate : date)
    }
    unsafe fn getEra_yearForWeekOfYear_weekOfYear_weekday_fromDate_(
        &self,
        eraValuePointer: *mut NSInteger,
        yearValuePointer: *mut NSInteger,
        weekValuePointer: *mut NSInteger,
        weekdayValuePointer: *mut NSInteger,
        date: NSDate,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getEra : eraValuePointer, yearForWeekOfYear : yearValuePointer, weekOfYear : weekValuePointer, weekday : weekdayValuePointer, fromDate : date)
    }
    unsafe fn getHour_minute_second_nanosecond_fromDate_(
        &self,
        hourValuePointer: *mut NSInteger,
        minuteValuePointer: *mut NSInteger,
        secondValuePointer: *mut NSInteger,
        nanosecondValuePointer: *mut NSInteger,
        date: NSDate,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getHour : hourValuePointer, minute : minuteValuePointer, second : secondValuePointer, nanosecond : nanosecondValuePointer, fromDate : date)
    }
    unsafe fn component_fromDate_(&self, unit: NSCalendarUnit, date: NSDate) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, component : unit, fromDate : date)
    }
    unsafe fn dateWithEra_year_month_day_hour_minute_second_nanosecond_(
        &self,
        eraValue: NSInteger,
        yearValue: NSInteger,
        monthValue: NSInteger,
        dayValue: NSInteger,
        hourValue: NSInteger,
        minuteValue: NSInteger,
        secondValue: NSInteger,
        nanosecondValue: NSInteger,
    ) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dateWithEra : eraValue, year : yearValue, month : monthValue, day : dayValue, hour : hourValue, minute : minuteValue, second : secondValue, nanosecond : nanosecondValue)
    }
    unsafe fn dateWithEra_yearForWeekOfYear_weekOfYear_weekday_hour_minute_second_nanosecond_(
        &self,
        eraValue: NSInteger,
        yearValue: NSInteger,
        weekValue: NSInteger,
        weekdayValue: NSInteger,
        hourValue: NSInteger,
        minuteValue: NSInteger,
        secondValue: NSInteger,
        nanosecondValue: NSInteger,
    ) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dateWithEra : eraValue, yearForWeekOfYear : yearValue, weekOfYear : weekValue, weekday : weekdayValue, hour : hourValue, minute : minuteValue, second : secondValue, nanosecond : nanosecondValue)
    }
    unsafe fn startOfDayForDate_(&self, date: NSDate) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startOfDayForDate : date)
    }
    unsafe fn componentsInTimeZone_fromDate_(
        &self,
        timezone_: NSTimeZone,
        date: NSDate,
    ) -> NSDateComponents
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, componentsInTimeZone : timezone_, fromDate : date)
    }
    unsafe fn compareDate_toDate_toUnitGranularity_(
        &self,
        date1: NSDate,
        date2: NSDate,
        unit: NSCalendarUnit,
    ) -> NSComparisonResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, compareDate : date1, toDate : date2, toUnitGranularity : unit)
    }
    unsafe fn isDate_equalToDate_toUnitGranularity_(
        &self,
        date1: NSDate,
        date2: NSDate,
        unit: NSCalendarUnit,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isDate : date1, equalToDate : date2, toUnitGranularity : unit)
    }
    unsafe fn isDate_inSameDayAsDate_(&self, date1: NSDate, date2: NSDate) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isDate : date1, inSameDayAsDate : date2)
    }
    unsafe fn isDateInToday_(&self, date: NSDate) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isDateInToday : date)
    }
    unsafe fn isDateInYesterday_(&self, date: NSDate) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isDateInYesterday : date)
    }
    unsafe fn isDateInTomorrow_(&self, date: NSDate) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isDateInTomorrow : date)
    }
    unsafe fn isDateInWeekend_(&self, date: NSDate) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isDateInWeekend : date)
    }
    unsafe fn rangeOfWeekendStartDate_interval_containingDate_(
        &self,
        datep: *mut NSDate,
        tip: *mut NSTimeInterval,
        date: NSDate,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rangeOfWeekendStartDate : datep, interval : tip, containingDate : date)
    }
    unsafe fn nextWeekendStartDate_interval_options_afterDate_(
        &self,
        datep: *mut NSDate,
        tip: *mut NSTimeInterval,
        options: NSCalendarOptions,
        date: NSDate,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, nextWeekendStartDate : datep, interval : tip, options : options, afterDate : date)
    }
    unsafe fn components_fromDateComponents_toDateComponents_options_(
        &self,
        unitFlags: NSCalendarUnit,
        startingDateComp: NSDateComponents,
        resultDateComp: NSDateComponents,
        options: NSCalendarOptions,
    ) -> NSDateComponents
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, components : unitFlags, fromDateComponents : startingDateComp, toDateComponents : resultDateComp, options : options)
    }
    unsafe fn dateByAddingUnit_value_toDate_options_(
        &self,
        unit: NSCalendarUnit,
        value: NSInteger,
        date: NSDate,
        options: NSCalendarOptions,
    ) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dateByAddingUnit : unit, value : value, toDate : date, options : options)
    }
    unsafe fn enumerateDatesStartingAfterDate_matchingComponents_options_usingBlock_(
        &self,
        start: NSDate,
        comps: NSDateComponents,
        opts: NSCalendarOptions,
        block: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateDatesStartingAfterDate : start, matchingComponents : comps, options : opts, usingBlock : block)
    }
    unsafe fn nextDateAfterDate_matchingComponents_options_(
        &self,
        date: NSDate,
        comps: NSDateComponents,
        options: NSCalendarOptions,
    ) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, nextDateAfterDate : date, matchingComponents : comps, options : options)
    }
    unsafe fn nextDateAfterDate_matchingUnit_value_options_(
        &self,
        date: NSDate,
        unit: NSCalendarUnit,
        value: NSInteger,
        options: NSCalendarOptions,
    ) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, nextDateAfterDate : date, matchingUnit : unit, value : value, options : options)
    }
    unsafe fn nextDateAfterDate_matchingHour_minute_second_options_(
        &self,
        date: NSDate,
        hourValue: NSInteger,
        minuteValue: NSInteger,
        secondValue: NSInteger,
        options: NSCalendarOptions,
    ) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, nextDateAfterDate : date, matchingHour : hourValue, minute : minuteValue, second : secondValue, options : options)
    }
    unsafe fn dateBySettingUnit_value_ofDate_options_(
        &self,
        unit: NSCalendarUnit,
        v: NSInteger,
        date: NSDate,
        opts: NSCalendarOptions,
    ) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dateBySettingUnit : unit, value : v, ofDate : date, options : opts)
    }
    unsafe fn dateBySettingHour_minute_second_ofDate_options_(
        &self,
        h: NSInteger,
        m: NSInteger,
        s: NSInteger,
        date: NSDate,
        opts: NSCalendarOptions,
    ) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dateBySettingHour : h, minute : m, second : s, ofDate : date, options : opts)
    }
    unsafe fn date_matchesComponents_(&self, date: NSDate, components: NSDateComponents) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, date : date, matchesComponents : components)
    }
    unsafe fn calendarIdentifier(&self) -> NSCalendarIdentifier
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, calendarIdentifier)
    }
    unsafe fn locale(&self) -> NSLocale
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, locale)
    }
    unsafe fn setLocale_(&self, locale: NSLocale)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocale : locale)
    }
    unsafe fn timeZone(&self) -> NSTimeZone
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeZone)
    }
    unsafe fn setTimeZone_(&self, timeZone: NSTimeZone)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeZone : timeZone)
    }
    unsafe fn firstWeekday(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, firstWeekday)
    }
    unsafe fn setFirstWeekday_(&self, firstWeekday: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFirstWeekday : firstWeekday)
    }
    unsafe fn minimumDaysInFirstWeek(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minimumDaysInFirstWeek)
    }
    unsafe fn setMinimumDaysInFirstWeek_(&self, minimumDaysInFirstWeek: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinimumDaysInFirstWeek : minimumDaysInFirstWeek)
    }
    unsafe fn eraSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, eraSymbols)
    }
    unsafe fn longEraSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, longEraSymbols)
    }
    unsafe fn monthSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, monthSymbols)
    }
    unsafe fn shortMonthSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shortMonthSymbols)
    }
    unsafe fn veryShortMonthSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, veryShortMonthSymbols)
    }
    unsafe fn standaloneMonthSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, standaloneMonthSymbols)
    }
    unsafe fn shortStandaloneMonthSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shortStandaloneMonthSymbols)
    }
    unsafe fn veryShortStandaloneMonthSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, veryShortStandaloneMonthSymbols)
    }
    unsafe fn weekdaySymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, weekdaySymbols)
    }
    unsafe fn shortWeekdaySymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shortWeekdaySymbols)
    }
    unsafe fn veryShortWeekdaySymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, veryShortWeekdaySymbols)
    }
    unsafe fn standaloneWeekdaySymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, standaloneWeekdaySymbols)
    }
    unsafe fn shortStandaloneWeekdaySymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shortStandaloneWeekdaySymbols)
    }
    unsafe fn veryShortStandaloneWeekdaySymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, veryShortStandaloneWeekdaySymbols)
    }
    unsafe fn quarterSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, quarterSymbols)
    }
    unsafe fn shortQuarterSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shortQuarterSymbols)
    }
    unsafe fn standaloneQuarterSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, standaloneQuarterSymbols)
    }
    unsafe fn shortStandaloneQuarterSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shortStandaloneQuarterSymbols)
    }
    unsafe fn AMSymbol(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, AMSymbol)
    }
    unsafe fn PMSymbol(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, PMSymbol)
    }
    unsafe fn calendarWithIdentifier_(calendarIdentifierConstant: NSString) -> NSCalendar
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCalendar").unwrap(), calendarWithIdentifier : calendarIdentifierConstant)
    }
    unsafe fn currentCalendar() -> NSCalendar
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCalendar").unwrap(), currentCalendar)
    }
    unsafe fn autoupdatingCurrentCalendar() -> NSCalendar
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCalendar").unwrap(), autoupdatingCurrentCalendar)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSDateComponents(pub id);
impl std::ops::Deref for NSDateComponents {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSDateComponents {}
impl NSDateComponents {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSDateComponents").unwrap(), alloc) })
    }
}
impl PNSCopying for NSDateComponents {}
impl PNSSecureCoding for NSDateComponents {}
impl INSObject for NSDateComponents {}
impl PNSObject for NSDateComponents {}
impl std::convert::TryFrom<NSObject> for NSDateComponents {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSDateComponents, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSDateComponents").unwrap()) };
        if is_kind_of {
            Ok(NSDateComponents(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSDateComponents")
        }
    }
}
impl INSDateComponents for NSDateComponents {}
pub trait INSDateComponents: Sized + std::ops::Deref {
    unsafe fn week(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, week)
    }
    unsafe fn setWeek_(&self, v: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWeek : v)
    }
    unsafe fn setValue_forComponent_(&self, value: NSInteger, unit: NSCalendarUnit)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value, forComponent : unit)
    }
    unsafe fn valueForComponent_(&self, unit: NSCalendarUnit) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, valueForComponent : unit)
    }
    unsafe fn isValidDateInCalendar_(&self, calendar: NSCalendar) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isValidDateInCalendar : calendar)
    }
    unsafe fn calendar(&self) -> NSCalendar
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, calendar)
    }
    unsafe fn setCalendar_(&self, calendar: NSCalendar)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCalendar : calendar)
    }
    unsafe fn timeZone(&self) -> NSTimeZone
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeZone)
    }
    unsafe fn setTimeZone_(&self, timeZone: NSTimeZone)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeZone : timeZone)
    }
    unsafe fn era(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, era)
    }
    unsafe fn setEra_(&self, era: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEra : era)
    }
    unsafe fn year(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, year)
    }
    unsafe fn setYear_(&self, year: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setYear : year)
    }
    unsafe fn month(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, month)
    }
    unsafe fn setMonth_(&self, month: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMonth : month)
    }
    unsafe fn day(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, day)
    }
    unsafe fn setDay_(&self, day: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDay : day)
    }
    unsafe fn hour(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hour)
    }
    unsafe fn setHour_(&self, hour: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHour : hour)
    }
    unsafe fn minute(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minute)
    }
    unsafe fn setMinute_(&self, minute: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinute : minute)
    }
    unsafe fn second(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, second)
    }
    unsafe fn setSecond_(&self, second: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSecond : second)
    }
    unsafe fn nanosecond(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nanosecond)
    }
    unsafe fn setNanosecond_(&self, nanosecond: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNanosecond : nanosecond)
    }
    unsafe fn weekday(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, weekday)
    }
    unsafe fn setWeekday_(&self, weekday: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWeekday : weekday)
    }
    unsafe fn weekdayOrdinal(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, weekdayOrdinal)
    }
    unsafe fn setWeekdayOrdinal_(&self, weekdayOrdinal: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWeekdayOrdinal : weekdayOrdinal)
    }
    unsafe fn quarter(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, quarter)
    }
    unsafe fn setQuarter_(&self, quarter: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setQuarter : quarter)
    }
    unsafe fn weekOfMonth(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, weekOfMonth)
    }
    unsafe fn setWeekOfMonth_(&self, weekOfMonth: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWeekOfMonth : weekOfMonth)
    }
    unsafe fn weekOfYear(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, weekOfYear)
    }
    unsafe fn setWeekOfYear_(&self, weekOfYear: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWeekOfYear : weekOfYear)
    }
    unsafe fn yearForWeekOfYear(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, yearForWeekOfYear)
    }
    unsafe fn setYearForWeekOfYear_(&self, yearForWeekOfYear: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setYearForWeekOfYear : yearForWeekOfYear)
    }
    unsafe fn dayOfYear(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dayOfYear)
    }
    unsafe fn setDayOfYear_(&self, dayOfYear: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDayOfYear : dayOfYear)
    }
    unsafe fn isLeapMonth(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isLeapMonth)
    }
    unsafe fn setLeapMonth_(&self, leapMonth: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLeapMonth : leapMonth)
    }
    unsafe fn isRepeatedDay(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isRepeatedDay)
    }
    unsafe fn setRepeatedDay_(&self, repeatedDay: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRepeatedDay : repeatedDay)
    }
    unsafe fn date(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, date)
    }
    unsafe fn isValidDate(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isValidDate)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSCharacterSet(pub id);
impl std::ops::Deref for NSCharacterSet {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSCharacterSet {}
impl NSCharacterSet {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), alloc) })
    }
}
impl PNSCopying for NSCharacterSet {}
impl PNSMutableCopying for NSCharacterSet {}
impl PNSSecureCoding for NSCharacterSet {}
impl INSObject for NSCharacterSet {}
impl PNSObject for NSCharacterSet {}
impl std::convert::TryFrom<NSObject> for NSCharacterSet {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSCharacterSet, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap()) };
        if is_kind_of {
            Ok(NSCharacterSet(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSCharacterSet")
        }
    }
}
impl INSCharacterSet for NSCharacterSet {}
pub trait INSCharacterSet: Sized + std::ops::Deref {
    unsafe fn initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
    unsafe fn characterIsMember_(&self, aCharacter: unichar) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, characterIsMember : aCharacter)
    }
    unsafe fn longCharacterIsMember_(&self, theLongChar: UTF32Char) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, longCharacterIsMember : theLongChar)
    }
    unsafe fn isSupersetOfSet_(&self, theOtherSet: NSCharacterSet) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isSupersetOfSet : theOtherSet)
    }
    unsafe fn hasMemberInPlane_(&self, thePlane: u8) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, hasMemberInPlane : thePlane)
    }
    unsafe fn bitmapRepresentation(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, bitmapRepresentation)
    }
    unsafe fn invertedSet(&self) -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invertedSet)
    }
    unsafe fn characterSetWithRange_(aRange: NSRange) -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), characterSetWithRange : aRange)
    }
    unsafe fn characterSetWithCharactersInString_(aString: NSString) -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), characterSetWithCharactersInString : aString)
    }
    unsafe fn characterSetWithBitmapRepresentation_(data: NSData) -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), characterSetWithBitmapRepresentation : data)
    }
    unsafe fn characterSetWithContentsOfFile_(fName: NSString) -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), characterSetWithContentsOfFile : fName)
    }
    unsafe fn controlCharacterSet() -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), controlCharacterSet)
    }
    unsafe fn whitespaceCharacterSet() -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), whitespaceCharacterSet)
    }
    unsafe fn whitespaceAndNewlineCharacterSet() -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), whitespaceAndNewlineCharacterSet)
    }
    unsafe fn decimalDigitCharacterSet() -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), decimalDigitCharacterSet)
    }
    unsafe fn letterCharacterSet() -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), letterCharacterSet)
    }
    unsafe fn lowercaseLetterCharacterSet() -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), lowercaseLetterCharacterSet)
    }
    unsafe fn uppercaseLetterCharacterSet() -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), uppercaseLetterCharacterSet)
    }
    unsafe fn nonBaseCharacterSet() -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), nonBaseCharacterSet)
    }
    unsafe fn alphanumericCharacterSet() -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), alphanumericCharacterSet)
    }
    unsafe fn decomposableCharacterSet() -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), decomposableCharacterSet)
    }
    unsafe fn illegalCharacterSet() -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), illegalCharacterSet)
    }
    unsafe fn punctuationCharacterSet() -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), punctuationCharacterSet)
    }
    unsafe fn capitalizedLetterCharacterSet() -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), capitalizedLetterCharacterSet)
    }
    unsafe fn symbolCharacterSet() -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), symbolCharacterSet)
    }
    unsafe fn newlineCharacterSet() -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), newlineCharacterSet)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMutableCharacterSet(pub id);
impl std::ops::Deref for NSMutableCharacterSet {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMutableCharacterSet {}
impl NSMutableCharacterSet {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableCharacterSet").unwrap(), alloc) })
    }
}
impl PNSCopying for NSMutableCharacterSet {}
impl PNSMutableCopying for NSMutableCharacterSet {}
impl PNSSecureCoding for NSMutableCharacterSet {}
impl INSCharacterSet for NSMutableCharacterSet {}
impl From<NSMutableCharacterSet> for NSCharacterSet {
    fn from(child: NSMutableCharacterSet) -> NSCharacterSet {
        NSCharacterSet(child.0)
    }
}
impl std::convert::TryFrom<NSCharacterSet> for NSMutableCharacterSet {
    type Error = &'static str;
    fn try_from(parent: NSCharacterSet) -> Result<NSMutableCharacterSet, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMutableCharacterSet").unwrap()) };
        if is_kind_of {
            Ok(NSMutableCharacterSet(parent.0))
        } else {
            Err("This NSCharacterSet cannot be downcasted to NSMutableCharacterSet")
        }
    }
}
impl INSObject for NSMutableCharacterSet {}
impl PNSObject for NSMutableCharacterSet {}
impl INSMutableCharacterSet for NSMutableCharacterSet {}
pub trait INSMutableCharacterSet: Sized + std::ops::Deref {
    unsafe fn addCharactersInRange_(&self, aRange: NSRange)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addCharactersInRange : aRange)
    }
    unsafe fn removeCharactersInRange_(&self, aRange: NSRange)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeCharactersInRange : aRange)
    }
    unsafe fn addCharactersInString_(&self, aString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addCharactersInString : aString)
    }
    unsafe fn removeCharactersInString_(&self, aString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeCharactersInString : aString)
    }
    unsafe fn formUnionWithCharacterSet_(&self, otherSet: NSCharacterSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, formUnionWithCharacterSet : otherSet)
    }
    unsafe fn formIntersectionWithCharacterSet_(&self, otherSet: NSCharacterSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, formIntersectionWithCharacterSet : otherSet)
    }
    unsafe fn invert(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invert)
    }
    unsafe fn controlCharacterSet() -> NSMutableCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableCharacterSet").unwrap(), controlCharacterSet)
    }
    unsafe fn whitespaceCharacterSet() -> NSMutableCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableCharacterSet").unwrap(), whitespaceCharacterSet)
    }
    unsafe fn whitespaceAndNewlineCharacterSet() -> NSMutableCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableCharacterSet").unwrap(), whitespaceAndNewlineCharacterSet)
    }
    unsafe fn decimalDigitCharacterSet() -> NSMutableCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableCharacterSet").unwrap(), decimalDigitCharacterSet)
    }
    unsafe fn letterCharacterSet() -> NSMutableCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableCharacterSet").unwrap(), letterCharacterSet)
    }
    unsafe fn lowercaseLetterCharacterSet() -> NSMutableCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableCharacterSet").unwrap(), lowercaseLetterCharacterSet)
    }
    unsafe fn uppercaseLetterCharacterSet() -> NSMutableCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableCharacterSet").unwrap(), uppercaseLetterCharacterSet)
    }
    unsafe fn nonBaseCharacterSet() -> NSMutableCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableCharacterSet").unwrap(), nonBaseCharacterSet)
    }
    unsafe fn alphanumericCharacterSet() -> NSMutableCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableCharacterSet").unwrap(), alphanumericCharacterSet)
    }
    unsafe fn decomposableCharacterSet() -> NSMutableCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableCharacterSet").unwrap(), decomposableCharacterSet)
    }
    unsafe fn illegalCharacterSet() -> NSMutableCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableCharacterSet").unwrap(), illegalCharacterSet)
    }
    unsafe fn punctuationCharacterSet() -> NSMutableCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableCharacterSet").unwrap(), punctuationCharacterSet)
    }
    unsafe fn capitalizedLetterCharacterSet() -> NSMutableCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableCharacterSet").unwrap(), capitalizedLetterCharacterSet)
    }
    unsafe fn symbolCharacterSet() -> NSMutableCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableCharacterSet").unwrap(), symbolCharacterSet)
    }
    unsafe fn newlineCharacterSet() -> NSMutableCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableCharacterSet").unwrap(), newlineCharacterSet)
    }
    unsafe fn characterSetWithRange_(aRange: NSRange) -> NSMutableCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableCharacterSet").unwrap(), characterSetWithRange : aRange)
    }
    unsafe fn characterSetWithCharactersInString_(aString: NSString) -> NSMutableCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableCharacterSet").unwrap(), characterSetWithCharactersInString : aString)
    }
    unsafe fn characterSetWithBitmapRepresentation_(data: NSData) -> NSMutableCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableCharacterSet").unwrap(), characterSetWithBitmapRepresentation : data)
    }
    unsafe fn characterSetWithContentsOfFile_(fName: NSString) -> NSMutableCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableCharacterSet").unwrap(), characterSetWithContentsOfFile : fName)
    }
}
pub type NSDecodingFailurePolicy = NSInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSCoder(pub id);
impl std::ops::Deref for NSCoder {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSCoder {}
impl NSCoder {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSCoder").unwrap(), alloc) })
    }
}
impl INSObject for NSCoder {}
impl PNSObject for NSCoder {}
impl std::convert::TryFrom<NSObject> for NSCoder {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSCoder, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSCoder").unwrap()) };
        if is_kind_of {
            Ok(NSCoder(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSCoder")
        }
    }
}
impl INSCoder for NSCoder {}
pub trait INSCoder: Sized + std::ops::Deref {
    unsafe fn encodeValueOfObjCType_at_(
        &self,
        type_: *const ::std::os::raw::c_char,
        addr: *const ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeValueOfObjCType : type_, at : addr)
    }
    unsafe fn encodeDataObject_(&self, data: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeDataObject : data)
    }
    unsafe fn decodeDataObject(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, decodeDataObject)
    }
    unsafe fn decodeValueOfObjCType_at_size_(
        &self,
        type_: *const ::std::os::raw::c_char,
        data: *mut ::std::os::raw::c_void,
        size: NSUInteger,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeValueOfObjCType : type_, at : data, size : size)
    }
    unsafe fn versionForClassName_(&self, className: NSString) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, versionForClassName : className)
    }
}
impl NSCoder_NSExtendedCoder for NSCoder {}
pub trait NSCoder_NSExtendedCoder: Sized + std::ops::Deref {
    unsafe fn encodeObject_(&self, object: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeObject : object)
    }
    unsafe fn encodeRootObject_(&self, rootObject: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeRootObject : rootObject)
    }
    unsafe fn encodeBycopyObject_(&self, anObject: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeBycopyObject : anObject)
    }
    unsafe fn encodeByrefObject_(&self, anObject: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeByrefObject : anObject)
    }
    unsafe fn encodeConditionalObject_(&self, object: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeConditionalObject : object)
    }
    unsafe fn encodeValuesOfObjCTypes_(&self, types: *const ::std::os::raw::c_char)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeValuesOfObjCTypes : types)
    }
    unsafe fn encodeArrayOfObjCType_count_at_(
        &self,
        type_: *const ::std::os::raw::c_char,
        count: NSUInteger,
        array: *const ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeArrayOfObjCType : type_, count : count, at : array)
    }
    unsafe fn encodeBytes_length_(
        &self,
        byteaddr: *const ::std::os::raw::c_void,
        length: NSUInteger,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeBytes : byteaddr, length : length)
    }
    unsafe fn decodeObject(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, decodeObject)
    }
    unsafe fn decodeTopLevelObjectAndReturnError_(&self, error: *mut NSError) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeTopLevelObjectAndReturnError : error)
    }
    unsafe fn decodeValuesOfObjCTypes_(&self, types: *const ::std::os::raw::c_char)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeValuesOfObjCTypes : types)
    }
    unsafe fn decodeArrayOfObjCType_count_at_(
        &self,
        itemType: *const ::std::os::raw::c_char,
        count: NSUInteger,
        array: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeArrayOfObjCType : itemType, count : count, at : array)
    }
    unsafe fn decodeBytesWithReturnedLength_(
        &self,
        lengthp: *mut NSUInteger,
    ) -> *mut ::std::os::raw::c_void
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeBytesWithReturnedLength : lengthp)
    }
    unsafe fn encodePropertyList_(&self, aPropertyList: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodePropertyList : aPropertyList)
    }
    unsafe fn decodePropertyList(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, decodePropertyList)
    }
    unsafe fn setObjectZone_(&self, zone: *mut NSZone)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setObjectZone : zone)
    }
    unsafe fn objectZone(&self) -> *mut NSZone
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, objectZone)
    }
    unsafe fn encodeObject_forKey_(&self, object: id, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeObject : object, forKey : key)
    }
    unsafe fn encodeConditionalObject_forKey_(&self, object: id, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeConditionalObject : object, forKey : key)
    }
    unsafe fn encodeBool_forKey_(&self, value: BOOL, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeBool : value, forKey : key)
    }
    unsafe fn encodeInt_forKey_(&self, value: ::std::os::raw::c_int, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeInt : value, forKey : key)
    }
    unsafe fn encodeInt32_forKey_(&self, value: i32, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeInt32 : value, forKey : key)
    }
    unsafe fn encodeInt64_forKey_(&self, value: i64, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeInt64 : value, forKey : key)
    }
    unsafe fn encodeFloat_forKey_(&self, value: f32, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeFloat : value, forKey : key)
    }
    unsafe fn encodeDouble_forKey_(&self, value: f64, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeDouble : value, forKey : key)
    }
    unsafe fn encodeBytes_length_forKey_(&self, bytes: *const u8, length: NSUInteger, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeBytes : bytes, length : length, forKey : key)
    }
    unsafe fn containsValueForKey_(&self, key: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, containsValueForKey : key)
    }
    unsafe fn decodeObjectForKey_(&self, key: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeObjectForKey : key)
    }
    unsafe fn decodeTopLevelObjectForKey_error_(&self, key: NSString, error: *mut NSError) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeTopLevelObjectForKey : key, error : error)
    }
    unsafe fn decodeBoolForKey_(&self, key: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeBoolForKey : key)
    }
    unsafe fn decodeIntForKey_(&self, key: NSString) -> ::std::os::raw::c_int
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeIntForKey : key)
    }
    unsafe fn decodeInt32ForKey_(&self, key: NSString) -> i32
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeInt32ForKey : key)
    }
    unsafe fn decodeInt64ForKey_(&self, key: NSString) -> i64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeInt64ForKey : key)
    }
    unsafe fn decodeFloatForKey_(&self, key: NSString) -> f32
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeFloatForKey : key)
    }
    unsafe fn decodeDoubleForKey_(&self, key: NSString) -> f64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeDoubleForKey : key)
    }
    unsafe fn decodeBytesForKey_returnedLength_(
        &self,
        key: NSString,
        lengthp: *mut NSUInteger,
    ) -> *const u8
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeBytesForKey : key, returnedLength : lengthp)
    }
    unsafe fn decodeBytesWithMinimumLength_(
        &self,
        length: NSUInteger,
    ) -> *mut ::std::os::raw::c_void
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeBytesWithMinimumLength : length)
    }
    unsafe fn decodeBytesForKey_minimumLength_(
        &self,
        key: NSString,
        length: NSUInteger,
    ) -> *const u8
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeBytesForKey : key, minimumLength : length)
    }
    unsafe fn encodeInteger_forKey_(&self, value: NSInteger, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeInteger : value, forKey : key)
    }
    unsafe fn decodeIntegerForKey_(&self, key: NSString) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeIntegerForKey : key)
    }
    unsafe fn decodeObjectOfClass_forKey_(&self, aClass: Class, key: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeObjectOfClass : aClass, forKey : key)
    }
    unsafe fn decodeTopLevelObjectOfClass_forKey_error_(
        &self,
        aClass: Class,
        key: NSString,
        error: *mut NSError,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeTopLevelObjectOfClass : aClass, forKey : key, error : error)
    }
    unsafe fn decodeArrayOfObjectsOfClass_forKey_(&self, cls: Class, key: NSString) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeArrayOfObjectsOfClass : cls, forKey : key)
    }
    unsafe fn decodeDictionaryWithKeysOfClass_objectsOfClass_forKey_(
        &self,
        keyCls: Class,
        objectCls: Class,
        key: NSString,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeDictionaryWithKeysOfClass : keyCls, objectsOfClass : objectCls, forKey : key)
    }
    unsafe fn decodeObjectOfClasses_forKey_(&self, classes: NSSet, key: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeObjectOfClasses : classes, forKey : key)
    }
    unsafe fn decodeTopLevelObjectOfClasses_forKey_error_(
        &self,
        classes: NSSet,
        key: NSString,
        error: *mut NSError,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeTopLevelObjectOfClasses : classes, forKey : key, error : error)
    }
    unsafe fn decodeArrayOfObjectsOfClasses_forKey_(&self, classes: NSSet, key: NSString) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeArrayOfObjectsOfClasses : classes, forKey : key)
    }
    unsafe fn decodeDictionaryWithKeysOfClasses_objectsOfClasses_forKey_(
        &self,
        keyClasses: NSSet,
        objectClasses: NSSet,
        key: NSString,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeDictionaryWithKeysOfClasses : keyClasses, objectsOfClasses : objectClasses, forKey : key)
    }
    unsafe fn decodePropertyListForKey_(&self, key: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodePropertyListForKey : key)
    }
    unsafe fn failWithError_(&self, error: NSError)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, failWithError : error)
    }
    unsafe fn systemVersion(&self) -> ::std::os::raw::c_uint
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, systemVersion)
    }
    unsafe fn allowsKeyedCoding(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowsKeyedCoding)
    }
    unsafe fn requiresSecureCoding(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requiresSecureCoding)
    }
    unsafe fn allowedClasses(&self) -> NSSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowedClasses)
    }
    unsafe fn decodingFailurePolicy(&self) -> NSDecodingFailurePolicy
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, decodingFailurePolicy)
    }
    unsafe fn error(&self) -> NSError
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, error)
    }
}
impl NSCoder_NSTypedstreamCompatibility for NSCoder {}
pub trait NSCoder_NSTypedstreamCompatibility: Sized + std::ops::Deref {
    unsafe fn encodeNXObject_(&self, object: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeNXObject : object)
    }
    unsafe fn decodeNXObject(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, decodeNXObject)
    }
}
impl NSCoder_NSDeprecated for NSCoder {}
pub trait NSCoder_NSDeprecated: Sized + std::ops::Deref {
    unsafe fn decodeValueOfObjCType_at_(
        &self,
        type_: *const ::std::os::raw::c_char,
        data: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeValueOfObjCType : type_, at : data)
    }
}
pub type NSDataReadingOptions = NSUInteger;
pub type NSDataWritingOptions = NSUInteger;
pub type NSDataSearchOptions = NSUInteger;
pub type NSDataBase64EncodingOptions = NSUInteger;
pub type NSDataBase64DecodingOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSData(pub id);
impl std::ops::Deref for NSData {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSData {}
impl NSData {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSData").unwrap(), alloc) })
    }
}
impl PNSCopying for NSData {}
impl PNSMutableCopying for NSData {}
impl PNSSecureCoding for NSData {}
impl INSObject for NSData {}
impl PNSObject for NSData {}
impl std::convert::TryFrom<NSObject> for NSData {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSData, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSData").unwrap()) };
        if is_kind_of {
            Ok(NSData(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSData")
        }
    }
}
impl INSData for NSData {}
pub trait INSData: Sized + std::ops::Deref {
    unsafe fn length(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, length)
    }
    unsafe fn bytes(&self) -> *const ::std::os::raw::c_void
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, bytes)
    }
}
impl NSData_NSExtendedData for NSData {}
pub trait NSData_NSExtendedData: Sized + std::ops::Deref {
    unsafe fn getBytes_length_(&self, buffer: *mut ::std::os::raw::c_void, length: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getBytes : buffer, length : length)
    }
    unsafe fn getBytes_range_(&self, buffer: *mut ::std::os::raw::c_void, range: NSRange)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getBytes : buffer, range : range)
    }
    unsafe fn isEqualToData_(&self, other: NSData) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isEqualToData : other)
    }
    unsafe fn subdataWithRange_(&self, range: NSRange) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subdataWithRange : range)
    }
    unsafe fn writeToFile_atomically_(&self, path: NSString, useAuxiliaryFile: BOOL) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeToFile : path, atomically : useAuxiliaryFile)
    }
    unsafe fn writeToURL_atomically_(&self, url: NSURL, atomically: BOOL) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeToURL : url, atomically : atomically)
    }
    unsafe fn writeToFile_options_error_(
        &self,
        path: NSString,
        writeOptionsMask: NSDataWritingOptions,
        errorPtr: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeToFile : path, options : writeOptionsMask, error : errorPtr)
    }
    unsafe fn writeToURL_options_error_(
        &self,
        url: NSURL,
        writeOptionsMask: NSDataWritingOptions,
        errorPtr: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeToURL : url, options : writeOptionsMask, error : errorPtr)
    }
    unsafe fn rangeOfData_options_range_(
        &self,
        dataToFind: NSData,
        mask: NSDataSearchOptions,
        searchRange: NSRange,
    ) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rangeOfData : dataToFind, options : mask, range : searchRange)
    }
    unsafe fn enumerateByteRangesUsingBlock_(&self, block: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateByteRangesUsingBlock : block)
    }
    unsafe fn description(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, description)
    }
}
impl NSData_NSDataCreation for NSData {}
pub trait NSData_NSDataCreation: Sized + std::ops::Deref {
    unsafe fn initWithBytes_length_(
        &self,
        bytes: *const ::std::os::raw::c_void,
        length: NSUInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithBytes : bytes, length : length)
    }
    unsafe fn initWithBytesNoCopy_length_(
        &self,
        bytes: *mut ::std::os::raw::c_void,
        length: NSUInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithBytesNoCopy : bytes, length : length)
    }
    unsafe fn initWithBytesNoCopy_length_freeWhenDone_(
        &self,
        bytes: *mut ::std::os::raw::c_void,
        length: NSUInteger,
        b: BOOL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithBytesNoCopy : bytes, length : length, freeWhenDone : b)
    }
    unsafe fn initWithBytesNoCopy_length_deallocator_(
        &self,
        bytes: *mut ::std::os::raw::c_void,
        length: NSUInteger,
        deallocator: *mut ::std::os::raw::c_void,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithBytesNoCopy : bytes, length : length, deallocator : deallocator)
    }
    unsafe fn initWithContentsOfFile_options_error_(
        &self,
        path: NSString,
        readOptionsMask: NSDataReadingOptions,
        errorPtr: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfFile : path, options : readOptionsMask, error : errorPtr)
    }
    unsafe fn initWithContentsOfURL_options_error_(
        &self,
        url: NSURL,
        readOptionsMask: NSDataReadingOptions,
        errorPtr: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfURL : url, options : readOptionsMask, error : errorPtr)
    }
    unsafe fn initWithContentsOfFile_(&self, path: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfFile : path)
    }
    unsafe fn initWithContentsOfURL_(&self, url: NSURL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfURL : url)
    }
    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() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSData").unwrap(), data)
    }
    unsafe fn dataWithBytes_length_(
        bytes: *const ::std::os::raw::c_void,
        length: NSUInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSData").unwrap(), dataWithBytes : bytes, length : length)
    }
    unsafe fn dataWithBytesNoCopy_length_(
        bytes: *mut ::std::os::raw::c_void,
        length: NSUInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSData").unwrap(), dataWithBytesNoCopy : bytes, length : length)
    }
    unsafe fn dataWithBytesNoCopy_length_freeWhenDone_(
        bytes: *mut ::std::os::raw::c_void,
        length: NSUInteger,
        b: BOOL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSData").unwrap(), dataWithBytesNoCopy : bytes, length : length, freeWhenDone : b)
    }
    unsafe fn dataWithContentsOfFile_options_error_(
        path: NSString,
        readOptionsMask: NSDataReadingOptions,
        errorPtr: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSData").unwrap(), dataWithContentsOfFile : path, options : readOptionsMask, error : errorPtr)
    }
    unsafe fn dataWithContentsOfURL_options_error_(
        url: NSURL,
        readOptionsMask: NSDataReadingOptions,
        errorPtr: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSData").unwrap(), dataWithContentsOfURL : url, options : readOptionsMask, error : errorPtr)
    }
    unsafe fn dataWithContentsOfFile_(path: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSData").unwrap(), dataWithContentsOfFile : path)
    }
    unsafe fn dataWithContentsOfURL_(url: NSURL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSData").unwrap(), dataWithContentsOfURL : url)
    }
    unsafe fn dataWithData_(data: NSData) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSData").unwrap(), dataWithData : data)
    }
}
impl NSData_NSDataBase64Encoding for NSData {}
pub trait NSData_NSDataBase64Encoding: Sized + std::ops::Deref {
    unsafe fn initWithBase64EncodedString_options_(
        &self,
        base64String: NSString,
        options: NSDataBase64DecodingOptions,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithBase64EncodedString : base64String, options : options)
    }
    unsafe fn base64EncodedStringWithOptions_(
        &self,
        options: NSDataBase64EncodingOptions,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, base64EncodedStringWithOptions : options)
    }
    unsafe fn initWithBase64EncodedData_options_(
        &self,
        base64Data: NSData,
        options: NSDataBase64DecodingOptions,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithBase64EncodedData : base64Data, options : options)
    }
    unsafe fn base64EncodedDataWithOptions_(&self, options: NSDataBase64EncodingOptions) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, base64EncodedDataWithOptions : options)
    }
}
pub type NSDataCompressionAlgorithm = NSInteger;
impl NSData_NSDataCompression for NSData {}
pub trait NSData_NSDataCompression: Sized + std::ops::Deref {
    unsafe fn decompressedDataUsingAlgorithm_error_(
        &self,
        algorithm: NSDataCompressionAlgorithm,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decompressedDataUsingAlgorithm : algorithm, error : error)
    }
    unsafe fn compressedDataUsingAlgorithm_error_(
        &self,
        algorithm: NSDataCompressionAlgorithm,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, compressedDataUsingAlgorithm : algorithm, error : error)
    }
}
impl NSData_NSDeprecated for NSData {}
pub trait NSData_NSDeprecated: Sized + std::ops::Deref {
    unsafe fn getBytes_(&self, buffer: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getBytes : buffer)
    }
    unsafe fn initWithContentsOfMappedFile_(&self, path: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfMappedFile : path)
    }
    unsafe fn initWithBase64Encoding_(&self, base64String: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithBase64Encoding : base64String)
    }
    unsafe fn base64Encoding(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, base64Encoding)
    }
    unsafe fn dataWithContentsOfMappedFile_(path: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSData").unwrap(), dataWithContentsOfMappedFile : path)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMutableData(pub id);
impl std::ops::Deref for NSMutableData {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMutableData {}
impl NSMutableData {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableData").unwrap(), alloc) })
    }
}
impl INSData for NSMutableData {}
impl PNSCopying for NSMutableData {}
impl PNSMutableCopying for NSMutableData {}
impl PNSSecureCoding for NSMutableData {}
impl From<NSMutableData> for NSData {
    fn from(child: NSMutableData) -> NSData {
        NSData(child.0)
    }
}
impl std::convert::TryFrom<NSData> for NSMutableData {
    type Error = &'static str;
    fn try_from(parent: NSData) -> Result<NSMutableData, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMutableData").unwrap()) };
        if is_kind_of {
            Ok(NSMutableData(parent.0))
        } else {
            Err("This NSData cannot be downcasted to NSMutableData")
        }
    }
}
impl INSObject for NSMutableData {}
impl PNSObject for NSMutableData {}
impl INSMutableData for NSMutableData {}
pub trait INSMutableData: Sized + std::ops::Deref {
    unsafe fn mutableBytes(&self) -> *mut ::std::os::raw::c_void
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mutableBytes)
    }
    unsafe fn length(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, length)
    }
    unsafe fn setLength_(&self, length: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLength : length)
    }
}
impl NSMutableData_NSExtendedMutableData for NSMutableData {}
pub trait NSMutableData_NSExtendedMutableData: Sized + std::ops::Deref {
    unsafe fn appendBytes_length_(&self, bytes: *const ::std::os::raw::c_void, length: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, appendBytes : bytes, length : length)
    }
    unsafe fn appendData_(&self, other: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, appendData : other)
    }
    unsafe fn increaseLengthBy_(&self, extraLength: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, increaseLengthBy : extraLength)
    }
    unsafe fn replaceBytesInRange_withBytes_(
        &self,
        range: NSRange,
        bytes: *const ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replaceBytesInRange : range, withBytes : bytes)
    }
    unsafe fn resetBytesInRange_(&self, range: NSRange)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetBytesInRange : range)
    }
    unsafe fn setData_(&self, data: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setData : data)
    }
    unsafe fn replaceBytesInRange_withBytes_length_(
        &self,
        range: NSRange,
        replacementBytes: *const ::std::os::raw::c_void,
        replacementLength: NSUInteger,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replaceBytesInRange : range, withBytes : replacementBytes, length : replacementLength)
    }
}
impl NSMutableData_NSMutableDataCreation for NSMutableData {}
pub trait NSMutableData_NSMutableDataCreation: Sized + std::ops::Deref {
    unsafe fn initWithCapacity_(&self, capacity: NSUInteger) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCapacity : capacity)
    }
    unsafe fn initWithLength_(&self, length: NSUInteger) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithLength : length)
    }
    unsafe fn dataWithCapacity_(aNumItems: NSUInteger) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableData").unwrap(), dataWithCapacity : aNumItems)
    }
    unsafe fn dataWithLength_(length: NSUInteger) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableData").unwrap(), dataWithLength : length)
    }
}
impl NSMutableData_NSMutableDataCompression for NSMutableData {}
pub trait NSMutableData_NSMutableDataCompression: Sized + std::ops::Deref {
    unsafe fn decompressUsingAlgorithm_error_(
        &self,
        algorithm: NSDataCompressionAlgorithm,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decompressUsingAlgorithm : algorithm, error : error)
    }
    unsafe fn compressUsingAlgorithm_error_(
        &self,
        algorithm: NSDataCompressionAlgorithm,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, compressUsingAlgorithm : algorithm, error : error)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSPurgeableData(pub id);
impl std::ops::Deref for NSPurgeableData {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSPurgeableData {}
impl NSPurgeableData {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSPurgeableData").unwrap(), alloc) })
    }
}
impl PNSDiscardableContent for NSPurgeableData {}
impl INSMutableData for NSPurgeableData {}
impl From<NSPurgeableData> for NSMutableData {
    fn from(child: NSPurgeableData) -> NSMutableData {
        NSMutableData(child.0)
    }
}
impl std::convert::TryFrom<NSMutableData> for NSPurgeableData {
    type Error = &'static str;
    fn try_from(parent: NSMutableData) -> Result<NSPurgeableData, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSPurgeableData").unwrap()) };
        if is_kind_of {
            Ok(NSPurgeableData(parent.0))
        } else {
            Err("This NSMutableData cannot be downcasted to NSPurgeableData")
        }
    }
}
impl INSData for NSPurgeableData {}
impl PNSCopying for NSPurgeableData {}
impl PNSMutableCopying for NSPurgeableData {}
impl PNSSecureCoding for NSPurgeableData {}
impl INSObject for NSPurgeableData {}
impl PNSObject for NSPurgeableData {}
impl INSPurgeableData for NSPurgeableData {}
pub trait INSPurgeableData: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSDateInterval(pub id);
impl std::ops::Deref for NSDateInterval {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSDateInterval {}
impl NSDateInterval {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSDateInterval").unwrap(), alloc) })
    }
}
impl PNSCopying for NSDateInterval {}
impl PNSSecureCoding for NSDateInterval {}
impl INSObject for NSDateInterval {}
impl PNSObject for NSDateInterval {}
impl std::convert::TryFrom<NSObject> for NSDateInterval {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSDateInterval, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSDateInterval").unwrap()) };
        if is_kind_of {
            Ok(NSDateInterval(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSDateInterval")
        }
    }
}
impl INSDateInterval for NSDateInterval {}
pub trait INSDateInterval: 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 initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
    unsafe fn initWithStartDate_duration_(
        &self,
        startDate: NSDate,
        duration: NSTimeInterval,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithStartDate : startDate, duration : duration)
    }
    unsafe fn initWithStartDate_endDate_(&self, startDate: NSDate, endDate: NSDate) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithStartDate : startDate, endDate : endDate)
    }
    unsafe fn compare_(&self, dateInterval: NSDateInterval) -> NSComparisonResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, compare : dateInterval)
    }
    unsafe fn isEqualToDateInterval_(&self, dateInterval: NSDateInterval) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isEqualToDateInterval : dateInterval)
    }
    unsafe fn intersectsDateInterval_(&self, dateInterval: NSDateInterval) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, intersectsDateInterval : dateInterval)
    }
    unsafe fn intersectionWithDateInterval_(&self, dateInterval: NSDateInterval) -> NSDateInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, intersectionWithDateInterval : dateInterval)
    }
    unsafe fn containsDate_(&self, date: NSDate) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, containsDate : date)
    }
    unsafe fn startDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startDate)
    }
    unsafe fn endDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endDate)
    }
    unsafe fn duration(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, duration)
    }
}
pub type NSAttributedStringKey = NSString;
pub type NSAttributedStringFormattingContextKey = NSString;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSAttributedString(pub id);
impl std::ops::Deref for NSAttributedString {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSAttributedString {}
impl NSAttributedString {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSAttributedString").unwrap(), alloc) })
    }
}
impl PNSCopying for NSAttributedString {}
impl PNSMutableCopying for NSAttributedString {}
impl PNSSecureCoding for NSAttributedString {}
impl INSObject for NSAttributedString {}
impl PNSObject for NSAttributedString {}
impl std::convert::TryFrom<NSObject> for NSAttributedString {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSAttributedString, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSAttributedString").unwrap()) };
        if is_kind_of {
            Ok(NSAttributedString(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSAttributedString")
        }
    }
}
impl INSAttributedString for NSAttributedString {}
pub trait INSAttributedString: Sized + std::ops::Deref {
    unsafe fn attributesAtIndex_effectiveRange_(
        &self,
        location: NSUInteger,
        range: NSRangePointer,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, attributesAtIndex : location, effectiveRange : range)
    }
    unsafe fn string(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, string)
    }
}
impl NSAttributedString_NSExtendedAttributedString for NSAttributedString {}
pub trait NSAttributedString_NSExtendedAttributedString: Sized + std::ops::Deref {
    unsafe fn attribute_atIndex_effectiveRange_(
        &self,
        attrName: NSString,
        location: NSUInteger,
        range: NSRangePointer,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, attribute : attrName, atIndex : location, effectiveRange : range)
    }
    unsafe fn attributedSubstringFromRange_(&self, range: NSRange) -> NSAttributedString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, attributedSubstringFromRange : range)
    }
    unsafe fn attributesAtIndex_longestEffectiveRange_inRange_(
        &self,
        location: NSUInteger,
        range: NSRangePointer,
        rangeLimit: NSRange,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, attributesAtIndex : location, longestEffectiveRange : range, inRange : rangeLimit)
    }
    unsafe fn attribute_atIndex_longestEffectiveRange_inRange_(
        &self,
        attrName: NSString,
        location: NSUInteger,
        range: NSRangePointer,
        rangeLimit: NSRange,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, attribute : attrName, atIndex : location, longestEffectiveRange : range, inRange : rangeLimit)
    }
    unsafe fn isEqualToAttributedString_(&self, other: NSAttributedString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isEqualToAttributedString : other)
    }
    unsafe fn initWithString_(&self, str_: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithString : str_)
    }
    unsafe fn initWithString_attributes_(&self, str_: NSString, attrs: NSDictionary) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithString : str_, attributes : attrs)
    }
    unsafe fn initWithAttributedString_(&self, attrStr: NSAttributedString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithAttributedString : attrStr)
    }
    unsafe fn enumerateAttributesInRange_options_usingBlock_(
        &self,
        enumerationRange: NSRange,
        opts: NSAttributedStringEnumerationOptions,
        block: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateAttributesInRange : enumerationRange, options : opts, usingBlock : block)
    }
    unsafe fn enumerateAttribute_inRange_options_usingBlock_(
        &self,
        attrName: NSString,
        enumerationRange: NSRange,
        opts: NSAttributedStringEnumerationOptions,
        block: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateAttribute : attrName, inRange : enumerationRange, options : opts, usingBlock : block)
    }
    unsafe fn length(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, length)
    }
}
pub type NSAttributedStringEnumerationOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMutableAttributedString(pub id);
impl std::ops::Deref for NSMutableAttributedString {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMutableAttributedString {}
impl NSMutableAttributedString {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableAttributedString").unwrap(), alloc) })
    }
}
impl INSAttributedString for NSMutableAttributedString {}
impl PNSCopying for NSMutableAttributedString {}
impl PNSMutableCopying for NSMutableAttributedString {}
impl PNSSecureCoding for NSMutableAttributedString {}
impl From<NSMutableAttributedString> for NSAttributedString {
    fn from(child: NSMutableAttributedString) -> NSAttributedString {
        NSAttributedString(child.0)
    }
}
impl std::convert::TryFrom<NSAttributedString> for NSMutableAttributedString {
    type Error = &'static str;
    fn try_from(parent: NSAttributedString) -> Result<NSMutableAttributedString, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMutableAttributedString").unwrap()) };
        if is_kind_of {
            Ok(NSMutableAttributedString(parent.0))
        } else {
            Err("This NSAttributedString cannot be downcasted to NSMutableAttributedString")
        }
    }
}
impl INSObject for NSMutableAttributedString {}
impl PNSObject for NSMutableAttributedString {}
impl INSMutableAttributedString for NSMutableAttributedString {}
pub trait INSMutableAttributedString: Sized + std::ops::Deref {
    unsafe fn replaceCharactersInRange_withString_(&self, range: NSRange, str_: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replaceCharactersInRange : range, withString : str_)
    }
    unsafe fn setAttributes_range_(&self, attrs: NSDictionary, range: NSRange)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttributes : attrs, range : range)
    }
}
impl NSMutableAttributedString_NSExtendedMutableAttributedString for NSMutableAttributedString {}
pub trait NSMutableAttributedString_NSExtendedMutableAttributedString:
    Sized + std::ops::Deref
{
    unsafe fn addAttribute_value_range_(&self, name: NSString, value: id, range: NSRange)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addAttribute : name, value : value, range : range)
    }
    unsafe fn addAttributes_range_(&self, attrs: NSDictionary, range: NSRange)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addAttributes : attrs, range : range)
    }
    unsafe fn removeAttribute_range_(&self, name: NSString, range: NSRange)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeAttribute : name, range : range)
    }
    unsafe fn replaceCharactersInRange_withAttributedString_(
        &self,
        range: NSRange,
        attrString: NSAttributedString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replaceCharactersInRange : range, withAttributedString : attrString)
    }
    unsafe fn insertAttributedString_atIndex_(
        &self,
        attrString: NSAttributedString,
        loc: NSUInteger,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, insertAttributedString : attrString, atIndex : loc)
    }
    unsafe fn appendAttributedString_(&self, attrString: NSAttributedString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, appendAttributedString : attrString)
    }
    unsafe fn deleteCharactersInRange_(&self, range: NSRange)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deleteCharactersInRange : range)
    }
    unsafe fn setAttributedString_(&self, attrString: NSAttributedString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttributedString : attrString)
    }
    unsafe fn beginEditing(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, beginEditing)
    }
    unsafe fn endEditing(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endEditing)
    }
    unsafe fn mutableString(&self) -> NSMutableString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mutableString)
    }
}
pub type NSInlinePresentationIntent = NSUInteger;
pub type NSAttributedStringMarkdownParsingFailurePolicy = NSInteger;
pub type NSAttributedStringMarkdownInterpretedSyntax = NSInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSAttributedStringMarkdownSourcePosition(pub id);
impl std::ops::Deref for NSAttributedStringMarkdownSourcePosition {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSAttributedStringMarkdownSourcePosition {}
impl NSAttributedStringMarkdownSourcePosition {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSAttributedStringMarkdownSourcePosition").unwrap(), alloc) })
    }
}
impl PNSCopying for NSAttributedStringMarkdownSourcePosition {}
impl PNSSecureCoding for NSAttributedStringMarkdownSourcePosition {}
impl INSObject for NSAttributedStringMarkdownSourcePosition {}
impl PNSObject for NSAttributedStringMarkdownSourcePosition {}
impl std::convert::TryFrom<NSObject> for NSAttributedStringMarkdownSourcePosition {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSAttributedStringMarkdownSourcePosition, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSAttributedStringMarkdownSourcePosition").unwrap())
        };
        if is_kind_of {
            Ok(NSAttributedStringMarkdownSourcePosition(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSAttributedStringMarkdownSourcePosition")
        }
    }
}
impl INSAttributedStringMarkdownSourcePosition for NSAttributedStringMarkdownSourcePosition {}
pub trait INSAttributedStringMarkdownSourcePosition: Sized + std::ops::Deref {
    unsafe fn initWithStartLine_startColumn_endLine_endColumn_(
        &self,
        startLine: NSInteger,
        startColumn: NSInteger,
        endLine: NSInteger,
        endColumn: NSInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithStartLine : startLine, startColumn : startColumn, endLine : endLine, endColumn : endColumn)
    }
    unsafe fn rangeInString_(&self, string: NSString) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rangeInString : string)
    }
    unsafe fn startLine(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startLine)
    }
    unsafe fn startColumn(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startColumn)
    }
    unsafe fn endLine(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endLine)
    }
    unsafe fn endColumn(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endColumn)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSAttributedStringMarkdownParsingOptions(pub id);
impl std::ops::Deref for NSAttributedStringMarkdownParsingOptions {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSAttributedStringMarkdownParsingOptions {}
impl NSAttributedStringMarkdownParsingOptions {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSAttributedStringMarkdownParsingOptions").unwrap(), alloc) })
    }
}
impl PNSCopying for NSAttributedStringMarkdownParsingOptions {}
impl INSObject for NSAttributedStringMarkdownParsingOptions {}
impl PNSObject for NSAttributedStringMarkdownParsingOptions {}
impl std::convert::TryFrom<NSObject> for NSAttributedStringMarkdownParsingOptions {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSAttributedStringMarkdownParsingOptions, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSAttributedStringMarkdownParsingOptions").unwrap())
        };
        if is_kind_of {
            Ok(NSAttributedStringMarkdownParsingOptions(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSAttributedStringMarkdownParsingOptions")
        }
    }
}
impl INSAttributedStringMarkdownParsingOptions for NSAttributedStringMarkdownParsingOptions {}
pub trait INSAttributedStringMarkdownParsingOptions: 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 allowsExtendedAttributes(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowsExtendedAttributes)
    }
    unsafe fn setAllowsExtendedAttributes_(&self, allowsExtendedAttributes: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAllowsExtendedAttributes : allowsExtendedAttributes)
    }
    unsafe fn interpretedSyntax(&self) -> NSAttributedStringMarkdownInterpretedSyntax
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, interpretedSyntax)
    }
    unsafe fn setInterpretedSyntax_(
        &self,
        interpretedSyntax: NSAttributedStringMarkdownInterpretedSyntax,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInterpretedSyntax : interpretedSyntax)
    }
    unsafe fn failurePolicy(&self) -> NSAttributedStringMarkdownParsingFailurePolicy
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, failurePolicy)
    }
    unsafe fn setFailurePolicy_(
        &self,
        failurePolicy: NSAttributedStringMarkdownParsingFailurePolicy,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFailurePolicy : failurePolicy)
    }
    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 appliesSourcePositionAttributes(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, appliesSourcePositionAttributes)
    }
    unsafe fn setAppliesSourcePositionAttributes_(&self, appliesSourcePositionAttributes: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAppliesSourcePositionAttributes : appliesSourcePositionAttributes)
    }
}
impl NSAttributedString_NSAttributedStringCreateFromMarkdown for NSAttributedString {}
pub trait NSAttributedString_NSAttributedStringCreateFromMarkdown: Sized + std::ops::Deref {
    unsafe fn initWithContentsOfMarkdownFileAtURL_options_baseURL_error_(
        &self,
        markdownFile: NSURL,
        options: NSAttributedStringMarkdownParsingOptions,
        baseURL: NSURL,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfMarkdownFileAtURL : markdownFile, options : options, baseURL : baseURL, error : error)
    }
    unsafe fn initWithMarkdown_options_baseURL_error_(
        &self,
        markdown: NSData,
        options: NSAttributedStringMarkdownParsingOptions,
        baseURL: NSURL,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithMarkdown : markdown, options : options, baseURL : baseURL, error : error)
    }
    unsafe fn initWithMarkdownString_options_baseURL_error_(
        &self,
        markdownString: NSString,
        options: NSAttributedStringMarkdownParsingOptions,
        baseURL: NSURL,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithMarkdownString : markdownString, options : options, baseURL : baseURL, error : error)
    }
}
pub type NSAttributedStringFormattingOptions = NSUInteger;
impl NSAttributedString_NSAttributedStringFormatting for NSAttributedString {}
pub trait NSAttributedString_NSAttributedStringFormatting: Sized + std::ops::Deref {
    unsafe fn initWithFormat_options_locale_(
        &self,
        format: NSAttributedString,
        options: NSAttributedStringFormattingOptions,
        locale: NSLocale,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithFormat : format, options : options, locale : locale)
    }
    unsafe fn initWithFormat_options_locale_arguments_(
        &self,
        format: NSAttributedString,
        options: NSAttributedStringFormattingOptions,
        locale: NSLocale,
        arguments: va_list,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithFormat : format, options : options, locale : locale, arguments : arguments)
    }
    unsafe fn initWithFormat_options_locale_context_(
        &self,
        format: NSAttributedString,
        options: NSAttributedStringFormattingOptions,
        locale: NSLocale,
        context: NSDictionary,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithFormat : format, options : options, locale : locale, context : context)
    }
    unsafe fn initWithFormat_options_locale_context_arguments_(
        &self,
        format: NSAttributedString,
        options: NSAttributedStringFormattingOptions,
        locale: NSLocale,
        context: NSDictionary,
        arguments: va_list,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithFormat : format, options : options, locale : locale, context : context, arguments : arguments)
    }
    unsafe fn localizedAttributedStringWithFormat_(format: NSAttributedString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAttributedString").unwrap(), localizedAttributedStringWithFormat : format)
    }
    unsafe fn localizedAttributedStringWithFormat_options_(
        format: NSAttributedString,
        options: NSAttributedStringFormattingOptions,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAttributedString").unwrap(), localizedAttributedStringWithFormat : format, options : options)
    }
    unsafe fn localizedAttributedStringWithFormat_context_(
        format: NSAttributedString,
        context: NSDictionary,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAttributedString").unwrap(), localizedAttributedStringWithFormat : format, context : context)
    }
    unsafe fn localizedAttributedStringWithFormat_options_context_(
        format: NSAttributedString,
        options: NSAttributedStringFormattingOptions,
        context: NSDictionary,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAttributedString").unwrap(), localizedAttributedStringWithFormat : format, options : options, context : context)
    }
}
impl NSMutableAttributedString_NSMutableAttributedStringFormatting for NSMutableAttributedString {}
pub trait NSMutableAttributedString_NSMutableAttributedStringFormatting:
    Sized + std::ops::Deref
{
    unsafe fn appendLocalizedFormat_(&self, format: NSAttributedString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, appendLocalizedFormat : format)
    }
}
impl NSAttributedString_NSMorphology for NSAttributedString {}
pub trait NSAttributedString_NSMorphology: Sized + std::ops::Deref {
    unsafe fn attributedStringByInflectingString(&self) -> NSAttributedString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attributedStringByInflectingString)
    }
}
pub type NSPresentationIntentKind = NSInteger;
pub type NSPresentationIntentTableColumnAlignment = NSInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSPresentationIntent(pub id);
impl std::ops::Deref for NSPresentationIntent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSPresentationIntent {}
impl NSPresentationIntent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSPresentationIntent").unwrap(), alloc) })
    }
}
impl PNSCopying for NSPresentationIntent {}
impl PNSSecureCoding for NSPresentationIntent {}
impl INSObject for NSPresentationIntent {}
impl PNSObject for NSPresentationIntent {}
impl std::convert::TryFrom<NSObject> for NSPresentationIntent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSPresentationIntent, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSPresentationIntent").unwrap()) };
        if is_kind_of {
            Ok(NSPresentationIntent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSPresentationIntent")
        }
    }
}
impl INSPresentationIntent for NSPresentationIntent {}
pub trait INSPresentationIntent: 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 isEquivalentToPresentationIntent_(&self, other: NSPresentationIntent) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isEquivalentToPresentationIntent : other)
    }
    unsafe fn intentKind(&self) -> NSPresentationIntentKind
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, intentKind)
    }
    unsafe fn parentIntent(&self) -> NSPresentationIntent
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, parentIntent)
    }
    unsafe fn identity(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, identity)
    }
    unsafe fn ordinal(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ordinal)
    }
    unsafe fn columnAlignments(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, columnAlignments)
    }
    unsafe fn columnCount(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, columnCount)
    }
    unsafe fn headerLevel(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, headerLevel)
    }
    unsafe fn languageHint(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, languageHint)
    }
    unsafe fn column(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, column)
    }
    unsafe fn row(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, row)
    }
    unsafe fn indentationLevel(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, indentationLevel)
    }
    unsafe fn paragraphIntentWithIdentity_nestedInsideIntent_(
        identity: NSInteger,
        parent: NSPresentationIntent,
    ) -> NSPresentationIntent
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPresentationIntent").unwrap(), paragraphIntentWithIdentity : identity, nestedInsideIntent : parent)
    }
    unsafe fn headerIntentWithIdentity_level_nestedInsideIntent_(
        identity: NSInteger,
        level: NSInteger,
        parent: NSPresentationIntent,
    ) -> NSPresentationIntent
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPresentationIntent").unwrap(), headerIntentWithIdentity : identity, level : level, nestedInsideIntent : parent)
    }
    unsafe fn codeBlockIntentWithIdentity_languageHint_nestedInsideIntent_(
        identity: NSInteger,
        languageHint: NSString,
        parent: NSPresentationIntent,
    ) -> NSPresentationIntent
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPresentationIntent").unwrap(), codeBlockIntentWithIdentity : identity, languageHint : languageHint, nestedInsideIntent : parent)
    }
    unsafe fn thematicBreakIntentWithIdentity_nestedInsideIntent_(
        identity: NSInteger,
        parent: NSPresentationIntent,
    ) -> NSPresentationIntent
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPresentationIntent").unwrap(), thematicBreakIntentWithIdentity : identity, nestedInsideIntent : parent)
    }
    unsafe fn orderedListIntentWithIdentity_nestedInsideIntent_(
        identity: NSInteger,
        parent: NSPresentationIntent,
    ) -> NSPresentationIntent
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPresentationIntent").unwrap(), orderedListIntentWithIdentity : identity, nestedInsideIntent : parent)
    }
    unsafe fn unorderedListIntentWithIdentity_nestedInsideIntent_(
        identity: NSInteger,
        parent: NSPresentationIntent,
    ) -> NSPresentationIntent
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPresentationIntent").unwrap(), unorderedListIntentWithIdentity : identity, nestedInsideIntent : parent)
    }
    unsafe fn listItemIntentWithIdentity_ordinal_nestedInsideIntent_(
        identity: NSInteger,
        ordinal: NSInteger,
        parent: NSPresentationIntent,
    ) -> NSPresentationIntent
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPresentationIntent").unwrap(), listItemIntentWithIdentity : identity, ordinal : ordinal, nestedInsideIntent : parent)
    }
    unsafe fn blockQuoteIntentWithIdentity_nestedInsideIntent_(
        identity: NSInteger,
        parent: NSPresentationIntent,
    ) -> NSPresentationIntent
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPresentationIntent").unwrap(), blockQuoteIntentWithIdentity : identity, nestedInsideIntent : parent)
    }
    unsafe fn tableIntentWithIdentity_columnCount_alignments_nestedInsideIntent_(
        identity: NSInteger,
        columnCount: NSInteger,
        alignments: NSArray,
        parent: NSPresentationIntent,
    ) -> NSPresentationIntent
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPresentationIntent").unwrap(), tableIntentWithIdentity : identity, columnCount : columnCount, alignments : alignments, nestedInsideIntent : parent)
    }
    unsafe fn tableHeaderRowIntentWithIdentity_nestedInsideIntent_(
        identity: NSInteger,
        parent: NSPresentationIntent,
    ) -> NSPresentationIntent
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPresentationIntent").unwrap(), tableHeaderRowIntentWithIdentity : identity, nestedInsideIntent : parent)
    }
    unsafe fn tableRowIntentWithIdentity_row_nestedInsideIntent_(
        identity: NSInteger,
        row: NSInteger,
        parent: NSPresentationIntent,
    ) -> NSPresentationIntent
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPresentationIntent").unwrap(), tableRowIntentWithIdentity : identity, row : row, nestedInsideIntent : parent)
    }
    unsafe fn tableCellIntentWithIdentity_column_nestedInsideIntent_(
        identity: NSInteger,
        column: NSInteger,
        parent: NSPresentationIntent,
    ) -> NSPresentationIntent
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPresentationIntent").unwrap(), tableCellIntentWithIdentity : identity, column : column, nestedInsideIntent : parent)
    }
}
pub type NSFormattingContext = NSInteger;
pub type NSFormattingUnitStyle = NSInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSFormatter(pub id);
impl std::ops::Deref for NSFormatter {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSFormatter {}
impl NSFormatter {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSFormatter").unwrap(), alloc) })
    }
}
impl PNSCopying for NSFormatter {}
impl PNSCoding for NSFormatter {}
impl INSObject for NSFormatter {}
impl PNSObject for NSFormatter {}
impl std::convert::TryFrom<NSObject> for NSFormatter {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSFormatter, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSFormatter").unwrap()) };
        if is_kind_of {
            Ok(NSFormatter(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSFormatter")
        }
    }
}
impl INSFormatter for NSFormatter {}
pub trait INSFormatter: Sized + std::ops::Deref {
    unsafe fn stringForObjectValue_(&self, obj: id) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringForObjectValue : obj)
    }
    unsafe fn attributedStringForObjectValue_withDefaultAttributes_(
        &self,
        obj: id,
        attrs: NSDictionary,
    ) -> NSAttributedString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, attributedStringForObjectValue : obj, withDefaultAttributes : attrs)
    }
    unsafe fn editingStringForObjectValue_(&self, obj: id) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, editingStringForObjectValue : obj)
    }
    unsafe fn getObjectValue_forString_errorDescription_(
        &self,
        obj: *mut id,
        string: NSString,
        error: *mut NSString,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getObjectValue : obj, forString : string, errorDescription : error)
    }
    unsafe fn isPartialStringValid_newEditingString_errorDescription_(
        &self,
        partialString: NSString,
        newString: *mut NSString,
        error: *mut NSString,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isPartialStringValid : partialString, newEditingString : newString, errorDescription : error)
    }
    unsafe fn isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_(
        &self,
        partialStringPtr: *mut NSString,
        proposedSelRangePtr: NSRangePointer,
        origString: NSString,
        origSelRange: NSRange,
        error: *mut NSString,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isPartialStringValid : partialStringPtr, proposedSelectedRange : proposedSelRangePtr, originalString : origString, originalSelectedRange : origSelRange, errorDescription : error)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSDateFormatter(pub id);
impl std::ops::Deref for NSDateFormatter {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSDateFormatter {}
impl NSDateFormatter {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSDateFormatter").unwrap(), alloc) })
    }
}
impl INSFormatter for NSDateFormatter {}
impl PNSCopying for NSDateFormatter {}
impl PNSCoding for NSDateFormatter {}
impl From<NSDateFormatter> for NSFormatter {
    fn from(child: NSDateFormatter) -> NSFormatter {
        NSFormatter(child.0)
    }
}
impl std::convert::TryFrom<NSFormatter> for NSDateFormatter {
    type Error = &'static str;
    fn try_from(parent: NSFormatter) -> Result<NSDateFormatter, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSDateFormatter").unwrap()) };
        if is_kind_of {
            Ok(NSDateFormatter(parent.0))
        } else {
            Err("This NSFormatter cannot be downcasted to NSDateFormatter")
        }
    }
}
impl INSObject for NSDateFormatter {}
impl PNSObject for NSDateFormatter {}
impl INSDateFormatter for NSDateFormatter {}
pub trait INSDateFormatter: Sized + std::ops::Deref {
    unsafe fn getObjectValue_forString_range_error_(
        &self,
        obj: *mut id,
        string: NSString,
        rangep: *mut NSRange,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getObjectValue : obj, forString : string, range : rangep, error : error)
    }
    unsafe fn stringFromDate_(&self, date: NSDate) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringFromDate : date)
    }
    unsafe fn dateFromString_(&self, string: NSString) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dateFromString : string)
    }
    unsafe fn setLocalizedDateFormatFromTemplate_(&self, dateFormatTemplate: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocalizedDateFormatFromTemplate : dateFormatTemplate)
    }
    unsafe fn formattingContext(&self) -> NSFormattingContext
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, formattingContext)
    }
    unsafe fn setFormattingContext_(&self, formattingContext: NSFormattingContext)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFormattingContext : formattingContext)
    }
    unsafe fn dateFormat(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dateFormat)
    }
    unsafe fn setDateFormat_(&self, dateFormat: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDateFormat : dateFormat)
    }
    unsafe fn dateStyle(&self) -> NSDateFormatterStyle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dateStyle)
    }
    unsafe fn setDateStyle_(&self, dateStyle: NSDateFormatterStyle)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDateStyle : dateStyle)
    }
    unsafe fn timeStyle(&self) -> NSDateFormatterStyle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeStyle)
    }
    unsafe fn setTimeStyle_(&self, timeStyle: NSDateFormatterStyle)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeStyle : timeStyle)
    }
    unsafe fn locale(&self) -> NSLocale
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, locale)
    }
    unsafe fn setLocale_(&self, locale: NSLocale)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocale : locale)
    }
    unsafe fn generatesCalendarDates(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, generatesCalendarDates)
    }
    unsafe fn setGeneratesCalendarDates_(&self, generatesCalendarDates: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGeneratesCalendarDates : generatesCalendarDates)
    }
    unsafe fn formatterBehavior(&self) -> NSDateFormatterBehavior
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, formatterBehavior)
    }
    unsafe fn setFormatterBehavior_(&self, formatterBehavior: NSDateFormatterBehavior)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFormatterBehavior : formatterBehavior)
    }
    unsafe fn timeZone(&self) -> NSTimeZone
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeZone)
    }
    unsafe fn setTimeZone_(&self, timeZone: NSTimeZone)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeZone : timeZone)
    }
    unsafe fn calendar(&self) -> NSCalendar
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, calendar)
    }
    unsafe fn setCalendar_(&self, calendar: NSCalendar)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCalendar : calendar)
    }
    unsafe fn isLenient(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isLenient)
    }
    unsafe fn setLenient_(&self, lenient: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLenient : lenient)
    }
    unsafe fn twoDigitStartDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, twoDigitStartDate)
    }
    unsafe fn setTwoDigitStartDate_(&self, twoDigitStartDate: NSDate)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTwoDigitStartDate : twoDigitStartDate)
    }
    unsafe fn defaultDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, defaultDate)
    }
    unsafe fn setDefaultDate_(&self, defaultDate: NSDate)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDefaultDate : defaultDate)
    }
    unsafe fn eraSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, eraSymbols)
    }
    unsafe fn setEraSymbols_(&self, eraSymbols: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEraSymbols : eraSymbols)
    }
    unsafe fn monthSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, monthSymbols)
    }
    unsafe fn setMonthSymbols_(&self, monthSymbols: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMonthSymbols : monthSymbols)
    }
    unsafe fn shortMonthSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shortMonthSymbols)
    }
    unsafe fn setShortMonthSymbols_(&self, shortMonthSymbols: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setShortMonthSymbols : shortMonthSymbols)
    }
    unsafe fn weekdaySymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, weekdaySymbols)
    }
    unsafe fn setWeekdaySymbols_(&self, weekdaySymbols: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWeekdaySymbols : weekdaySymbols)
    }
    unsafe fn shortWeekdaySymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shortWeekdaySymbols)
    }
    unsafe fn setShortWeekdaySymbols_(&self, shortWeekdaySymbols: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setShortWeekdaySymbols : shortWeekdaySymbols)
    }
    unsafe fn AMSymbol(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, AMSymbol)
    }
    unsafe fn setAMSymbol_(&self, AMSymbol: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAMSymbol : AMSymbol)
    }
    unsafe fn PMSymbol(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, PMSymbol)
    }
    unsafe fn setPMSymbol_(&self, PMSymbol: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPMSymbol : PMSymbol)
    }
    unsafe fn longEraSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, longEraSymbols)
    }
    unsafe fn setLongEraSymbols_(&self, longEraSymbols: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLongEraSymbols : longEraSymbols)
    }
    unsafe fn veryShortMonthSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, veryShortMonthSymbols)
    }
    unsafe fn setVeryShortMonthSymbols_(&self, veryShortMonthSymbols: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVeryShortMonthSymbols : veryShortMonthSymbols)
    }
    unsafe fn standaloneMonthSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, standaloneMonthSymbols)
    }
    unsafe fn setStandaloneMonthSymbols_(&self, standaloneMonthSymbols: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStandaloneMonthSymbols : standaloneMonthSymbols)
    }
    unsafe fn shortStandaloneMonthSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shortStandaloneMonthSymbols)
    }
    unsafe fn setShortStandaloneMonthSymbols_(&self, shortStandaloneMonthSymbols: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setShortStandaloneMonthSymbols : shortStandaloneMonthSymbols)
    }
    unsafe fn veryShortStandaloneMonthSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, veryShortStandaloneMonthSymbols)
    }
    unsafe fn setVeryShortStandaloneMonthSymbols_(&self, veryShortStandaloneMonthSymbols: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVeryShortStandaloneMonthSymbols : veryShortStandaloneMonthSymbols)
    }
    unsafe fn veryShortWeekdaySymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, veryShortWeekdaySymbols)
    }
    unsafe fn setVeryShortWeekdaySymbols_(&self, veryShortWeekdaySymbols: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVeryShortWeekdaySymbols : veryShortWeekdaySymbols)
    }
    unsafe fn standaloneWeekdaySymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, standaloneWeekdaySymbols)
    }
    unsafe fn setStandaloneWeekdaySymbols_(&self, standaloneWeekdaySymbols: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStandaloneWeekdaySymbols : standaloneWeekdaySymbols)
    }
    unsafe fn shortStandaloneWeekdaySymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shortStandaloneWeekdaySymbols)
    }
    unsafe fn setShortStandaloneWeekdaySymbols_(&self, shortStandaloneWeekdaySymbols: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setShortStandaloneWeekdaySymbols : shortStandaloneWeekdaySymbols)
    }
    unsafe fn veryShortStandaloneWeekdaySymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, veryShortStandaloneWeekdaySymbols)
    }
    unsafe fn setVeryShortStandaloneWeekdaySymbols_(
        &self,
        veryShortStandaloneWeekdaySymbols: NSArray,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVeryShortStandaloneWeekdaySymbols : veryShortStandaloneWeekdaySymbols)
    }
    unsafe fn quarterSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, quarterSymbols)
    }
    unsafe fn setQuarterSymbols_(&self, quarterSymbols: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setQuarterSymbols : quarterSymbols)
    }
    unsafe fn shortQuarterSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shortQuarterSymbols)
    }
    unsafe fn setShortQuarterSymbols_(&self, shortQuarterSymbols: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setShortQuarterSymbols : shortQuarterSymbols)
    }
    unsafe fn standaloneQuarterSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, standaloneQuarterSymbols)
    }
    unsafe fn setStandaloneQuarterSymbols_(&self, standaloneQuarterSymbols: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStandaloneQuarterSymbols : standaloneQuarterSymbols)
    }
    unsafe fn shortStandaloneQuarterSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shortStandaloneQuarterSymbols)
    }
    unsafe fn setShortStandaloneQuarterSymbols_(&self, shortStandaloneQuarterSymbols: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setShortStandaloneQuarterSymbols : shortStandaloneQuarterSymbols)
    }
    unsafe fn gregorianStartDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, gregorianStartDate)
    }
    unsafe fn setGregorianStartDate_(&self, gregorianStartDate: NSDate)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGregorianStartDate : gregorianStartDate)
    }
    unsafe fn doesRelativeDateFormatting(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, doesRelativeDateFormatting)
    }
    unsafe fn setDoesRelativeDateFormatting_(&self, doesRelativeDateFormatting: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDoesRelativeDateFormatting : doesRelativeDateFormatting)
    }
    unsafe fn localizedStringFromDate_dateStyle_timeStyle_(
        date: NSDate,
        dstyle: NSDateFormatterStyle,
        tstyle: NSDateFormatterStyle,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDateFormatter").unwrap(), localizedStringFromDate : date, dateStyle : dstyle, timeStyle : tstyle)
    }
    unsafe fn dateFormatFromTemplate_options_locale_(
        tmplate: NSString,
        opts: NSUInteger,
        locale: NSLocale,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDateFormatter").unwrap(), dateFormatFromTemplate : tmplate, options : opts, locale : locale)
    }
    unsafe fn defaultFormatterBehavior() -> NSDateFormatterBehavior
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDateFormatter").unwrap(), defaultFormatterBehavior)
    }
    unsafe fn setDefaultFormatterBehavior_(defaultFormatterBehavior: NSDateFormatterBehavior)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDateFormatter").unwrap(), setDefaultFormatterBehavior : defaultFormatterBehavior)
    }
}
pub type NSDateFormatterStyle = NSUInteger;
pub type NSDateFormatterBehavior = NSUInteger;
impl NSDateFormatter_NSDateFormatterCompatibility for NSDateFormatter {}
pub trait NSDateFormatter_NSDateFormatterCompatibility: Sized + std::ops::Deref {
    unsafe fn initWithDateFormat_allowNaturalLanguage_(&self, format: NSString, flag: BOOL) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDateFormat : format, allowNaturalLanguage : flag)
    }
    unsafe fn allowsNaturalLanguage(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowsNaturalLanguage)
    }
}
pub type NSDateIntervalFormatterStyle = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSDateIntervalFormatter(pub id);
impl std::ops::Deref for NSDateIntervalFormatter {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSDateIntervalFormatter {}
impl NSDateIntervalFormatter {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSDateIntervalFormatter").unwrap(), alloc) })
    }
}
impl INSFormatter for NSDateIntervalFormatter {}
impl PNSCopying for NSDateIntervalFormatter {}
impl PNSCoding for NSDateIntervalFormatter {}
impl std::convert::TryFrom<NSFormatter> for NSDateIntervalFormatter {
    type Error = &'static str;
    fn try_from(parent: NSFormatter) -> Result<NSDateIntervalFormatter, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSDateIntervalFormatter").unwrap()) };
        if is_kind_of {
            Ok(NSDateIntervalFormatter(parent.0))
        } else {
            Err("This NSFormatter cannot be downcasted to NSDateIntervalFormatter")
        }
    }
}
impl INSObject for NSDateIntervalFormatter {}
impl PNSObject for NSDateIntervalFormatter {}
impl INSDateIntervalFormatter for NSDateIntervalFormatter {}
pub trait INSDateIntervalFormatter: Sized + std::ops::Deref {
    unsafe fn stringFromDate_toDate_(&self, fromDate: NSDate, toDate: NSDate) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringFromDate : fromDate, toDate : toDate)
    }
    unsafe fn stringFromDateInterval_(&self, dateInterval: NSDateInterval) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringFromDateInterval : dateInterval)
    }
    unsafe fn locale(&self) -> NSLocale
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, locale)
    }
    unsafe fn setLocale_(&self, locale: NSLocale)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocale : locale)
    }
    unsafe fn calendar(&self) -> NSCalendar
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, calendar)
    }
    unsafe fn setCalendar_(&self, calendar: NSCalendar)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCalendar : calendar)
    }
    unsafe fn timeZone(&self) -> NSTimeZone
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeZone)
    }
    unsafe fn setTimeZone_(&self, timeZone: NSTimeZone)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeZone : timeZone)
    }
    unsafe fn dateTemplate(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dateTemplate)
    }
    unsafe fn setDateTemplate_(&self, dateTemplate: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDateTemplate : dateTemplate)
    }
    unsafe fn dateStyle(&self) -> NSDateIntervalFormatterStyle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dateStyle)
    }
    unsafe fn setDateStyle_(&self, dateStyle: NSDateIntervalFormatterStyle)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDateStyle : dateStyle)
    }
    unsafe fn timeStyle(&self) -> NSDateIntervalFormatterStyle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeStyle)
    }
    unsafe fn setTimeStyle_(&self, timeStyle: NSDateIntervalFormatterStyle)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeStyle : timeStyle)
    }
}
pub type NSISO8601DateFormatOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSISO8601DateFormatter(pub id);
impl std::ops::Deref for NSISO8601DateFormatter {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSISO8601DateFormatter {}
impl NSISO8601DateFormatter {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSISO8601DateFormatter").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSISO8601DateFormatter {}
impl INSFormatter for NSISO8601DateFormatter {}
impl PNSCopying for NSISO8601DateFormatter {}
impl PNSCoding for NSISO8601DateFormatter {}
impl std::convert::TryFrom<NSFormatter> for NSISO8601DateFormatter {
    type Error = &'static str;
    fn try_from(parent: NSFormatter) -> Result<NSISO8601DateFormatter, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSISO8601DateFormatter").unwrap()) };
        if is_kind_of {
            Ok(NSISO8601DateFormatter(parent.0))
        } else {
            Err("This NSFormatter cannot be downcasted to NSISO8601DateFormatter")
        }
    }
}
impl INSObject for NSISO8601DateFormatter {}
impl PNSObject for NSISO8601DateFormatter {}
impl INSISO8601DateFormatter for NSISO8601DateFormatter {}
pub trait INSISO8601DateFormatter: 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 stringFromDate_(&self, date: NSDate) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringFromDate : date)
    }
    unsafe fn dateFromString_(&self, string: NSString) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dateFromString : string)
    }
    unsafe fn timeZone(&self) -> NSTimeZone
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeZone)
    }
    unsafe fn setTimeZone_(&self, timeZone: NSTimeZone)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeZone : timeZone)
    }
    unsafe fn formatOptions(&self) -> NSISO8601DateFormatOptions
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, formatOptions)
    }
    unsafe fn setFormatOptions_(&self, formatOptions: NSISO8601DateFormatOptions)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFormatOptions : formatOptions)
    }
    unsafe fn stringFromDate_timeZone_formatOptions_(
        date: NSDate,
        timeZone: NSTimeZone,
        formatOptions: NSISO8601DateFormatOptions,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSISO8601DateFormatter").unwrap(), stringFromDate : date, timeZone : timeZone, formatOptions : formatOptions)
    }
}
pub type NSMassFormatterUnit = NSInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMassFormatter(pub id);
impl std::ops::Deref for NSMassFormatter {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMassFormatter {}
impl NSMassFormatter {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMassFormatter").unwrap(), alloc) })
    }
}
impl INSFormatter for NSMassFormatter {}
impl PNSCopying for NSMassFormatter {}
impl PNSCoding for NSMassFormatter {}
impl std::convert::TryFrom<NSFormatter> for NSMassFormatter {
    type Error = &'static str;
    fn try_from(parent: NSFormatter) -> Result<NSMassFormatter, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMassFormatter").unwrap()) };
        if is_kind_of {
            Ok(NSMassFormatter(parent.0))
        } else {
            Err("This NSFormatter cannot be downcasted to NSMassFormatter")
        }
    }
}
impl INSObject for NSMassFormatter {}
impl PNSObject for NSMassFormatter {}
impl INSMassFormatter for NSMassFormatter {}
pub trait INSMassFormatter: Sized + std::ops::Deref {
    unsafe fn stringFromValue_unit_(&self, value: f64, unit: NSMassFormatterUnit) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringFromValue : value, unit : unit)
    }
    unsafe fn stringFromKilograms_(&self, numberInKilograms: f64) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringFromKilograms : numberInKilograms)
    }
    unsafe fn unitStringFromValue_unit_(&self, value: f64, unit: NSMassFormatterUnit) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unitStringFromValue : value, unit : unit)
    }
    unsafe fn unitStringFromKilograms_usedUnit_(
        &self,
        numberInKilograms: f64,
        unitp: *mut NSMassFormatterUnit,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unitStringFromKilograms : numberInKilograms, usedUnit : unitp)
    }
    unsafe fn getObjectValue_forString_errorDescription_(
        &self,
        obj: *mut id,
        string: NSString,
        error: *mut NSString,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getObjectValue : obj, forString : string, errorDescription : error)
    }
    unsafe fn numberFormatter(&self) -> NSNumberFormatter
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, numberFormatter)
    }
    unsafe fn setNumberFormatter_(&self, numberFormatter: NSNumberFormatter)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNumberFormatter : numberFormatter)
    }
    unsafe fn unitStyle(&self) -> NSFormattingUnitStyle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, unitStyle)
    }
    unsafe fn setUnitStyle_(&self, unitStyle: NSFormattingUnitStyle)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUnitStyle : unitStyle)
    }
    unsafe fn isForPersonMassUse(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isForPersonMassUse)
    }
    unsafe fn setForPersonMassUse_(&self, forPersonMassUse: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setForPersonMassUse : forPersonMassUse)
    }
}
pub type NSLengthFormatterUnit = NSInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSLengthFormatter(pub id);
impl std::ops::Deref for NSLengthFormatter {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSLengthFormatter {}
impl NSLengthFormatter {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSLengthFormatter").unwrap(), alloc) })
    }
}
impl INSFormatter for NSLengthFormatter {}
impl PNSCopying for NSLengthFormatter {}
impl PNSCoding for NSLengthFormatter {}
impl std::convert::TryFrom<NSFormatter> for NSLengthFormatter {
    type Error = &'static str;
    fn try_from(parent: NSFormatter) -> Result<NSLengthFormatter, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSLengthFormatter").unwrap()) };
        if is_kind_of {
            Ok(NSLengthFormatter(parent.0))
        } else {
            Err("This NSFormatter cannot be downcasted to NSLengthFormatter")
        }
    }
}
impl INSObject for NSLengthFormatter {}
impl PNSObject for NSLengthFormatter {}
impl INSLengthFormatter for NSLengthFormatter {}
pub trait INSLengthFormatter: Sized + std::ops::Deref {
    unsafe fn stringFromValue_unit_(&self, value: f64, unit: NSLengthFormatterUnit) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringFromValue : value, unit : unit)
    }
    unsafe fn stringFromMeters_(&self, numberInMeters: f64) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringFromMeters : numberInMeters)
    }
    unsafe fn unitStringFromValue_unit_(&self, value: f64, unit: NSLengthFormatterUnit) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unitStringFromValue : value, unit : unit)
    }
    unsafe fn unitStringFromMeters_usedUnit_(
        &self,
        numberInMeters: f64,
        unitp: *mut NSLengthFormatterUnit,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unitStringFromMeters : numberInMeters, usedUnit : unitp)
    }
    unsafe fn getObjectValue_forString_errorDescription_(
        &self,
        obj: *mut id,
        string: NSString,
        error: *mut NSString,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getObjectValue : obj, forString : string, errorDescription : error)
    }
    unsafe fn numberFormatter(&self) -> NSNumberFormatter
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, numberFormatter)
    }
    unsafe fn setNumberFormatter_(&self, numberFormatter: NSNumberFormatter)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNumberFormatter : numberFormatter)
    }
    unsafe fn unitStyle(&self) -> NSFormattingUnitStyle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, unitStyle)
    }
    unsafe fn setUnitStyle_(&self, unitStyle: NSFormattingUnitStyle)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUnitStyle : unitStyle)
    }
    unsafe fn isForPersonHeightUse(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isForPersonHeightUse)
    }
    unsafe fn setForPersonHeightUse_(&self, forPersonHeightUse: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setForPersonHeightUse : forPersonHeightUse)
    }
}
pub type NSEnergyFormatterUnit = NSInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSEnergyFormatter(pub id);
impl std::ops::Deref for NSEnergyFormatter {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSEnergyFormatter {}
impl NSEnergyFormatter {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSEnergyFormatter").unwrap(), alloc) })
    }
}
impl INSFormatter for NSEnergyFormatter {}
impl PNSCopying for NSEnergyFormatter {}
impl PNSCoding for NSEnergyFormatter {}
impl std::convert::TryFrom<NSFormatter> for NSEnergyFormatter {
    type Error = &'static str;
    fn try_from(parent: NSFormatter) -> Result<NSEnergyFormatter, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSEnergyFormatter").unwrap()) };
        if is_kind_of {
            Ok(NSEnergyFormatter(parent.0))
        } else {
            Err("This NSFormatter cannot be downcasted to NSEnergyFormatter")
        }
    }
}
impl INSObject for NSEnergyFormatter {}
impl PNSObject for NSEnergyFormatter {}
impl INSEnergyFormatter for NSEnergyFormatter {}
pub trait INSEnergyFormatter: Sized + std::ops::Deref {
    unsafe fn stringFromValue_unit_(&self, value: f64, unit: NSEnergyFormatterUnit) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringFromValue : value, unit : unit)
    }
    unsafe fn stringFromJoules_(&self, numberInJoules: f64) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringFromJoules : numberInJoules)
    }
    unsafe fn unitStringFromValue_unit_(&self, value: f64, unit: NSEnergyFormatterUnit) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unitStringFromValue : value, unit : unit)
    }
    unsafe fn unitStringFromJoules_usedUnit_(
        &self,
        numberInJoules: f64,
        unitp: *mut NSEnergyFormatterUnit,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unitStringFromJoules : numberInJoules, usedUnit : unitp)
    }
    unsafe fn getObjectValue_forString_errorDescription_(
        &self,
        obj: *mut id,
        string: NSString,
        error: *mut NSString,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getObjectValue : obj, forString : string, errorDescription : error)
    }
    unsafe fn numberFormatter(&self) -> NSNumberFormatter
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, numberFormatter)
    }
    unsafe fn setNumberFormatter_(&self, numberFormatter: NSNumberFormatter)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNumberFormatter : numberFormatter)
    }
    unsafe fn unitStyle(&self) -> NSFormattingUnitStyle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, unitStyle)
    }
    unsafe fn setUnitStyle_(&self, unitStyle: NSFormattingUnitStyle)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUnitStyle : unitStyle)
    }
    unsafe fn isForFoodEnergyUse(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isForFoodEnergyUse)
    }
    unsafe fn setForFoodEnergyUse_(&self, forFoodEnergyUse: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setForFoodEnergyUse : forFoodEnergyUse)
    }
}
pub type NSNumberFormatterBehavior = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSNumberFormatter(pub id);
impl std::ops::Deref for NSNumberFormatter {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSNumberFormatter {}
impl NSNumberFormatter {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSNumberFormatter").unwrap(), alloc) })
    }
}
impl INSFormatter for NSNumberFormatter {}
impl PNSCopying for NSNumberFormatter {}
impl PNSCoding for NSNumberFormatter {}
impl std::convert::TryFrom<NSFormatter> for NSNumberFormatter {
    type Error = &'static str;
    fn try_from(parent: NSFormatter) -> Result<NSNumberFormatter, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSNumberFormatter").unwrap()) };
        if is_kind_of {
            Ok(NSNumberFormatter(parent.0))
        } else {
            Err("This NSFormatter cannot be downcasted to NSNumberFormatter")
        }
    }
}
impl INSObject for NSNumberFormatter {}
impl PNSObject for NSNumberFormatter {}
impl INSNumberFormatter for NSNumberFormatter {}
pub trait INSNumberFormatter: Sized + std::ops::Deref {
    unsafe fn getObjectValue_forString_range_error_(
        &self,
        obj: *mut id,
        string: NSString,
        rangep: *mut NSRange,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getObjectValue : obj, forString : string, range : rangep, error : error)
    }
    unsafe fn stringFromNumber_(&self, number: NSNumber) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringFromNumber : number)
    }
    unsafe fn numberFromString_(&self, string: NSString) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, numberFromString : string)
    }
    unsafe fn formattingContext(&self) -> NSFormattingContext
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, formattingContext)
    }
    unsafe fn setFormattingContext_(&self, formattingContext: NSFormattingContext)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFormattingContext : formattingContext)
    }
    unsafe fn minimumGroupingDigits(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minimumGroupingDigits)
    }
    unsafe fn setMinimumGroupingDigits_(&self, minimumGroupingDigits: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinimumGroupingDigits : minimumGroupingDigits)
    }
    unsafe fn numberStyle(&self) -> NSNumberFormatterStyle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, numberStyle)
    }
    unsafe fn setNumberStyle_(&self, numberStyle: NSNumberFormatterStyle)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNumberStyle : numberStyle)
    }
    unsafe fn locale(&self) -> NSLocale
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, locale)
    }
    unsafe fn setLocale_(&self, locale: NSLocale)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocale : locale)
    }
    unsafe fn generatesDecimalNumbers(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, generatesDecimalNumbers)
    }
    unsafe fn setGeneratesDecimalNumbers_(&self, generatesDecimalNumbers: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGeneratesDecimalNumbers : generatesDecimalNumbers)
    }
    unsafe fn formatterBehavior(&self) -> NSNumberFormatterBehavior
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, formatterBehavior)
    }
    unsafe fn setFormatterBehavior_(&self, formatterBehavior: NSNumberFormatterBehavior)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFormatterBehavior : formatterBehavior)
    }
    unsafe fn negativeFormat(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, negativeFormat)
    }
    unsafe fn setNegativeFormat_(&self, negativeFormat: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNegativeFormat : negativeFormat)
    }
    unsafe fn textAttributesForNegativeValues(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, textAttributesForNegativeValues)
    }
    unsafe fn setTextAttributesForNegativeValues_(
        &self,
        textAttributesForNegativeValues: NSDictionary,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTextAttributesForNegativeValues : textAttributesForNegativeValues)
    }
    unsafe fn positiveFormat(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, positiveFormat)
    }
    unsafe fn setPositiveFormat_(&self, positiveFormat: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPositiveFormat : positiveFormat)
    }
    unsafe fn textAttributesForPositiveValues(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, textAttributesForPositiveValues)
    }
    unsafe fn setTextAttributesForPositiveValues_(
        &self,
        textAttributesForPositiveValues: NSDictionary,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTextAttributesForPositiveValues : textAttributesForPositiveValues)
    }
    unsafe fn allowsFloats(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowsFloats)
    }
    unsafe fn setAllowsFloats_(&self, allowsFloats: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAllowsFloats : allowsFloats)
    }
    unsafe fn decimalSeparator(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, decimalSeparator)
    }
    unsafe fn setDecimalSeparator_(&self, decimalSeparator: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDecimalSeparator : decimalSeparator)
    }
    unsafe fn alwaysShowsDecimalSeparator(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, alwaysShowsDecimalSeparator)
    }
    unsafe fn setAlwaysShowsDecimalSeparator_(&self, alwaysShowsDecimalSeparator: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAlwaysShowsDecimalSeparator : alwaysShowsDecimalSeparator)
    }
    unsafe fn currencyDecimalSeparator(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currencyDecimalSeparator)
    }
    unsafe fn setCurrencyDecimalSeparator_(&self, currencyDecimalSeparator: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrencyDecimalSeparator : currencyDecimalSeparator)
    }
    unsafe fn usesGroupingSeparator(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, usesGroupingSeparator)
    }
    unsafe fn setUsesGroupingSeparator_(&self, usesGroupingSeparator: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUsesGroupingSeparator : usesGroupingSeparator)
    }
    unsafe fn groupingSeparator(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupingSeparator)
    }
    unsafe fn setGroupingSeparator_(&self, groupingSeparator: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupingSeparator : groupingSeparator)
    }
    unsafe fn zeroSymbol(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, zeroSymbol)
    }
    unsafe fn setZeroSymbol_(&self, zeroSymbol: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setZeroSymbol : zeroSymbol)
    }
    unsafe fn textAttributesForZero(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, textAttributesForZero)
    }
    unsafe fn setTextAttributesForZero_(&self, textAttributesForZero: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTextAttributesForZero : textAttributesForZero)
    }
    unsafe fn nilSymbol(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nilSymbol)
    }
    unsafe fn setNilSymbol_(&self, nilSymbol: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNilSymbol : nilSymbol)
    }
    unsafe fn textAttributesForNil(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, textAttributesForNil)
    }
    unsafe fn setTextAttributesForNil_(&self, textAttributesForNil: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTextAttributesForNil : textAttributesForNil)
    }
    unsafe fn notANumberSymbol(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, notANumberSymbol)
    }
    unsafe fn setNotANumberSymbol_(&self, notANumberSymbol: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNotANumberSymbol : notANumberSymbol)
    }
    unsafe fn textAttributesForNotANumber(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, textAttributesForNotANumber)
    }
    unsafe fn setTextAttributesForNotANumber_(&self, textAttributesForNotANumber: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTextAttributesForNotANumber : textAttributesForNotANumber)
    }
    unsafe fn positiveInfinitySymbol(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, positiveInfinitySymbol)
    }
    unsafe fn setPositiveInfinitySymbol_(&self, positiveInfinitySymbol: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPositiveInfinitySymbol : positiveInfinitySymbol)
    }
    unsafe fn textAttributesForPositiveInfinity(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, textAttributesForPositiveInfinity)
    }
    unsafe fn setTextAttributesForPositiveInfinity_(
        &self,
        textAttributesForPositiveInfinity: NSDictionary,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTextAttributesForPositiveInfinity : textAttributesForPositiveInfinity)
    }
    unsafe fn negativeInfinitySymbol(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, negativeInfinitySymbol)
    }
    unsafe fn setNegativeInfinitySymbol_(&self, negativeInfinitySymbol: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNegativeInfinitySymbol : negativeInfinitySymbol)
    }
    unsafe fn textAttributesForNegativeInfinity(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, textAttributesForNegativeInfinity)
    }
    unsafe fn setTextAttributesForNegativeInfinity_(
        &self,
        textAttributesForNegativeInfinity: NSDictionary,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTextAttributesForNegativeInfinity : textAttributesForNegativeInfinity)
    }
    unsafe fn positivePrefix(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, positivePrefix)
    }
    unsafe fn setPositivePrefix_(&self, positivePrefix: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPositivePrefix : positivePrefix)
    }
    unsafe fn positiveSuffix(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, positiveSuffix)
    }
    unsafe fn setPositiveSuffix_(&self, positiveSuffix: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPositiveSuffix : positiveSuffix)
    }
    unsafe fn negativePrefix(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, negativePrefix)
    }
    unsafe fn setNegativePrefix_(&self, negativePrefix: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNegativePrefix : negativePrefix)
    }
    unsafe fn negativeSuffix(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, negativeSuffix)
    }
    unsafe fn setNegativeSuffix_(&self, negativeSuffix: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNegativeSuffix : negativeSuffix)
    }
    unsafe fn currencyCode(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currencyCode)
    }
    unsafe fn setCurrencyCode_(&self, currencyCode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrencyCode : currencyCode)
    }
    unsafe fn currencySymbol(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currencySymbol)
    }
    unsafe fn setCurrencySymbol_(&self, currencySymbol: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrencySymbol : currencySymbol)
    }
    unsafe fn internationalCurrencySymbol(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, internationalCurrencySymbol)
    }
    unsafe fn setInternationalCurrencySymbol_(&self, internationalCurrencySymbol: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInternationalCurrencySymbol : internationalCurrencySymbol)
    }
    unsafe fn percentSymbol(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, percentSymbol)
    }
    unsafe fn setPercentSymbol_(&self, percentSymbol: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPercentSymbol : percentSymbol)
    }
    unsafe fn perMillSymbol(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, perMillSymbol)
    }
    unsafe fn setPerMillSymbol_(&self, perMillSymbol: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPerMillSymbol : perMillSymbol)
    }
    unsafe fn minusSign(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minusSign)
    }
    unsafe fn setMinusSign_(&self, minusSign: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinusSign : minusSign)
    }
    unsafe fn plusSign(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, plusSign)
    }
    unsafe fn setPlusSign_(&self, plusSign: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPlusSign : plusSign)
    }
    unsafe fn exponentSymbol(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, exponentSymbol)
    }
    unsafe fn setExponentSymbol_(&self, exponentSymbol: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExponentSymbol : exponentSymbol)
    }
    unsafe fn groupingSize(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupingSize)
    }
    unsafe fn setGroupingSize_(&self, groupingSize: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupingSize : groupingSize)
    }
    unsafe fn secondaryGroupingSize(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, secondaryGroupingSize)
    }
    unsafe fn setSecondaryGroupingSize_(&self, secondaryGroupingSize: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSecondaryGroupingSize : secondaryGroupingSize)
    }
    unsafe fn multiplier(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, multiplier)
    }
    unsafe fn setMultiplier_(&self, multiplier: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMultiplier : multiplier)
    }
    unsafe fn formatWidth(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, formatWidth)
    }
    unsafe fn setFormatWidth_(&self, formatWidth: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFormatWidth : formatWidth)
    }
    unsafe fn paddingCharacter(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, paddingCharacter)
    }
    unsafe fn setPaddingCharacter_(&self, paddingCharacter: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPaddingCharacter : paddingCharacter)
    }
    unsafe fn paddingPosition(&self) -> NSNumberFormatterPadPosition
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, paddingPosition)
    }
    unsafe fn setPaddingPosition_(&self, paddingPosition: NSNumberFormatterPadPosition)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPaddingPosition : paddingPosition)
    }
    unsafe fn roundingMode(&self) -> NSNumberFormatterRoundingMode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, roundingMode)
    }
    unsafe fn setRoundingMode_(&self, roundingMode: NSNumberFormatterRoundingMode)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRoundingMode : roundingMode)
    }
    unsafe fn roundingIncrement(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, roundingIncrement)
    }
    unsafe fn setRoundingIncrement_(&self, roundingIncrement: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRoundingIncrement : roundingIncrement)
    }
    unsafe fn minimumIntegerDigits(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minimumIntegerDigits)
    }
    unsafe fn setMinimumIntegerDigits_(&self, minimumIntegerDigits: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinimumIntegerDigits : minimumIntegerDigits)
    }
    unsafe fn maximumIntegerDigits(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maximumIntegerDigits)
    }
    unsafe fn setMaximumIntegerDigits_(&self, maximumIntegerDigits: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaximumIntegerDigits : maximumIntegerDigits)
    }
    unsafe fn minimumFractionDigits(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minimumFractionDigits)
    }
    unsafe fn setMinimumFractionDigits_(&self, minimumFractionDigits: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinimumFractionDigits : minimumFractionDigits)
    }
    unsafe fn maximumFractionDigits(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maximumFractionDigits)
    }
    unsafe fn setMaximumFractionDigits_(&self, maximumFractionDigits: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaximumFractionDigits : maximumFractionDigits)
    }
    unsafe fn minimum(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minimum)
    }
    unsafe fn setMinimum_(&self, minimum: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinimum : minimum)
    }
    unsafe fn maximum(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maximum)
    }
    unsafe fn setMaximum_(&self, maximum: NSNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaximum : maximum)
    }
    unsafe fn currencyGroupingSeparator(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currencyGroupingSeparator)
    }
    unsafe fn setCurrencyGroupingSeparator_(&self, currencyGroupingSeparator: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrencyGroupingSeparator : currencyGroupingSeparator)
    }
    unsafe fn isLenient(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isLenient)
    }
    unsafe fn setLenient_(&self, lenient: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLenient : lenient)
    }
    unsafe fn usesSignificantDigits(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, usesSignificantDigits)
    }
    unsafe fn setUsesSignificantDigits_(&self, usesSignificantDigits: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUsesSignificantDigits : usesSignificantDigits)
    }
    unsafe fn minimumSignificantDigits(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minimumSignificantDigits)
    }
    unsafe fn setMinimumSignificantDigits_(&self, minimumSignificantDigits: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMinimumSignificantDigits : minimumSignificantDigits)
    }
    unsafe fn maximumSignificantDigits(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maximumSignificantDigits)
    }
    unsafe fn setMaximumSignificantDigits_(&self, maximumSignificantDigits: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaximumSignificantDigits : maximumSignificantDigits)
    }
    unsafe fn isPartialStringValidationEnabled(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isPartialStringValidationEnabled)
    }
    unsafe fn setPartialStringValidationEnabled_(&self, partialStringValidationEnabled: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPartialStringValidationEnabled : partialStringValidationEnabled)
    }
    unsafe fn localizedStringFromNumber_numberStyle_(
        num: NSNumber,
        nstyle: NSNumberFormatterStyle,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNumberFormatter").unwrap(), localizedStringFromNumber : num, numberStyle : nstyle)
    }
    unsafe fn defaultFormatterBehavior() -> NSNumberFormatterBehavior
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNumberFormatter").unwrap(), defaultFormatterBehavior)
    }
    unsafe fn setDefaultFormatterBehavior_(behavior: NSNumberFormatterBehavior)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNumberFormatter").unwrap(), setDefaultFormatterBehavior : behavior)
    }
}
pub type NSNumberFormatterStyle = NSUInteger;
pub type NSNumberFormatterPadPosition = NSUInteger;
pub type NSNumberFormatterRoundingMode = NSUInteger;
impl NSNumberFormatter_NSNumberFormatterCompatibility for NSNumberFormatter {}
pub trait NSNumberFormatter_NSNumberFormatterCompatibility: Sized + std::ops::Deref {
    unsafe fn hasThousandSeparators(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hasThousandSeparators)
    }
    unsafe fn setHasThousandSeparators_(&self, hasThousandSeparators: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHasThousandSeparators : hasThousandSeparators)
    }
    unsafe fn thousandSeparator(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, thousandSeparator)
    }
    unsafe fn setThousandSeparator_(&self, thousandSeparator: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setThousandSeparator : thousandSeparator)
    }
    unsafe fn localizesFormat(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localizesFormat)
    }
    unsafe fn setLocalizesFormat_(&self, localizesFormat: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocalizesFormat : localizesFormat)
    }
    unsafe fn format(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, format)
    }
    unsafe fn setFormat_(&self, format: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFormat : format)
    }
    unsafe fn attributedStringForZero(&self) -> NSAttributedString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attributedStringForZero)
    }
    unsafe fn setAttributedStringForZero_(&self, attributedStringForZero: NSAttributedString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttributedStringForZero : attributedStringForZero)
    }
    unsafe fn attributedStringForNil(&self) -> NSAttributedString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attributedStringForNil)
    }
    unsafe fn setAttributedStringForNil_(&self, attributedStringForNil: NSAttributedString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttributedStringForNil : attributedStringForNil)
    }
    unsafe fn attributedStringForNotANumber(&self) -> NSAttributedString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attributedStringForNotANumber)
    }
    unsafe fn setAttributedStringForNotANumber_(
        &self,
        attributedStringForNotANumber: NSAttributedString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttributedStringForNotANumber : attributedStringForNotANumber)
    }
    unsafe fn roundingBehavior(&self) -> NSDecimalNumberHandler
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, roundingBehavior)
    }
    unsafe fn setRoundingBehavior_(&self, roundingBehavior: NSDecimalNumberHandler)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRoundingBehavior : roundingBehavior)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitConverter(pub id);
impl std::ops::Deref for NSUnitConverter {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitConverter {}
impl NSUnitConverter {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitConverter").unwrap(), alloc) })
    }
}
impl INSObject for NSUnitConverter {}
impl PNSObject for NSUnitConverter {}
impl std::convert::TryFrom<NSObject> for NSUnitConverter {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSUnitConverter, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitConverter").unwrap()) };
        if is_kind_of {
            Ok(NSUnitConverter(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSUnitConverter")
        }
    }
}
impl INSUnitConverter for NSUnitConverter {}
pub trait INSUnitConverter: Sized + std::ops::Deref {
    unsafe fn baseUnitValueFromValue_(&self, value: f64) -> f64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, baseUnitValueFromValue : value)
    }
    unsafe fn valueFromBaseUnitValue_(&self, baseUnitValue: f64) -> f64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, valueFromBaseUnitValue : baseUnitValue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitConverterLinear(pub id);
impl std::ops::Deref for NSUnitConverterLinear {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitConverterLinear {}
impl NSUnitConverterLinear {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitConverterLinear").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSUnitConverterLinear {}
impl INSUnitConverter for NSUnitConverterLinear {}
impl From<NSUnitConverterLinear> for NSUnitConverter {
    fn from(child: NSUnitConverterLinear) -> NSUnitConverter {
        NSUnitConverter(child.0)
    }
}
impl std::convert::TryFrom<NSUnitConverter> for NSUnitConverterLinear {
    type Error = &'static str;
    fn try_from(parent: NSUnitConverter) -> Result<NSUnitConverterLinear, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitConverterLinear").unwrap()) };
        if is_kind_of {
            Ok(NSUnitConverterLinear(parent.0))
        } else {
            Err("This NSUnitConverter cannot be downcasted to NSUnitConverterLinear")
        }
    }
}
impl INSObject for NSUnitConverterLinear {}
impl PNSObject for NSUnitConverterLinear {}
impl INSUnitConverterLinear for NSUnitConverterLinear {}
pub trait INSUnitConverterLinear: Sized + std::ops::Deref {
    unsafe fn initWithCoefficient_(&self, coefficient: f64) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoefficient : coefficient)
    }
    unsafe fn initWithCoefficient_constant_(&self, coefficient: f64, constant: f64) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoefficient : coefficient, constant : constant)
    }
    unsafe fn coefficient(&self) -> f64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, coefficient)
    }
    unsafe fn constant(&self) -> f64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, constant)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnit(pub id);
impl std::ops::Deref for NSUnit {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnit {}
impl NSUnit {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnit").unwrap(), alloc) })
    }
}
impl PNSCopying for NSUnit {}
impl PNSSecureCoding for NSUnit {}
impl INSObject for NSUnit {}
impl PNSObject for NSUnit {}
impl std::convert::TryFrom<NSObject> for NSUnit {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSUnit, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnit").unwrap()) };
        if is_kind_of {
            Ok(NSUnit(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSUnit")
        }
    }
}
impl INSUnit for NSUnit {}
pub trait INSUnit: 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 initWithSymbol_(&self, symbol: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithSymbol : symbol)
    }
    unsafe fn symbol(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, symbol)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnit").unwrap(), new)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSDimension(pub id);
impl std::ops::Deref for NSDimension {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSDimension {}
impl NSDimension {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSDimension").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSDimension {}
impl INSUnit for NSDimension {}
impl PNSCopying for NSDimension {}
impl From<NSDimension> for NSUnit {
    fn from(child: NSDimension) -> NSUnit {
        NSUnit(child.0)
    }
}
impl std::convert::TryFrom<NSUnit> for NSDimension {
    type Error = &'static str;
    fn try_from(parent: NSUnit) -> Result<NSDimension, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSDimension").unwrap()) };
        if is_kind_of {
            Ok(NSDimension(parent.0))
        } else {
            Err("This NSUnit cannot be downcasted to NSDimension")
        }
    }
}
impl INSObject for NSDimension {}
impl PNSObject for NSDimension {}
impl INSDimension for NSDimension {}
pub trait INSDimension: Sized + std::ops::Deref {
    unsafe fn initWithSymbol_converter_(
        &self,
        symbol: NSString,
        converter: NSUnitConverter,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithSymbol : symbol, converter : converter)
    }
    unsafe fn converter(&self) -> NSUnitConverter
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, converter)
    }
    unsafe fn baseUnit() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDimension").unwrap(), baseUnit)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitAcceleration(pub id);
impl std::ops::Deref for NSUnitAcceleration {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitAcceleration {}
impl NSUnitAcceleration {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitAcceleration").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSUnitAcceleration {}
impl INSDimension for NSUnitAcceleration {}
impl From<NSUnitAcceleration> for NSDimension {
    fn from(child: NSUnitAcceleration) -> NSDimension {
        NSDimension(child.0)
    }
}
impl std::convert::TryFrom<NSDimension> for NSUnitAcceleration {
    type Error = &'static str;
    fn try_from(parent: NSDimension) -> Result<NSUnitAcceleration, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitAcceleration").unwrap()) };
        if is_kind_of {
            Ok(NSUnitAcceleration(parent.0))
        } else {
            Err("This NSDimension cannot be downcasted to NSUnitAcceleration")
        }
    }
}
impl INSUnit for NSUnitAcceleration {}
impl PNSCopying for NSUnitAcceleration {}
impl INSObject for NSUnitAcceleration {}
impl PNSObject for NSUnitAcceleration {}
impl INSUnitAcceleration for NSUnitAcceleration {}
pub trait INSUnitAcceleration: Sized + std::ops::Deref {
    unsafe fn metersPerSecondSquared() -> NSUnitAcceleration
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitAcceleration").unwrap(), metersPerSecondSquared)
    }
    unsafe fn gravity() -> NSUnitAcceleration
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitAcceleration").unwrap(), gravity)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitAngle(pub id);
impl std::ops::Deref for NSUnitAngle {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitAngle {}
impl NSUnitAngle {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitAngle").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSUnitAngle {}
impl INSDimension for NSUnitAngle {}
impl std::convert::TryFrom<NSDimension> for NSUnitAngle {
    type Error = &'static str;
    fn try_from(parent: NSDimension) -> Result<NSUnitAngle, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitAngle").unwrap()) };
        if is_kind_of {
            Ok(NSUnitAngle(parent.0))
        } else {
            Err("This NSDimension cannot be downcasted to NSUnitAngle")
        }
    }
}
impl INSUnit for NSUnitAngle {}
impl PNSCopying for NSUnitAngle {}
impl INSObject for NSUnitAngle {}
impl PNSObject for NSUnitAngle {}
impl INSUnitAngle for NSUnitAngle {}
pub trait INSUnitAngle: Sized + std::ops::Deref {
    unsafe fn degrees() -> NSUnitAngle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitAngle").unwrap(), degrees)
    }
    unsafe fn arcMinutes() -> NSUnitAngle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitAngle").unwrap(), arcMinutes)
    }
    unsafe fn arcSeconds() -> NSUnitAngle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitAngle").unwrap(), arcSeconds)
    }
    unsafe fn radians() -> NSUnitAngle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitAngle").unwrap(), radians)
    }
    unsafe fn gradians() -> NSUnitAngle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitAngle").unwrap(), gradians)
    }
    unsafe fn revolutions() -> NSUnitAngle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitAngle").unwrap(), revolutions)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitArea(pub id);
impl std::ops::Deref for NSUnitArea {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitArea {}
impl NSUnitArea {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitArea").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSUnitArea {}
impl INSDimension for NSUnitArea {}
impl std::convert::TryFrom<NSDimension> for NSUnitArea {
    type Error = &'static str;
    fn try_from(parent: NSDimension) -> Result<NSUnitArea, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitArea").unwrap()) };
        if is_kind_of {
            Ok(NSUnitArea(parent.0))
        } else {
            Err("This NSDimension cannot be downcasted to NSUnitArea")
        }
    }
}
impl INSUnit for NSUnitArea {}
impl PNSCopying for NSUnitArea {}
impl INSObject for NSUnitArea {}
impl PNSObject for NSUnitArea {}
impl INSUnitArea for NSUnitArea {}
pub trait INSUnitArea: Sized + std::ops::Deref {
    unsafe fn squareMegameters() -> NSUnitArea
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitArea").unwrap(), squareMegameters)
    }
    unsafe fn squareKilometers() -> NSUnitArea
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitArea").unwrap(), squareKilometers)
    }
    unsafe fn squareMeters() -> NSUnitArea
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitArea").unwrap(), squareMeters)
    }
    unsafe fn squareCentimeters() -> NSUnitArea
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitArea").unwrap(), squareCentimeters)
    }
    unsafe fn squareMillimeters() -> NSUnitArea
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitArea").unwrap(), squareMillimeters)
    }
    unsafe fn squareMicrometers() -> NSUnitArea
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitArea").unwrap(), squareMicrometers)
    }
    unsafe fn squareNanometers() -> NSUnitArea
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitArea").unwrap(), squareNanometers)
    }
    unsafe fn squareInches() -> NSUnitArea
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitArea").unwrap(), squareInches)
    }
    unsafe fn squareFeet() -> NSUnitArea
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitArea").unwrap(), squareFeet)
    }
    unsafe fn squareYards() -> NSUnitArea
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitArea").unwrap(), squareYards)
    }
    unsafe fn squareMiles() -> NSUnitArea
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitArea").unwrap(), squareMiles)
    }
    unsafe fn acres() -> NSUnitArea
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitArea").unwrap(), acres)
    }
    unsafe fn ares() -> NSUnitArea
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitArea").unwrap(), ares)
    }
    unsafe fn hectares() -> NSUnitArea
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitArea").unwrap(), hectares)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitConcentrationMass(pub id);
impl std::ops::Deref for NSUnitConcentrationMass {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitConcentrationMass {}
impl NSUnitConcentrationMass {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitConcentrationMass").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSUnitConcentrationMass {}
impl INSDimension for NSUnitConcentrationMass {}
impl std::convert::TryFrom<NSDimension> for NSUnitConcentrationMass {
    type Error = &'static str;
    fn try_from(parent: NSDimension) -> Result<NSUnitConcentrationMass, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitConcentrationMass").unwrap()) };
        if is_kind_of {
            Ok(NSUnitConcentrationMass(parent.0))
        } else {
            Err("This NSDimension cannot be downcasted to NSUnitConcentrationMass")
        }
    }
}
impl INSUnit for NSUnitConcentrationMass {}
impl PNSCopying for NSUnitConcentrationMass {}
impl INSObject for NSUnitConcentrationMass {}
impl PNSObject for NSUnitConcentrationMass {}
impl INSUnitConcentrationMass for NSUnitConcentrationMass {}
pub trait INSUnitConcentrationMass: Sized + std::ops::Deref {
    unsafe fn millimolesPerLiterWithGramsPerMole_(gramsPerMole: f64) -> NSUnitConcentrationMass
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitConcentrationMass").unwrap(), millimolesPerLiterWithGramsPerMole : gramsPerMole)
    }
    unsafe fn gramsPerLiter() -> NSUnitConcentrationMass
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitConcentrationMass").unwrap(), gramsPerLiter)
    }
    unsafe fn milligramsPerDeciliter() -> NSUnitConcentrationMass
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitConcentrationMass").unwrap(), milligramsPerDeciliter)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitDispersion(pub id);
impl std::ops::Deref for NSUnitDispersion {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitDispersion {}
impl NSUnitDispersion {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitDispersion").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSUnitDispersion {}
impl INSDimension for NSUnitDispersion {}
impl std::convert::TryFrom<NSDimension> for NSUnitDispersion {
    type Error = &'static str;
    fn try_from(parent: NSDimension) -> Result<NSUnitDispersion, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitDispersion").unwrap()) };
        if is_kind_of {
            Ok(NSUnitDispersion(parent.0))
        } else {
            Err("This NSDimension cannot be downcasted to NSUnitDispersion")
        }
    }
}
impl INSUnit for NSUnitDispersion {}
impl PNSCopying for NSUnitDispersion {}
impl INSObject for NSUnitDispersion {}
impl PNSObject for NSUnitDispersion {}
impl INSUnitDispersion for NSUnitDispersion {}
pub trait INSUnitDispersion: Sized + std::ops::Deref {
    unsafe fn partsPerMillion() -> NSUnitDispersion
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitDispersion").unwrap(), partsPerMillion)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitDuration(pub id);
impl std::ops::Deref for NSUnitDuration {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitDuration {}
impl NSUnitDuration {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitDuration").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSUnitDuration {}
impl INSDimension for NSUnitDuration {}
impl std::convert::TryFrom<NSDimension> for NSUnitDuration {
    type Error = &'static str;
    fn try_from(parent: NSDimension) -> Result<NSUnitDuration, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitDuration").unwrap()) };
        if is_kind_of {
            Ok(NSUnitDuration(parent.0))
        } else {
            Err("This NSDimension cannot be downcasted to NSUnitDuration")
        }
    }
}
impl INSUnit for NSUnitDuration {}
impl PNSCopying for NSUnitDuration {}
impl INSObject for NSUnitDuration {}
impl PNSObject for NSUnitDuration {}
impl INSUnitDuration for NSUnitDuration {}
pub trait INSUnitDuration: Sized + std::ops::Deref {
    unsafe fn hours() -> NSUnitDuration
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitDuration").unwrap(), hours)
    }
    unsafe fn minutes() -> NSUnitDuration
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitDuration").unwrap(), minutes)
    }
    unsafe fn seconds() -> NSUnitDuration
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitDuration").unwrap(), seconds)
    }
    unsafe fn milliseconds() -> NSUnitDuration
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitDuration").unwrap(), milliseconds)
    }
    unsafe fn microseconds() -> NSUnitDuration
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitDuration").unwrap(), microseconds)
    }
    unsafe fn nanoseconds() -> NSUnitDuration
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitDuration").unwrap(), nanoseconds)
    }
    unsafe fn picoseconds() -> NSUnitDuration
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitDuration").unwrap(), picoseconds)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitElectricCharge(pub id);
impl std::ops::Deref for NSUnitElectricCharge {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitElectricCharge {}
impl NSUnitElectricCharge {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricCharge").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSUnitElectricCharge {}
impl INSDimension for NSUnitElectricCharge {}
impl std::convert::TryFrom<NSDimension> for NSUnitElectricCharge {
    type Error = &'static str;
    fn try_from(parent: NSDimension) -> Result<NSUnitElectricCharge, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitElectricCharge").unwrap()) };
        if is_kind_of {
            Ok(NSUnitElectricCharge(parent.0))
        } else {
            Err("This NSDimension cannot be downcasted to NSUnitElectricCharge")
        }
    }
}
impl INSUnit for NSUnitElectricCharge {}
impl PNSCopying for NSUnitElectricCharge {}
impl INSObject for NSUnitElectricCharge {}
impl PNSObject for NSUnitElectricCharge {}
impl INSUnitElectricCharge for NSUnitElectricCharge {}
pub trait INSUnitElectricCharge: Sized + std::ops::Deref {
    unsafe fn coulombs() -> NSUnitElectricCharge
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricCharge").unwrap(), coulombs)
    }
    unsafe fn megaampereHours() -> NSUnitElectricCharge
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricCharge").unwrap(), megaampereHours)
    }
    unsafe fn kiloampereHours() -> NSUnitElectricCharge
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricCharge").unwrap(), kiloampereHours)
    }
    unsafe fn ampereHours() -> NSUnitElectricCharge
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricCharge").unwrap(), ampereHours)
    }
    unsafe fn milliampereHours() -> NSUnitElectricCharge
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricCharge").unwrap(), milliampereHours)
    }
    unsafe fn microampereHours() -> NSUnitElectricCharge
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricCharge").unwrap(), microampereHours)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitElectricCurrent(pub id);
impl std::ops::Deref for NSUnitElectricCurrent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitElectricCurrent {}
impl NSUnitElectricCurrent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricCurrent").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSUnitElectricCurrent {}
impl INSDimension for NSUnitElectricCurrent {}
impl std::convert::TryFrom<NSDimension> for NSUnitElectricCurrent {
    type Error = &'static str;
    fn try_from(parent: NSDimension) -> Result<NSUnitElectricCurrent, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitElectricCurrent").unwrap()) };
        if is_kind_of {
            Ok(NSUnitElectricCurrent(parent.0))
        } else {
            Err("This NSDimension cannot be downcasted to NSUnitElectricCurrent")
        }
    }
}
impl INSUnit for NSUnitElectricCurrent {}
impl PNSCopying for NSUnitElectricCurrent {}
impl INSObject for NSUnitElectricCurrent {}
impl PNSObject for NSUnitElectricCurrent {}
impl INSUnitElectricCurrent for NSUnitElectricCurrent {}
pub trait INSUnitElectricCurrent: Sized + std::ops::Deref {
    unsafe fn megaamperes() -> NSUnitElectricCurrent
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricCurrent").unwrap(), megaamperes)
    }
    unsafe fn kiloamperes() -> NSUnitElectricCurrent
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricCurrent").unwrap(), kiloamperes)
    }
    unsafe fn amperes() -> NSUnitElectricCurrent
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricCurrent").unwrap(), amperes)
    }
    unsafe fn milliamperes() -> NSUnitElectricCurrent
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricCurrent").unwrap(), milliamperes)
    }
    unsafe fn microamperes() -> NSUnitElectricCurrent
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricCurrent").unwrap(), microamperes)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitElectricPotentialDifference(pub id);
impl std::ops::Deref for NSUnitElectricPotentialDifference {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitElectricPotentialDifference {}
impl NSUnitElectricPotentialDifference {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricPotentialDifference").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSUnitElectricPotentialDifference {}
impl INSDimension for NSUnitElectricPotentialDifference {}
impl std::convert::TryFrom<NSDimension> for NSUnitElectricPotentialDifference {
    type Error = &'static str;
    fn try_from(parent: NSDimension) -> Result<NSUnitElectricPotentialDifference, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitElectricPotentialDifference").unwrap())
        };
        if is_kind_of {
            Ok(NSUnitElectricPotentialDifference(parent.0))
        } else {
            Err("This NSDimension cannot be downcasted to NSUnitElectricPotentialDifference")
        }
    }
}
impl INSUnit for NSUnitElectricPotentialDifference {}
impl PNSCopying for NSUnitElectricPotentialDifference {}
impl INSObject for NSUnitElectricPotentialDifference {}
impl PNSObject for NSUnitElectricPotentialDifference {}
impl INSUnitElectricPotentialDifference for NSUnitElectricPotentialDifference {}
pub trait INSUnitElectricPotentialDifference: Sized + std::ops::Deref {
    unsafe fn megavolts() -> NSUnitElectricPotentialDifference
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricPotentialDifference").unwrap(), megavolts)
    }
    unsafe fn kilovolts() -> NSUnitElectricPotentialDifference
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricPotentialDifference").unwrap(), kilovolts)
    }
    unsafe fn volts() -> NSUnitElectricPotentialDifference
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricPotentialDifference").unwrap(), volts)
    }
    unsafe fn millivolts() -> NSUnitElectricPotentialDifference
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricPotentialDifference").unwrap(), millivolts)
    }
    unsafe fn microvolts() -> NSUnitElectricPotentialDifference
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricPotentialDifference").unwrap(), microvolts)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitElectricResistance(pub id);
impl std::ops::Deref for NSUnitElectricResistance {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitElectricResistance {}
impl NSUnitElectricResistance {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricResistance").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSUnitElectricResistance {}
impl INSDimension for NSUnitElectricResistance {}
impl std::convert::TryFrom<NSDimension> for NSUnitElectricResistance {
    type Error = &'static str;
    fn try_from(parent: NSDimension) -> Result<NSUnitElectricResistance, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitElectricResistance").unwrap()) };
        if is_kind_of {
            Ok(NSUnitElectricResistance(parent.0))
        } else {
            Err("This NSDimension cannot be downcasted to NSUnitElectricResistance")
        }
    }
}
impl INSUnit for NSUnitElectricResistance {}
impl PNSCopying for NSUnitElectricResistance {}
impl INSObject for NSUnitElectricResistance {}
impl PNSObject for NSUnitElectricResistance {}
impl INSUnitElectricResistance for NSUnitElectricResistance {}
pub trait INSUnitElectricResistance: Sized + std::ops::Deref {
    unsafe fn megaohms() -> NSUnitElectricResistance
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricResistance").unwrap(), megaohms)
    }
    unsafe fn kiloohms() -> NSUnitElectricResistance
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricResistance").unwrap(), kiloohms)
    }
    unsafe fn ohms() -> NSUnitElectricResistance
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricResistance").unwrap(), ohms)
    }
    unsafe fn milliohms() -> NSUnitElectricResistance
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricResistance").unwrap(), milliohms)
    }
    unsafe fn microohms() -> NSUnitElectricResistance
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitElectricResistance").unwrap(), microohms)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitEnergy(pub id);
impl std::ops::Deref for NSUnitEnergy {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitEnergy {}
impl NSUnitEnergy {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitEnergy").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSUnitEnergy {}
impl INSDimension for NSUnitEnergy {}
impl std::convert::TryFrom<NSDimension> for NSUnitEnergy {
    type Error = &'static str;
    fn try_from(parent: NSDimension) -> Result<NSUnitEnergy, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitEnergy").unwrap()) };
        if is_kind_of {
            Ok(NSUnitEnergy(parent.0))
        } else {
            Err("This NSDimension cannot be downcasted to NSUnitEnergy")
        }
    }
}
impl INSUnit for NSUnitEnergy {}
impl PNSCopying for NSUnitEnergy {}
impl INSObject for NSUnitEnergy {}
impl PNSObject for NSUnitEnergy {}
impl INSUnitEnergy for NSUnitEnergy {}
pub trait INSUnitEnergy: Sized + std::ops::Deref {
    unsafe fn kilojoules() -> NSUnitEnergy
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitEnergy").unwrap(), kilojoules)
    }
    unsafe fn joules() -> NSUnitEnergy
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitEnergy").unwrap(), joules)
    }
    unsafe fn kilocalories() -> NSUnitEnergy
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitEnergy").unwrap(), kilocalories)
    }
    unsafe fn calories() -> NSUnitEnergy
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitEnergy").unwrap(), calories)
    }
    unsafe fn kilowattHours() -> NSUnitEnergy
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitEnergy").unwrap(), kilowattHours)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitFrequency(pub id);
impl std::ops::Deref for NSUnitFrequency {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitFrequency {}
impl NSUnitFrequency {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitFrequency").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSUnitFrequency {}
impl INSDimension for NSUnitFrequency {}
impl std::convert::TryFrom<NSDimension> for NSUnitFrequency {
    type Error = &'static str;
    fn try_from(parent: NSDimension) -> Result<NSUnitFrequency, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitFrequency").unwrap()) };
        if is_kind_of {
            Ok(NSUnitFrequency(parent.0))
        } else {
            Err("This NSDimension cannot be downcasted to NSUnitFrequency")
        }
    }
}
impl INSUnit for NSUnitFrequency {}
impl PNSCopying for NSUnitFrequency {}
impl INSObject for NSUnitFrequency {}
impl PNSObject for NSUnitFrequency {}
impl INSUnitFrequency for NSUnitFrequency {}
pub trait INSUnitFrequency: Sized + std::ops::Deref {
    unsafe fn terahertz() -> NSUnitFrequency
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitFrequency").unwrap(), terahertz)
    }
    unsafe fn gigahertz() -> NSUnitFrequency
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitFrequency").unwrap(), gigahertz)
    }
    unsafe fn megahertz() -> NSUnitFrequency
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitFrequency").unwrap(), megahertz)
    }
    unsafe fn kilohertz() -> NSUnitFrequency
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitFrequency").unwrap(), kilohertz)
    }
    unsafe fn hertz() -> NSUnitFrequency
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitFrequency").unwrap(), hertz)
    }
    unsafe fn millihertz() -> NSUnitFrequency
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitFrequency").unwrap(), millihertz)
    }
    unsafe fn microhertz() -> NSUnitFrequency
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitFrequency").unwrap(), microhertz)
    }
    unsafe fn nanohertz() -> NSUnitFrequency
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitFrequency").unwrap(), nanohertz)
    }
    unsafe fn framesPerSecond() -> NSUnitFrequency
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitFrequency").unwrap(), framesPerSecond)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitFuelEfficiency(pub id);
impl std::ops::Deref for NSUnitFuelEfficiency {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitFuelEfficiency {}
impl NSUnitFuelEfficiency {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitFuelEfficiency").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSUnitFuelEfficiency {}
impl INSDimension for NSUnitFuelEfficiency {}
impl std::convert::TryFrom<NSDimension> for NSUnitFuelEfficiency {
    type Error = &'static str;
    fn try_from(parent: NSDimension) -> Result<NSUnitFuelEfficiency, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitFuelEfficiency").unwrap()) };
        if is_kind_of {
            Ok(NSUnitFuelEfficiency(parent.0))
        } else {
            Err("This NSDimension cannot be downcasted to NSUnitFuelEfficiency")
        }
    }
}
impl INSUnit for NSUnitFuelEfficiency {}
impl PNSCopying for NSUnitFuelEfficiency {}
impl INSObject for NSUnitFuelEfficiency {}
impl PNSObject for NSUnitFuelEfficiency {}
impl INSUnitFuelEfficiency for NSUnitFuelEfficiency {}
pub trait INSUnitFuelEfficiency: Sized + std::ops::Deref {
    unsafe fn litersPer100Kilometers() -> NSUnitFuelEfficiency
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitFuelEfficiency").unwrap(), litersPer100Kilometers)
    }
    unsafe fn milesPerImperialGallon() -> NSUnitFuelEfficiency
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitFuelEfficiency").unwrap(), milesPerImperialGallon)
    }
    unsafe fn milesPerGallon() -> NSUnitFuelEfficiency
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitFuelEfficiency").unwrap(), milesPerGallon)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitInformationStorage(pub id);
impl std::ops::Deref for NSUnitInformationStorage {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitInformationStorage {}
impl NSUnitInformationStorage {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSUnitInformationStorage {}
impl INSDimension for NSUnitInformationStorage {}
impl std::convert::TryFrom<NSDimension> for NSUnitInformationStorage {
    type Error = &'static str;
    fn try_from(parent: NSDimension) -> Result<NSUnitInformationStorage, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap()) };
        if is_kind_of {
            Ok(NSUnitInformationStorage(parent.0))
        } else {
            Err("This NSDimension cannot be downcasted to NSUnitInformationStorage")
        }
    }
}
impl INSUnit for NSUnitInformationStorage {}
impl PNSCopying for NSUnitInformationStorage {}
impl INSObject for NSUnitInformationStorage {}
impl PNSObject for NSUnitInformationStorage {}
impl INSUnitInformationStorage for NSUnitInformationStorage {}
pub trait INSUnitInformationStorage: Sized + std::ops::Deref {
    unsafe fn bytes() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), bytes)
    }
    unsafe fn bits() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), bits)
    }
    unsafe fn nibbles() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), nibbles)
    }
    unsafe fn yottabytes() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), yottabytes)
    }
    unsafe fn zettabytes() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), zettabytes)
    }
    unsafe fn exabytes() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), exabytes)
    }
    unsafe fn petabytes() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), petabytes)
    }
    unsafe fn terabytes() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), terabytes)
    }
    unsafe fn gigabytes() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), gigabytes)
    }
    unsafe fn megabytes() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), megabytes)
    }
    unsafe fn kilobytes() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), kilobytes)
    }
    unsafe fn yottabits() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), yottabits)
    }
    unsafe fn zettabits() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), zettabits)
    }
    unsafe fn exabits() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), exabits)
    }
    unsafe fn petabits() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), petabits)
    }
    unsafe fn terabits() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), terabits)
    }
    unsafe fn gigabits() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), gigabits)
    }
    unsafe fn megabits() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), megabits)
    }
    unsafe fn kilobits() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), kilobits)
    }
    unsafe fn yobibytes() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), yobibytes)
    }
    unsafe fn zebibytes() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), zebibytes)
    }
    unsafe fn exbibytes() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), exbibytes)
    }
    unsafe fn pebibytes() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), pebibytes)
    }
    unsafe fn tebibytes() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), tebibytes)
    }
    unsafe fn gibibytes() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), gibibytes)
    }
    unsafe fn mebibytes() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), mebibytes)
    }
    unsafe fn kibibytes() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), kibibytes)
    }
    unsafe fn yobibits() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), yobibits)
    }
    unsafe fn zebibits() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), zebibits)
    }
    unsafe fn exbibits() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), exbibits)
    }
    unsafe fn pebibits() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), pebibits)
    }
    unsafe fn tebibits() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), tebibits)
    }
    unsafe fn gibibits() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), gibibits)
    }
    unsafe fn mebibits() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), mebibits)
    }
    unsafe fn kibibits() -> NSUnitInformationStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitInformationStorage").unwrap(), kibibits)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitLength(pub id);
impl std::ops::Deref for NSUnitLength {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitLength {}
impl NSUnitLength {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSUnitLength {}
impl INSDimension for NSUnitLength {}
impl std::convert::TryFrom<NSDimension> for NSUnitLength {
    type Error = &'static str;
    fn try_from(parent: NSDimension) -> Result<NSUnitLength, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap()) };
        if is_kind_of {
            Ok(NSUnitLength(parent.0))
        } else {
            Err("This NSDimension cannot be downcasted to NSUnitLength")
        }
    }
}
impl INSUnit for NSUnitLength {}
impl PNSCopying for NSUnitLength {}
impl INSObject for NSUnitLength {}
impl PNSObject for NSUnitLength {}
impl INSUnitLength for NSUnitLength {}
pub trait INSUnitLength: Sized + std::ops::Deref {
    unsafe fn megameters() -> NSUnitLength
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap(), megameters)
    }
    unsafe fn kilometers() -> NSUnitLength
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap(), kilometers)
    }
    unsafe fn hectometers() -> NSUnitLength
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap(), hectometers)
    }
    unsafe fn decameters() -> NSUnitLength
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap(), decameters)
    }
    unsafe fn meters() -> NSUnitLength
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap(), meters)
    }
    unsafe fn decimeters() -> NSUnitLength
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap(), decimeters)
    }
    unsafe fn centimeters() -> NSUnitLength
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap(), centimeters)
    }
    unsafe fn millimeters() -> NSUnitLength
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap(), millimeters)
    }
    unsafe fn micrometers() -> NSUnitLength
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap(), micrometers)
    }
    unsafe fn nanometers() -> NSUnitLength
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap(), nanometers)
    }
    unsafe fn picometers() -> NSUnitLength
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap(), picometers)
    }
    unsafe fn inches() -> NSUnitLength
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap(), inches)
    }
    unsafe fn feet() -> NSUnitLength
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap(), feet)
    }
    unsafe fn yards() -> NSUnitLength
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap(), yards)
    }
    unsafe fn miles() -> NSUnitLength
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap(), miles)
    }
    unsafe fn scandinavianMiles() -> NSUnitLength
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap(), scandinavianMiles)
    }
    unsafe fn lightyears() -> NSUnitLength
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap(), lightyears)
    }
    unsafe fn nauticalMiles() -> NSUnitLength
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap(), nauticalMiles)
    }
    unsafe fn fathoms() -> NSUnitLength
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap(), fathoms)
    }
    unsafe fn furlongs() -> NSUnitLength
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap(), furlongs)
    }
    unsafe fn astronomicalUnits() -> NSUnitLength
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap(), astronomicalUnits)
    }
    unsafe fn parsecs() -> NSUnitLength
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitLength").unwrap(), parsecs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitIlluminance(pub id);
impl std::ops::Deref for NSUnitIlluminance {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitIlluminance {}
impl NSUnitIlluminance {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitIlluminance").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSUnitIlluminance {}
impl INSDimension for NSUnitIlluminance {}
impl std::convert::TryFrom<NSDimension> for NSUnitIlluminance {
    type Error = &'static str;
    fn try_from(parent: NSDimension) -> Result<NSUnitIlluminance, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitIlluminance").unwrap()) };
        if is_kind_of {
            Ok(NSUnitIlluminance(parent.0))
        } else {
            Err("This NSDimension cannot be downcasted to NSUnitIlluminance")
        }
    }
}
impl INSUnit for NSUnitIlluminance {}
impl PNSCopying for NSUnitIlluminance {}
impl INSObject for NSUnitIlluminance {}
impl PNSObject for NSUnitIlluminance {}
impl INSUnitIlluminance for NSUnitIlluminance {}
pub trait INSUnitIlluminance: Sized + std::ops::Deref {
    unsafe fn lux() -> NSUnitIlluminance
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitIlluminance").unwrap(), lux)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitMass(pub id);
impl std::ops::Deref for NSUnitMass {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitMass {}
impl NSUnitMass {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitMass").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSUnitMass {}
impl INSDimension for NSUnitMass {}
impl std::convert::TryFrom<NSDimension> for NSUnitMass {
    type Error = &'static str;
    fn try_from(parent: NSDimension) -> Result<NSUnitMass, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitMass").unwrap()) };
        if is_kind_of {
            Ok(NSUnitMass(parent.0))
        } else {
            Err("This NSDimension cannot be downcasted to NSUnitMass")
        }
    }
}
impl INSUnit for NSUnitMass {}
impl PNSCopying for NSUnitMass {}
impl INSObject for NSUnitMass {}
impl PNSObject for NSUnitMass {}
impl INSUnitMass for NSUnitMass {}
pub trait INSUnitMass: Sized + std::ops::Deref {
    unsafe fn kilograms() -> NSUnitMass
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitMass").unwrap(), kilograms)
    }
    unsafe fn grams() -> NSUnitMass
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitMass").unwrap(), grams)
    }
    unsafe fn decigrams() -> NSUnitMass
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitMass").unwrap(), decigrams)
    }
    unsafe fn centigrams() -> NSUnitMass
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitMass").unwrap(), centigrams)
    }
    unsafe fn milligrams() -> NSUnitMass
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitMass").unwrap(), milligrams)
    }
    unsafe fn micrograms() -> NSUnitMass
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitMass").unwrap(), micrograms)
    }
    unsafe fn nanograms() -> NSUnitMass
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitMass").unwrap(), nanograms)
    }
    unsafe fn picograms() -> NSUnitMass
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitMass").unwrap(), picograms)
    }
    unsafe fn ounces() -> NSUnitMass
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitMass").unwrap(), ounces)
    }
    unsafe fn poundsMass() -> NSUnitMass
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitMass").unwrap(), poundsMass)
    }
    unsafe fn stones() -> NSUnitMass
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitMass").unwrap(), stones)
    }
    unsafe fn metricTons() -> NSUnitMass
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitMass").unwrap(), metricTons)
    }
    unsafe fn shortTons() -> NSUnitMass
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitMass").unwrap(), shortTons)
    }
    unsafe fn carats() -> NSUnitMass
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitMass").unwrap(), carats)
    }
    unsafe fn ouncesTroy() -> NSUnitMass
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitMass").unwrap(), ouncesTroy)
    }
    unsafe fn slugs() -> NSUnitMass
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitMass").unwrap(), slugs)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitPower(pub id);
impl std::ops::Deref for NSUnitPower {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitPower {}
impl NSUnitPower {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitPower").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSUnitPower {}
impl INSDimension for NSUnitPower {}
impl std::convert::TryFrom<NSDimension> for NSUnitPower {
    type Error = &'static str;
    fn try_from(parent: NSDimension) -> Result<NSUnitPower, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitPower").unwrap()) };
        if is_kind_of {
            Ok(NSUnitPower(parent.0))
        } else {
            Err("This NSDimension cannot be downcasted to NSUnitPower")
        }
    }
}
impl INSUnit for NSUnitPower {}
impl PNSCopying for NSUnitPower {}
impl INSObject for NSUnitPower {}
impl PNSObject for NSUnitPower {}
impl INSUnitPower for NSUnitPower {}
pub trait INSUnitPower: Sized + std::ops::Deref {
    unsafe fn terawatts() -> NSUnitPower
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitPower").unwrap(), terawatts)
    }
    unsafe fn gigawatts() -> NSUnitPower
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitPower").unwrap(), gigawatts)
    }
    unsafe fn megawatts() -> NSUnitPower
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitPower").unwrap(), megawatts)
    }
    unsafe fn kilowatts() -> NSUnitPower
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitPower").unwrap(), kilowatts)
    }
    unsafe fn watts() -> NSUnitPower
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitPower").unwrap(), watts)
    }
    unsafe fn milliwatts() -> NSUnitPower
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitPower").unwrap(), milliwatts)
    }
    unsafe fn microwatts() -> NSUnitPower
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitPower").unwrap(), microwatts)
    }
    unsafe fn nanowatts() -> NSUnitPower
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitPower").unwrap(), nanowatts)
    }
    unsafe fn picowatts() -> NSUnitPower
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitPower").unwrap(), picowatts)
    }
    unsafe fn femtowatts() -> NSUnitPower
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitPower").unwrap(), femtowatts)
    }
    unsafe fn horsepower() -> NSUnitPower
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitPower").unwrap(), horsepower)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitPressure(pub id);
impl std::ops::Deref for NSUnitPressure {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitPressure {}
impl NSUnitPressure {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitPressure").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSUnitPressure {}
impl INSDimension for NSUnitPressure {}
impl std::convert::TryFrom<NSDimension> for NSUnitPressure {
    type Error = &'static str;
    fn try_from(parent: NSDimension) -> Result<NSUnitPressure, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitPressure").unwrap()) };
        if is_kind_of {
            Ok(NSUnitPressure(parent.0))
        } else {
            Err("This NSDimension cannot be downcasted to NSUnitPressure")
        }
    }
}
impl INSUnit for NSUnitPressure {}
impl PNSCopying for NSUnitPressure {}
impl INSObject for NSUnitPressure {}
impl PNSObject for NSUnitPressure {}
impl INSUnitPressure for NSUnitPressure {}
pub trait INSUnitPressure: Sized + std::ops::Deref {
    unsafe fn newtonsPerMetersSquared() -> NSUnitPressure
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitPressure").unwrap(), newtonsPerMetersSquared)
    }
    unsafe fn gigapascals() -> NSUnitPressure
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitPressure").unwrap(), gigapascals)
    }
    unsafe fn megapascals() -> NSUnitPressure
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitPressure").unwrap(), megapascals)
    }
    unsafe fn kilopascals() -> NSUnitPressure
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitPressure").unwrap(), kilopascals)
    }
    unsafe fn hectopascals() -> NSUnitPressure
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitPressure").unwrap(), hectopascals)
    }
    unsafe fn inchesOfMercury() -> NSUnitPressure
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitPressure").unwrap(), inchesOfMercury)
    }
    unsafe fn bars() -> NSUnitPressure
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitPressure").unwrap(), bars)
    }
    unsafe fn millibars() -> NSUnitPressure
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitPressure").unwrap(), millibars)
    }
    unsafe fn millimetersOfMercury() -> NSUnitPressure
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitPressure").unwrap(), millimetersOfMercury)
    }
    unsafe fn poundsForcePerSquareInch() -> NSUnitPressure
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitPressure").unwrap(), poundsForcePerSquareInch)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitSpeed(pub id);
impl std::ops::Deref for NSUnitSpeed {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitSpeed {}
impl NSUnitSpeed {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitSpeed").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSUnitSpeed {}
impl INSDimension for NSUnitSpeed {}
impl std::convert::TryFrom<NSDimension> for NSUnitSpeed {
    type Error = &'static str;
    fn try_from(parent: NSDimension) -> Result<NSUnitSpeed, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitSpeed").unwrap()) };
        if is_kind_of {
            Ok(NSUnitSpeed(parent.0))
        } else {
            Err("This NSDimension cannot be downcasted to NSUnitSpeed")
        }
    }
}
impl INSUnit for NSUnitSpeed {}
impl PNSCopying for NSUnitSpeed {}
impl INSObject for NSUnitSpeed {}
impl PNSObject for NSUnitSpeed {}
impl INSUnitSpeed for NSUnitSpeed {}
pub trait INSUnitSpeed: Sized + std::ops::Deref {
    unsafe fn metersPerSecond() -> NSUnitSpeed
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitSpeed").unwrap(), metersPerSecond)
    }
    unsafe fn kilometersPerHour() -> NSUnitSpeed
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitSpeed").unwrap(), kilometersPerHour)
    }
    unsafe fn milesPerHour() -> NSUnitSpeed
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitSpeed").unwrap(), milesPerHour)
    }
    unsafe fn knots() -> NSUnitSpeed
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitSpeed").unwrap(), knots)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitTemperature(pub id);
impl std::ops::Deref for NSUnitTemperature {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitTemperature {}
impl NSUnitTemperature {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitTemperature").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSUnitTemperature {}
impl INSDimension for NSUnitTemperature {}
impl std::convert::TryFrom<NSDimension> for NSUnitTemperature {
    type Error = &'static str;
    fn try_from(parent: NSDimension) -> Result<NSUnitTemperature, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitTemperature").unwrap()) };
        if is_kind_of {
            Ok(NSUnitTemperature(parent.0))
        } else {
            Err("This NSDimension cannot be downcasted to NSUnitTemperature")
        }
    }
}
impl INSUnit for NSUnitTemperature {}
impl PNSCopying for NSUnitTemperature {}
impl INSObject for NSUnitTemperature {}
impl PNSObject for NSUnitTemperature {}
impl INSUnitTemperature for NSUnitTemperature {}
pub trait INSUnitTemperature: Sized + std::ops::Deref {
    unsafe fn kelvin() -> NSUnitTemperature
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitTemperature").unwrap(), kelvin)
    }
    unsafe fn celsius() -> NSUnitTemperature
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitTemperature").unwrap(), celsius)
    }
    unsafe fn fahrenheit() -> NSUnitTemperature
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitTemperature").unwrap(), fahrenheit)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnitVolume(pub id);
impl std::ops::Deref for NSUnitVolume {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnitVolume {}
impl NSUnitVolume {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSUnitVolume {}
impl INSDimension for NSUnitVolume {}
impl std::convert::TryFrom<NSDimension> for NSUnitVolume {
    type Error = &'static str;
    fn try_from(parent: NSDimension) -> Result<NSUnitVolume, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap()) };
        if is_kind_of {
            Ok(NSUnitVolume(parent.0))
        } else {
            Err("This NSDimension cannot be downcasted to NSUnitVolume")
        }
    }
}
impl INSUnit for NSUnitVolume {}
impl PNSCopying for NSUnitVolume {}
impl INSObject for NSUnitVolume {}
impl PNSObject for NSUnitVolume {}
impl INSUnitVolume for NSUnitVolume {}
pub trait INSUnitVolume: Sized + std::ops::Deref {
    unsafe fn megaliters() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), megaliters)
    }
    unsafe fn kiloliters() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), kiloliters)
    }
    unsafe fn liters() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), liters)
    }
    unsafe fn deciliters() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), deciliters)
    }
    unsafe fn centiliters() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), centiliters)
    }
    unsafe fn milliliters() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), milliliters)
    }
    unsafe fn cubicKilometers() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), cubicKilometers)
    }
    unsafe fn cubicMeters() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), cubicMeters)
    }
    unsafe fn cubicDecimeters() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), cubicDecimeters)
    }
    unsafe fn cubicCentimeters() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), cubicCentimeters)
    }
    unsafe fn cubicMillimeters() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), cubicMillimeters)
    }
    unsafe fn cubicInches() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), cubicInches)
    }
    unsafe fn cubicFeet() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), cubicFeet)
    }
    unsafe fn cubicYards() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), cubicYards)
    }
    unsafe fn cubicMiles() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), cubicMiles)
    }
    unsafe fn acreFeet() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), acreFeet)
    }
    unsafe fn bushels() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), bushels)
    }
    unsafe fn teaspoons() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), teaspoons)
    }
    unsafe fn tablespoons() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), tablespoons)
    }
    unsafe fn fluidOunces() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), fluidOunces)
    }
    unsafe fn cups() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), cups)
    }
    unsafe fn pints() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), pints)
    }
    unsafe fn quarts() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), quarts)
    }
    unsafe fn gallons() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), gallons)
    }
    unsafe fn imperialTeaspoons() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), imperialTeaspoons)
    }
    unsafe fn imperialTablespoons() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), imperialTablespoons)
    }
    unsafe fn imperialFluidOunces() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), imperialFluidOunces)
    }
    unsafe fn imperialPints() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), imperialPints)
    }
    unsafe fn imperialQuarts() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), imperialQuarts)
    }
    unsafe fn imperialGallons() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), imperialGallons)
    }
    unsafe fn metricCups() -> NSUnitVolume
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnitVolume").unwrap(), metricCups)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMeasurement(pub id);
impl std::ops::Deref for NSMeasurement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMeasurement {}
impl NSMeasurement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMeasurement").unwrap(), alloc) })
    }
}
impl PNSCopying for NSMeasurement {}
impl PNSSecureCoding for NSMeasurement {}
impl INSObject for NSMeasurement {}
impl PNSObject for NSMeasurement {}
impl std::convert::TryFrom<NSObject> for NSMeasurement {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSMeasurement, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMeasurement").unwrap()) };
        if is_kind_of {
            Ok(NSMeasurement(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSMeasurement")
        }
    }
}
impl<UnitType: 'static> INSMeasurement<UnitType> for NSMeasurement {}
pub trait INSMeasurement<UnitType: 'static>: 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 initWithDoubleValue_unit_(&self, doubleValue: f64, unit: NSUnit) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDoubleValue : doubleValue, unit : unit)
    }
    unsafe fn canBeConvertedToUnit_(&self, unit: NSUnit) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, canBeConvertedToUnit : unit)
    }
    unsafe fn measurementByConvertingToUnit_(&self, unit: NSUnit) -> NSMeasurement
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, measurementByConvertingToUnit : unit)
    }
    unsafe fn measurementByAddingMeasurement_(&self, measurement: NSMeasurement) -> NSMeasurement
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, measurementByAddingMeasurement : measurement)
    }
    unsafe fn measurementBySubtractingMeasurement_(
        &self,
        measurement: NSMeasurement,
    ) -> NSMeasurement
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, measurementBySubtractingMeasurement : measurement)
    }
    unsafe fn unit(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, unit)
    }
    unsafe fn doubleValue(&self) -> f64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, doubleValue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSLocale(pub id);
impl std::ops::Deref for NSLocale {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSLocale {}
impl NSLocale {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSLocale").unwrap(), alloc) })
    }
}
impl PNSCopying for NSLocale {}
impl PNSSecureCoding for NSLocale {}
impl INSObject for NSLocale {}
impl PNSObject for NSLocale {}
impl std::convert::TryFrom<NSObject> for NSLocale {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSLocale, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSLocale").unwrap()) };
        if is_kind_of {
            Ok(NSLocale(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSLocale")
        }
    }
}
impl INSLocale for NSLocale {}
pub trait INSLocale: Sized + std::ops::Deref {
    unsafe fn objectForKey_(&self, key: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectForKey : key)
    }
    unsafe fn displayNameForKey_value_(&self, key: NSString, value: id) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, displayNameForKey : key, value : value)
    }
    unsafe fn initWithLocaleIdentifier_(&self, string: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithLocaleIdentifier : string)
    }
    unsafe fn initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
}
impl NSLocale_NSExtendedLocale for NSLocale {}
pub trait NSLocale_NSExtendedLocale: Sized + std::ops::Deref {
    unsafe fn localizedStringForLocaleIdentifier_(&self, localeIdentifier: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, localizedStringForLocaleIdentifier : localeIdentifier)
    }
    unsafe fn localizedStringForLanguageCode_(&self, languageCode: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, localizedStringForLanguageCode : languageCode)
    }
    unsafe fn localizedStringForCountryCode_(&self, countryCode: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, localizedStringForCountryCode : countryCode)
    }
    unsafe fn localizedStringForScriptCode_(&self, scriptCode: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, localizedStringForScriptCode : scriptCode)
    }
    unsafe fn localizedStringForVariantCode_(&self, variantCode: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, localizedStringForVariantCode : variantCode)
    }
    unsafe fn localizedStringForCalendarIdentifier_(&self, calendarIdentifier: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, localizedStringForCalendarIdentifier : calendarIdentifier)
    }
    unsafe fn localizedStringForCollationIdentifier_(
        &self,
        collationIdentifier: NSString,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, localizedStringForCollationIdentifier : collationIdentifier)
    }
    unsafe fn localizedStringForCurrencyCode_(&self, currencyCode: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, localizedStringForCurrencyCode : currencyCode)
    }
    unsafe fn localizedStringForCollatorIdentifier_(&self, collatorIdentifier: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, localizedStringForCollatorIdentifier : collatorIdentifier)
    }
    unsafe fn localeIdentifier(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localeIdentifier)
    }
    unsafe fn languageCode(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, languageCode)
    }
    unsafe fn languageIdentifier(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, languageIdentifier)
    }
    unsafe fn countryCode(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, countryCode)
    }
    unsafe fn regionCode(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, regionCode)
    }
    unsafe fn scriptCode(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, scriptCode)
    }
    unsafe fn variantCode(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, variantCode)
    }
    unsafe fn exemplarCharacterSet(&self) -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, exemplarCharacterSet)
    }
    unsafe fn calendarIdentifier(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, calendarIdentifier)
    }
    unsafe fn collationIdentifier(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, collationIdentifier)
    }
    unsafe fn usesMetricSystem(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, usesMetricSystem)
    }
    unsafe fn decimalSeparator(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, decimalSeparator)
    }
    unsafe fn groupingSeparator(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupingSeparator)
    }
    unsafe fn currencySymbol(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currencySymbol)
    }
    unsafe fn currencyCode(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currencyCode)
    }
    unsafe fn collatorIdentifier(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, collatorIdentifier)
    }
    unsafe fn quotationBeginDelimiter(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, quotationBeginDelimiter)
    }
    unsafe fn quotationEndDelimiter(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, quotationEndDelimiter)
    }
    unsafe fn alternateQuotationBeginDelimiter(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, alternateQuotationBeginDelimiter)
    }
    unsafe fn alternateQuotationEndDelimiter(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, alternateQuotationEndDelimiter)
    }
}
impl NSLocale_NSLocaleCreation for NSLocale {}
pub trait NSLocale_NSLocaleCreation: 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 localeWithLocaleIdentifier_(ident: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLocale").unwrap(), localeWithLocaleIdentifier : ident)
    }
    unsafe fn autoupdatingCurrentLocale() -> NSLocale
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLocale").unwrap(), autoupdatingCurrentLocale)
    }
    unsafe fn currentLocale() -> NSLocale
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLocale").unwrap(), currentLocale)
    }
    unsafe fn systemLocale() -> NSLocale
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLocale").unwrap(), systemLocale)
    }
}
impl NSLocale_NSLocaleGeneralInfo for NSLocale {}
pub trait NSLocale_NSLocaleGeneralInfo: Sized + std::ops::Deref {
    unsafe fn componentsFromLocaleIdentifier_(string: NSString) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLocale").unwrap(), componentsFromLocaleIdentifier : string)
    }
    unsafe fn localeIdentifierFromComponents_(dict: NSDictionary) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLocale").unwrap(), localeIdentifierFromComponents : dict)
    }
    unsafe fn canonicalLocaleIdentifierFromString_(string: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLocale").unwrap(), canonicalLocaleIdentifierFromString : string)
    }
    unsafe fn canonicalLanguageIdentifierFromString_(string: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLocale").unwrap(), canonicalLanguageIdentifierFromString : string)
    }
    unsafe fn localeIdentifierFromWindowsLocaleCode_(lcid: u32) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLocale").unwrap(), localeIdentifierFromWindowsLocaleCode : lcid)
    }
    unsafe fn windowsLocaleCodeFromLocaleIdentifier_(localeIdentifier: NSString) -> u32
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLocale").unwrap(), windowsLocaleCodeFromLocaleIdentifier : localeIdentifier)
    }
    unsafe fn characterDirectionForLanguage_(isoLangCode: NSString) -> NSLocaleLanguageDirection
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLocale").unwrap(), characterDirectionForLanguage : isoLangCode)
    }
    unsafe fn lineDirectionForLanguage_(isoLangCode: NSString) -> NSLocaleLanguageDirection
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLocale").unwrap(), lineDirectionForLanguage : isoLangCode)
    }
    unsafe fn availableLocaleIdentifiers() -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLocale").unwrap(), availableLocaleIdentifiers)
    }
    unsafe fn ISOLanguageCodes() -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLocale").unwrap(), ISOLanguageCodes)
    }
    unsafe fn ISOCountryCodes() -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLocale").unwrap(), ISOCountryCodes)
    }
    unsafe fn ISOCurrencyCodes() -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLocale").unwrap(), ISOCurrencyCodes)
    }
    unsafe fn commonISOCurrencyCodes() -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLocale").unwrap(), commonISOCurrencyCodes)
    }
    unsafe fn preferredLanguages() -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLocale").unwrap(), preferredLanguages)
    }
}
pub type NSLocaleLanguageDirection = NSUInteger;
pub type NSMeasurementFormatterUnitOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMeasurementFormatter(pub id);
impl std::ops::Deref for NSMeasurementFormatter {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMeasurementFormatter {}
impl NSMeasurementFormatter {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMeasurementFormatter").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSMeasurementFormatter {}
impl INSFormatter for NSMeasurementFormatter {}
impl PNSCopying for NSMeasurementFormatter {}
impl PNSCoding for NSMeasurementFormatter {}
impl std::convert::TryFrom<NSFormatter> for NSMeasurementFormatter {
    type Error = &'static str;
    fn try_from(parent: NSFormatter) -> Result<NSMeasurementFormatter, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMeasurementFormatter").unwrap()) };
        if is_kind_of {
            Ok(NSMeasurementFormatter(parent.0))
        } else {
            Err("This NSFormatter cannot be downcasted to NSMeasurementFormatter")
        }
    }
}
impl INSObject for NSMeasurementFormatter {}
impl PNSObject for NSMeasurementFormatter {}
impl INSMeasurementFormatter for NSMeasurementFormatter {}
pub trait INSMeasurementFormatter: Sized + std::ops::Deref {
    unsafe fn stringFromMeasurement_(&self, measurement: NSMeasurement) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringFromMeasurement : measurement)
    }
    unsafe fn stringFromUnit_(&self, unit: NSUnit) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringFromUnit : unit)
    }
    unsafe fn unitOptions(&self) -> NSMeasurementFormatterUnitOptions
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, unitOptions)
    }
    unsafe fn setUnitOptions_(&self, unitOptions: NSMeasurementFormatterUnitOptions)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUnitOptions : unitOptions)
    }
    unsafe fn unitStyle(&self) -> NSFormattingUnitStyle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, unitStyle)
    }
    unsafe fn setUnitStyle_(&self, unitStyle: NSFormattingUnitStyle)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUnitStyle : unitStyle)
    }
    unsafe fn locale(&self) -> NSLocale
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, locale)
    }
    unsafe fn setLocale_(&self, locale: NSLocale)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocale : locale)
    }
    unsafe fn numberFormatter(&self) -> NSNumberFormatter
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, numberFormatter)
    }
    unsafe fn setNumberFormatter_(&self, numberFormatter: NSNumberFormatter)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNumberFormatter : numberFormatter)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSPersonNameComponents(pub id);
impl std::ops::Deref for NSPersonNameComponents {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSPersonNameComponents {}
impl NSPersonNameComponents {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSPersonNameComponents").unwrap(), alloc) })
    }
}
impl PNSCopying for NSPersonNameComponents {}
impl PNSSecureCoding for NSPersonNameComponents {}
impl INSObject for NSPersonNameComponents {}
impl PNSObject for NSPersonNameComponents {}
impl std::convert::TryFrom<NSObject> for NSPersonNameComponents {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSPersonNameComponents, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSPersonNameComponents").unwrap()) };
        if is_kind_of {
            Ok(NSPersonNameComponents(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSPersonNameComponents")
        }
    }
}
impl INSPersonNameComponents for NSPersonNameComponents {}
pub trait INSPersonNameComponents: Sized + std::ops::Deref {
    unsafe fn namePrefix(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, namePrefix)
    }
    unsafe fn setNamePrefix_(&self, namePrefix: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNamePrefix : namePrefix)
    }
    unsafe fn givenName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, givenName)
    }
    unsafe fn setGivenName_(&self, givenName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGivenName : givenName)
    }
    unsafe fn middleName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, middleName)
    }
    unsafe fn setMiddleName_(&self, middleName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMiddleName : middleName)
    }
    unsafe fn familyName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, familyName)
    }
    unsafe fn setFamilyName_(&self, familyName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFamilyName : familyName)
    }
    unsafe fn nameSuffix(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nameSuffix)
    }
    unsafe fn setNameSuffix_(&self, nameSuffix: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNameSuffix : nameSuffix)
    }
    unsafe fn nickname(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nickname)
    }
    unsafe fn setNickname_(&self, nickname: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNickname : nickname)
    }
    unsafe fn phoneticRepresentation(&self) -> NSPersonNameComponents
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, phoneticRepresentation)
    }
    unsafe fn setPhoneticRepresentation_(&self, phoneticRepresentation: NSPersonNameComponents)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPhoneticRepresentation : phoneticRepresentation)
    }
}
pub type NSPersonNameComponentsFormatterStyle = NSInteger;
pub type NSPersonNameComponentsFormatterOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSPersonNameComponentsFormatter(pub id);
impl std::ops::Deref for NSPersonNameComponentsFormatter {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSPersonNameComponentsFormatter {}
impl NSPersonNameComponentsFormatter {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSPersonNameComponentsFormatter").unwrap(), alloc) })
    }
}
impl INSFormatter for NSPersonNameComponentsFormatter {}
impl PNSCopying for NSPersonNameComponentsFormatter {}
impl PNSCoding for NSPersonNameComponentsFormatter {}
impl std::convert::TryFrom<NSFormatter> for NSPersonNameComponentsFormatter {
    type Error = &'static str;
    fn try_from(parent: NSFormatter) -> Result<NSPersonNameComponentsFormatter, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSPersonNameComponentsFormatter").unwrap())
        };
        if is_kind_of {
            Ok(NSPersonNameComponentsFormatter(parent.0))
        } else {
            Err("This NSFormatter cannot be downcasted to NSPersonNameComponentsFormatter")
        }
    }
}
impl INSObject for NSPersonNameComponentsFormatter {}
impl PNSObject for NSPersonNameComponentsFormatter {}
impl INSPersonNameComponentsFormatter for NSPersonNameComponentsFormatter {}
pub trait INSPersonNameComponentsFormatter: Sized + std::ops::Deref {
    unsafe fn stringFromPersonNameComponents_(&self, components: NSPersonNameComponents) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringFromPersonNameComponents : components)
    }
    unsafe fn annotatedStringFromPersonNameComponents_(
        &self,
        components: NSPersonNameComponents,
    ) -> NSAttributedString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, annotatedStringFromPersonNameComponents : components)
    }
    unsafe fn personNameComponentsFromString_(&self, string: NSString) -> NSPersonNameComponents
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, personNameComponentsFromString : string)
    }
    unsafe fn getObjectValue_forString_errorDescription_(
        &self,
        obj: *mut id,
        string: NSString,
        error: *mut NSString,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getObjectValue : obj, forString : string, errorDescription : error)
    }
    unsafe fn style(&self) -> NSPersonNameComponentsFormatterStyle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, style)
    }
    unsafe fn setStyle_(&self, style: NSPersonNameComponentsFormatterStyle)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStyle : style)
    }
    unsafe fn isPhonetic(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isPhonetic)
    }
    unsafe fn setPhonetic_(&self, phonetic: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPhonetic : phonetic)
    }
    unsafe fn locale(&self) -> NSLocale
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, locale)
    }
    unsafe fn setLocale_(&self, locale: NSLocale)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocale : locale)
    }
    unsafe fn localizedStringFromPersonNameComponents_style_options_(
        components: NSPersonNameComponents,
        nameFormatStyle: NSPersonNameComponentsFormatterStyle,
        nameOptions: NSPersonNameComponentsFormatterOptions,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPersonNameComponentsFormatter").unwrap(), localizedStringFromPersonNameComponents : components, style : nameFormatStyle, options : nameOptions)
    }
}
pub type NSRelativeDateTimeFormatterStyle = NSInteger;
pub type NSRelativeDateTimeFormatterUnitsStyle = NSInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSRelativeDateTimeFormatter(pub id);
impl std::ops::Deref for NSRelativeDateTimeFormatter {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSRelativeDateTimeFormatter {}
impl NSRelativeDateTimeFormatter {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSRelativeDateTimeFormatter").unwrap(), alloc) })
    }
}
impl INSFormatter for NSRelativeDateTimeFormatter {}
impl PNSCopying for NSRelativeDateTimeFormatter {}
impl PNSCoding for NSRelativeDateTimeFormatter {}
impl std::convert::TryFrom<NSFormatter> for NSRelativeDateTimeFormatter {
    type Error = &'static str;
    fn try_from(parent: NSFormatter) -> Result<NSRelativeDateTimeFormatter, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSRelativeDateTimeFormatter").unwrap()) };
        if is_kind_of {
            Ok(NSRelativeDateTimeFormatter(parent.0))
        } else {
            Err("This NSFormatter cannot be downcasted to NSRelativeDateTimeFormatter")
        }
    }
}
impl INSObject for NSRelativeDateTimeFormatter {}
impl PNSObject for NSRelativeDateTimeFormatter {}
impl INSRelativeDateTimeFormatter for NSRelativeDateTimeFormatter {}
pub trait INSRelativeDateTimeFormatter: Sized + std::ops::Deref {
    unsafe fn localizedStringFromDateComponents_(
        &self,
        dateComponents: NSDateComponents,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, localizedStringFromDateComponents : dateComponents)
    }
    unsafe fn localizedStringFromTimeInterval_(&self, timeInterval: NSTimeInterval) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, localizedStringFromTimeInterval : timeInterval)
    }
    unsafe fn localizedStringForDate_relativeToDate_(
        &self,
        date: NSDate,
        referenceDate: NSDate,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, localizedStringForDate : date, relativeToDate : referenceDate)
    }
    unsafe fn stringForObjectValue_(&self, obj: id) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringForObjectValue : obj)
    }
    unsafe fn dateTimeStyle(&self) -> NSRelativeDateTimeFormatterStyle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dateTimeStyle)
    }
    unsafe fn setDateTimeStyle_(&self, dateTimeStyle: NSRelativeDateTimeFormatterStyle)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDateTimeStyle : dateTimeStyle)
    }
    unsafe fn unitsStyle(&self) -> NSRelativeDateTimeFormatterUnitsStyle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, unitsStyle)
    }
    unsafe fn setUnitsStyle_(&self, unitsStyle: NSRelativeDateTimeFormatterUnitsStyle)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUnitsStyle : unitsStyle)
    }
    unsafe fn formattingContext(&self) -> NSFormattingContext
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, formattingContext)
    }
    unsafe fn setFormattingContext_(&self, formattingContext: NSFormattingContext)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFormattingContext : formattingContext)
    }
    unsafe fn calendar(&self) -> NSCalendar
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, calendar)
    }
    unsafe fn setCalendar_(&self, calendar: NSCalendar)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCalendar : calendar)
    }
    unsafe fn locale(&self) -> NSLocale
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, locale)
    }
    unsafe fn setLocale_(&self, locale: NSLocale)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocale : locale)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSListFormatter(pub id);
impl std::ops::Deref for NSListFormatter {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSListFormatter {}
impl NSListFormatter {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSListFormatter").unwrap(), alloc) })
    }
}
impl INSFormatter for NSListFormatter {}
impl PNSCopying for NSListFormatter {}
impl PNSCoding for NSListFormatter {}
impl std::convert::TryFrom<NSFormatter> for NSListFormatter {
    type Error = &'static str;
    fn try_from(parent: NSFormatter) -> Result<NSListFormatter, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSListFormatter").unwrap()) };
        if is_kind_of {
            Ok(NSListFormatter(parent.0))
        } else {
            Err("This NSFormatter cannot be downcasted to NSListFormatter")
        }
    }
}
impl INSObject for NSListFormatter {}
impl PNSObject for NSListFormatter {}
impl INSListFormatter for NSListFormatter {}
pub trait INSListFormatter: Sized + std::ops::Deref {
    unsafe fn stringFromItems_(&self, items: NSArray) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringFromItems : items)
    }
    unsafe fn stringForObjectValue_(&self, obj: id) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringForObjectValue : obj)
    }
    unsafe fn locale(&self) -> NSLocale
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, locale)
    }
    unsafe fn setLocale_(&self, locale: NSLocale)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocale : locale)
    }
    unsafe fn itemFormatter(&self) -> NSFormatter
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, itemFormatter)
    }
    unsafe fn setItemFormatter_(&self, itemFormatter: NSFormatter)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setItemFormatter : itemFormatter)
    }
    unsafe fn localizedStringByJoiningStrings_(strings: NSArray) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSListFormatter").unwrap(), localizedStringByJoiningStrings : strings)
    }
}
pub type NSRoundingMode = NSUInteger;
pub type NSCalculationError = NSUInteger;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct NSDecimal {
    pub _bitfield_align_1: [u32; 0],
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>,
    pub _mantissa: [::std::os::raw::c_ushort; 8usize],
}
impl NSDecimal {
    #[inline]
    pub fn _exponent(&self) -> ::std::os::raw::c_int {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 8u8) as u32) }
    }
    #[inline]
    pub fn set__exponent(&mut self, val: ::std::os::raw::c_int) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 8u8, val as u64)
        }
    }
    #[inline]
    pub unsafe fn _exponent_raw(this: *const Self) -> ::std::os::raw::c_int {
        unsafe {
            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get(
                ::std::ptr::addr_of!((*this)._bitfield_1),
                0usize,
                8u8,
            ) as u32)
        }
    }
    #[inline]
    pub unsafe fn set__exponent_raw(this: *mut Self, val: ::std::os::raw::c_int) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set(
                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
                0usize,
                8u8,
                val as u64,
            )
        }
    }
    #[inline]
    pub fn _length(&self) -> ::std::os::raw::c_uint {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 4u8) as u32) }
    }
    #[inline]
    pub fn set__length(&mut self, val: ::std::os::raw::c_uint) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(8usize, 4u8, val as u64)
        }
    }
    #[inline]
    pub unsafe fn _length_raw(this: *const Self) -> ::std::os::raw::c_uint {
        unsafe {
            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get(
                ::std::ptr::addr_of!((*this)._bitfield_1),
                8usize,
                4u8,
            ) as u32)
        }
    }
    #[inline]
    pub unsafe fn set__length_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set(
                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
                8usize,
                4u8,
                val as u64,
            )
        }
    }
    #[inline]
    pub fn _isNegative(&self) -> ::std::os::raw::c_uint {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u32) }
    }
    #[inline]
    pub fn set__isNegative(&mut self, val: ::std::os::raw::c_uint) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(12usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub unsafe fn _isNegative_raw(this: *const Self) -> ::std::os::raw::c_uint {
        unsafe {
            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get(
                ::std::ptr::addr_of!((*this)._bitfield_1),
                12usize,
                1u8,
            ) as u32)
        }
    }
    #[inline]
    pub unsafe fn set__isNegative_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set(
                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
                12usize,
                1u8,
                val as u64,
            )
        }
    }
    #[inline]
    pub fn _isCompact(&self) -> ::std::os::raw::c_uint {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u32) }
    }
    #[inline]
    pub fn set__isCompact(&mut self, val: ::std::os::raw::c_uint) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(13usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub unsafe fn _isCompact_raw(this: *const Self) -> ::std::os::raw::c_uint {
        unsafe {
            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get(
                ::std::ptr::addr_of!((*this)._bitfield_1),
                13usize,
                1u8,
            ) as u32)
        }
    }
    #[inline]
    pub unsafe fn set__isCompact_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set(
                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
                13usize,
                1u8,
                val as u64,
            )
        }
    }
    #[inline]
    pub fn _reserved(&self) -> ::std::os::raw::c_uint {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(14usize, 18u8) as u32) }
    }
    #[inline]
    pub fn set__reserved(&mut self, val: ::std::os::raw::c_uint) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(14usize, 18u8, val as u64)
        }
    }
    #[inline]
    pub unsafe fn _reserved_raw(this: *const Self) -> ::std::os::raw::c_uint {
        unsafe {
            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get(
                ::std::ptr::addr_of!((*this)._bitfield_1),
                14usize,
                18u8,
            ) as u32)
        }
    }
    #[inline]
    pub unsafe fn set__reserved_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set(
                ::std::ptr::addr_of_mut!((*this)._bitfield_1),
                14usize,
                18u8,
                val as u64,
            )
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        _exponent: ::std::os::raw::c_int,
        _length: ::std::os::raw::c_uint,
        _isNegative: ::std::os::raw::c_uint,
        _isCompact: ::std::os::raw::c_uint,
        _reserved: ::std::os::raw::c_uint,
    ) -> __BindgenBitfieldUnit<[u8; 4usize]> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default();
        __bindgen_bitfield_unit.set(0usize, 8u8, {
            let _exponent: u32 = unsafe { ::std::mem::transmute(_exponent) };
            _exponent as u64
        });
        __bindgen_bitfield_unit.set(8usize, 4u8, {
            let _length: u32 = unsafe { ::std::mem::transmute(_length) };
            _length as u64
        });
        __bindgen_bitfield_unit.set(12usize, 1u8, {
            let _isNegative: u32 = unsafe { ::std::mem::transmute(_isNegative) };
            _isNegative as u64
        });
        __bindgen_bitfield_unit.set(13usize, 1u8, {
            let _isCompact: u32 = unsafe { ::std::mem::transmute(_isCompact) };
            _isCompact as u64
        });
        __bindgen_bitfield_unit.set(14usize, 18u8, {
            let _reserved: u32 = unsafe { ::std::mem::transmute(_reserved) };
            _reserved as u64
        });
        __bindgen_bitfield_unit
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSScanner(pub id);
impl std::ops::Deref for NSScanner {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSScanner {}
impl NSScanner {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSScanner").unwrap(), alloc) })
    }
}
impl PNSCopying for NSScanner {}
impl INSObject for NSScanner {}
impl PNSObject for NSScanner {}
impl std::convert::TryFrom<NSObject> for NSScanner {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSScanner, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSScanner").unwrap()) };
        if is_kind_of {
            Ok(NSScanner(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSScanner")
        }
    }
}
impl INSScanner for NSScanner {}
pub trait INSScanner: Sized + std::ops::Deref {
    unsafe fn initWithString_(&self, string: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithString : string)
    }
    unsafe fn string(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, string)
    }
    unsafe fn scanLocation(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, scanLocation)
    }
    unsafe fn setScanLocation_(&self, scanLocation: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setScanLocation : scanLocation)
    }
    unsafe fn charactersToBeSkipped(&self) -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, charactersToBeSkipped)
    }
    unsafe fn setCharactersToBeSkipped_(&self, charactersToBeSkipped: NSCharacterSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCharactersToBeSkipped : charactersToBeSkipped)
    }
    unsafe fn caseSensitive(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, caseSensitive)
    }
    unsafe fn setCaseSensitive_(&self, caseSensitive: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCaseSensitive : caseSensitive)
    }
    unsafe fn locale(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, locale)
    }
    unsafe fn setLocale_(&self, locale: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLocale : locale)
    }
}
impl NSScanner_NSExtendedScanner for NSScanner {}
pub trait NSScanner_NSExtendedScanner: Sized + std::ops::Deref {
    unsafe fn scanInt_(&self, result: *mut ::std::os::raw::c_int) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scanInt : result)
    }
    unsafe fn scanInteger_(&self, result: *mut NSInteger) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scanInteger : result)
    }
    unsafe fn scanLongLong_(&self, result: *mut ::std::os::raw::c_longlong) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scanLongLong : result)
    }
    unsafe fn scanUnsignedLongLong_(&self, result: *mut ::std::os::raw::c_ulonglong) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scanUnsignedLongLong : result)
    }
    unsafe fn scanFloat_(&self, result: *mut f32) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scanFloat : result)
    }
    unsafe fn scanDouble_(&self, result: *mut f64) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scanDouble : result)
    }
    unsafe fn scanHexInt_(&self, result: *mut ::std::os::raw::c_uint) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scanHexInt : result)
    }
    unsafe fn scanHexLongLong_(&self, result: *mut ::std::os::raw::c_ulonglong) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scanHexLongLong : result)
    }
    unsafe fn scanHexFloat_(&self, result: *mut f32) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scanHexFloat : result)
    }
    unsafe fn scanHexDouble_(&self, result: *mut f64) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scanHexDouble : result)
    }
    unsafe fn scanString_intoString_(&self, string: NSString, result: *mut NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scanString : string, intoString : result)
    }
    unsafe fn scanCharactersFromSet_intoString_(
        &self,
        set: NSCharacterSet,
        result: *mut NSString,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scanCharactersFromSet : set, intoString : result)
    }
    unsafe fn scanUpToString_intoString_(&self, string: NSString, result: *mut NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scanUpToString : string, intoString : result)
    }
    unsafe fn scanUpToCharactersFromSet_intoString_(
        &self,
        set: NSCharacterSet,
        result: *mut NSString,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scanUpToCharactersFromSet : set, intoString : result)
    }
    unsafe fn isAtEnd(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isAtEnd)
    }
    unsafe fn scannerWithString_(string: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSScanner").unwrap(), scannerWithString : string)
    }
    unsafe fn localizedScannerWithString_(string: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSScanner").unwrap(), localizedScannerWithString : string)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSException(pub id);
impl std::ops::Deref for NSException {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSException {}
impl NSException {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSException").unwrap(), alloc) })
    }
}
impl PNSCopying for NSException {}
impl PNSSecureCoding for NSException {}
impl INSObject for NSException {}
impl PNSObject for NSException {}
impl std::convert::TryFrom<NSObject> for NSException {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSException, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSException").unwrap()) };
        if is_kind_of {
            Ok(NSException(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSException")
        }
    }
}
impl INSException for NSException {}
pub trait INSException: Sized + std::ops::Deref {
    unsafe fn initWithName_reason_userInfo_(
        &self,
        aName: NSString,
        aReason: NSString,
        aUserInfo: NSDictionary,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithName : aName, reason : aReason, userInfo : aUserInfo)
    }
    unsafe fn raise(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, raise)
    }
    unsafe fn name(&self) -> NSExceptionName
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn reason(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reason)
    }
    unsafe fn userInfo(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userInfo)
    }
    unsafe fn callStackReturnAddresses(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, callStackReturnAddresses)
    }
    unsafe fn callStackSymbols(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, callStackSymbols)
    }
    unsafe fn exceptionWithName_reason_userInfo_(
        name: NSString,
        reason: NSString,
        userInfo: NSDictionary,
    ) -> NSException
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSException").unwrap(), exceptionWithName : name, reason : reason, userInfo : userInfo)
    }
}
impl NSException_NSExceptionRaisingConveniences for NSException {}
pub trait NSException_NSExceptionRaisingConveniences: Sized + std::ops::Deref {
    unsafe fn raise_format_(name: NSString, format: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSException").unwrap(), raise : name, format : format)
    }
    unsafe fn raise_format_arguments_(name: NSString, format: NSString, argList: va_list)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSException").unwrap(), raise : name, format : format, arguments : argList)
    }
}
pub type NSUncaughtExceptionHandler =
    ::std::option::Option<unsafe extern "C" fn(exception: NSException)>;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSAssertionHandler(pub id);
impl std::ops::Deref for NSAssertionHandler {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSAssertionHandler {}
impl NSAssertionHandler {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSAssertionHandler").unwrap(), alloc) })
    }
}
impl INSObject for NSAssertionHandler {}
impl PNSObject for NSAssertionHandler {}
impl std::convert::TryFrom<NSObject> for NSAssertionHandler {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSAssertionHandler, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSAssertionHandler").unwrap()) };
        if is_kind_of {
            Ok(NSAssertionHandler(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSAssertionHandler")
        }
    }
}
impl INSAssertionHandler for NSAssertionHandler {}
pub trait INSAssertionHandler: Sized + std::ops::Deref {
    unsafe fn handleFailureInMethod_object_file_lineNumber_description_(
        &self,
        selector: objc2::runtime::Sel,
        object: id,
        fileName: NSString,
        line: NSInteger,
        format: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, handleFailureInMethod : selector, object : object, file : fileName, lineNumber : line, description : format)
    }
    unsafe fn handleFailureInFunction_file_lineNumber_description_(
        &self,
        functionName: NSString,
        fileName: NSString,
        line: NSInteger,
        format: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, handleFailureInFunction : functionName, file : fileName, lineNumber : line, description : format)
    }
    unsafe fn currentHandler() -> NSAssertionHandler
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAssertionHandler").unwrap(), currentHandler)
    }
}
pub trait PNSDecimalNumberBehaviors: Sized + std::ops::Deref {
    unsafe fn roundingMode(&self) -> NSRoundingMode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, roundingMode)
    }
    unsafe fn scale(&self) -> ::std::os::raw::c_short
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, scale)
    }
    unsafe fn exceptionDuringOperation_error_leftOperand_rightOperand_(
        &self,
        operation: objc2::runtime::Sel,
        error: NSCalculationError,
        leftOperand: NSDecimalNumber,
        rightOperand: NSDecimalNumber,
    ) -> NSDecimalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, exceptionDuringOperation : operation, error : error, leftOperand : leftOperand, rightOperand : rightOperand)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSDecimalNumber(pub id);
impl std::ops::Deref for NSDecimalNumber {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSDecimalNumber {}
impl NSDecimalNumber {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSDecimalNumber").unwrap(), alloc) })
    }
}
impl INSNumber for NSDecimalNumber {}
impl From<NSDecimalNumber> for NSNumber {
    fn from(child: NSDecimalNumber) -> NSNumber {
        NSNumber(child.0)
    }
}
impl std::convert::TryFrom<NSNumber> for NSDecimalNumber {
    type Error = &'static str;
    fn try_from(parent: NSNumber) -> Result<NSDecimalNumber, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSDecimalNumber").unwrap()) };
        if is_kind_of {
            Ok(NSDecimalNumber(parent.0))
        } else {
            Err("This NSNumber cannot be downcasted to NSDecimalNumber")
        }
    }
}
impl INSValue for NSDecimalNumber {}
impl PNSCopying for NSDecimalNumber {}
impl PNSSecureCoding for NSDecimalNumber {}
impl INSObject for NSDecimalNumber {}
impl PNSObject for NSDecimalNumber {}
impl INSDecimalNumber for NSDecimalNumber {}
pub trait INSDecimalNumber: Sized + std::ops::Deref {
    unsafe fn initWithMantissa_exponent_isNegative_(
        &self,
        mantissa: ::std::os::raw::c_ulonglong,
        exponent: ::std::os::raw::c_short,
        flag: BOOL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithMantissa : mantissa, exponent : exponent, isNegative : flag)
    }
    unsafe fn initWithDecimal_(&self, dcm: NSDecimal) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDecimal : dcm)
    }
    unsafe fn initWithString_(&self, numberValue: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithString : numberValue)
    }
    unsafe fn initWithString_locale_(&self, numberValue: NSString, locale: id) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithString : numberValue, locale : locale)
    }
    unsafe fn descriptionWithLocale_(&self, locale: id) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, descriptionWithLocale : locale)
    }
    unsafe fn decimalNumberByAdding_(&self, decimalNumber: NSDecimalNumber) -> NSDecimalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decimalNumberByAdding : decimalNumber)
    }
    unsafe fn decimalNumberByAdding_withBehavior_(
        &self,
        decimalNumber: NSDecimalNumber,
        behavior: *mut u64,
    ) -> NSDecimalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decimalNumberByAdding : decimalNumber, withBehavior : behavior)
    }
    unsafe fn decimalNumberBySubtracting_(&self, decimalNumber: NSDecimalNumber) -> NSDecimalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decimalNumberBySubtracting : decimalNumber)
    }
    unsafe fn decimalNumberBySubtracting_withBehavior_(
        &self,
        decimalNumber: NSDecimalNumber,
        behavior: *mut u64,
    ) -> NSDecimalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decimalNumberBySubtracting : decimalNumber, withBehavior : behavior)
    }
    unsafe fn decimalNumberByMultiplyingBy_(
        &self,
        decimalNumber: NSDecimalNumber,
    ) -> NSDecimalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decimalNumberByMultiplyingBy : decimalNumber)
    }
    unsafe fn decimalNumberByMultiplyingBy_withBehavior_(
        &self,
        decimalNumber: NSDecimalNumber,
        behavior: *mut u64,
    ) -> NSDecimalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decimalNumberByMultiplyingBy : decimalNumber, withBehavior : behavior)
    }
    unsafe fn decimalNumberByDividingBy_(&self, decimalNumber: NSDecimalNumber) -> NSDecimalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decimalNumberByDividingBy : decimalNumber)
    }
    unsafe fn decimalNumberByDividingBy_withBehavior_(
        &self,
        decimalNumber: NSDecimalNumber,
        behavior: *mut u64,
    ) -> NSDecimalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decimalNumberByDividingBy : decimalNumber, withBehavior : behavior)
    }
    unsafe fn decimalNumberByRaisingToPower_(&self, power: NSUInteger) -> NSDecimalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decimalNumberByRaisingToPower : power)
    }
    unsafe fn decimalNumberByRaisingToPower_withBehavior_(
        &self,
        power: NSUInteger,
        behavior: *mut u64,
    ) -> NSDecimalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decimalNumberByRaisingToPower : power, withBehavior : behavior)
    }
    unsafe fn decimalNumberByMultiplyingByPowerOf10_(
        &self,
        power: ::std::os::raw::c_short,
    ) -> NSDecimalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decimalNumberByMultiplyingByPowerOf10 : power)
    }
    unsafe fn decimalNumberByMultiplyingByPowerOf10_withBehavior_(
        &self,
        power: ::std::os::raw::c_short,
        behavior: *mut u64,
    ) -> NSDecimalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decimalNumberByMultiplyingByPowerOf10 : power, withBehavior : behavior)
    }
    unsafe fn decimalNumberByRoundingAccordingToBehavior_(
        &self,
        behavior: *mut u64,
    ) -> NSDecimalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decimalNumberByRoundingAccordingToBehavior : behavior)
    }
    unsafe fn compare_(&self, decimalNumber: NSNumber) -> NSComparisonResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, compare : decimalNumber)
    }
    unsafe fn decimalValue(&self) -> NSDecimal
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, decimalValue)
    }
    unsafe fn objCType(&self) -> *const ::std::os::raw::c_char
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, objCType)
    }
    unsafe fn doubleValue(&self) -> f64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, doubleValue)
    }
    unsafe fn decimalNumberWithMantissa_exponent_isNegative_(
        mantissa: ::std::os::raw::c_ulonglong,
        exponent: ::std::os::raw::c_short,
        flag: BOOL,
    ) -> NSDecimalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDecimalNumber").unwrap(), decimalNumberWithMantissa : mantissa, exponent : exponent, isNegative : flag)
    }
    unsafe fn decimalNumberWithDecimal_(dcm: NSDecimal) -> NSDecimalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDecimalNumber").unwrap(), decimalNumberWithDecimal : dcm)
    }
    unsafe fn decimalNumberWithString_(numberValue: NSString) -> NSDecimalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDecimalNumber").unwrap(), decimalNumberWithString : numberValue)
    }
    unsafe fn decimalNumberWithString_locale_(numberValue: NSString, locale: id) -> NSDecimalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDecimalNumber").unwrap(), decimalNumberWithString : numberValue, locale : locale)
    }
    unsafe fn zero() -> NSDecimalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDecimalNumber").unwrap(), zero)
    }
    unsafe fn one() -> NSDecimalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDecimalNumber").unwrap(), one)
    }
    unsafe fn minimumDecimalNumber() -> NSDecimalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDecimalNumber").unwrap(), minimumDecimalNumber)
    }
    unsafe fn maximumDecimalNumber() -> NSDecimalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDecimalNumber").unwrap(), maximumDecimalNumber)
    }
    unsafe fn notANumber() -> NSDecimalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDecimalNumber").unwrap(), notANumber)
    }
    unsafe fn defaultBehavior() -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDecimalNumber").unwrap(), defaultBehavior)
    }
    unsafe fn setDefaultBehavior_(defaultBehavior: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDecimalNumber").unwrap(), setDefaultBehavior : defaultBehavior)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSDecimalNumberHandler(pub id);
impl std::ops::Deref for NSDecimalNumberHandler {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSDecimalNumberHandler {}
impl NSDecimalNumberHandler {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSDecimalNumberHandler").unwrap(), alloc) })
    }
}
impl PNSDecimalNumberBehaviors for NSDecimalNumberHandler {}
impl PNSCoding for NSDecimalNumberHandler {}
impl INSObject for NSDecimalNumberHandler {}
impl PNSObject for NSDecimalNumberHandler {}
impl std::convert::TryFrom<NSObject> for NSDecimalNumberHandler {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSDecimalNumberHandler, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSDecimalNumberHandler").unwrap()) };
        if is_kind_of {
            Ok(NSDecimalNumberHandler(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSDecimalNumberHandler")
        }
    }
}
impl INSDecimalNumberHandler for NSDecimalNumberHandler {}
pub trait INSDecimalNumberHandler: Sized + std::ops::Deref {
    unsafe fn initWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_(
        &self,
        roundingMode: NSRoundingMode,
        scale: ::std::os::raw::c_short,
        exact: BOOL,
        overflow: BOOL,
        underflow: BOOL,
        divideByZero: BOOL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithRoundingMode : roundingMode, scale : scale, raiseOnExactness : exact, raiseOnOverflow : overflow, raiseOnUnderflow : underflow, raiseOnDivideByZero : divideByZero)
    }
    unsafe fn decimalNumberHandlerWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_(
        roundingMode: NSRoundingMode,
        scale: ::std::os::raw::c_short,
        exact: BOOL,
        overflow: BOOL,
        underflow: BOOL,
        divideByZero: BOOL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDecimalNumberHandler").unwrap(), decimalNumberHandlerWithRoundingMode : roundingMode, scale : scale, raiseOnExactness : exact, raiseOnOverflow : overflow, raiseOnUnderflow : underflow, raiseOnDivideByZero : divideByZero)
    }
    unsafe fn defaultDecimalNumberHandler() -> NSDecimalNumberHandler
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDecimalNumberHandler").unwrap(), defaultDecimalNumberHandler)
    }
}
impl NSNumber_NSDecimalNumberExtensions for NSNumber {}
pub trait NSNumber_NSDecimalNumberExtensions: Sized + std::ops::Deref {
    unsafe fn decimalValue(&self) -> NSDecimal
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, decimalValue)
    }
}
impl NSScanner_NSDecimalNumberScanning for NSScanner {}
pub trait NSScanner_NSDecimalNumberScanning: Sized + std::ops::Deref {
    unsafe fn scanDecimal_(&self, dcm: *mut NSDecimal) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scanDecimal : dcm)
    }
}
pub type NSErrorDomain = NSString;
pub type NSErrorUserInfoKey = NSString;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSError(pub id);
impl std::ops::Deref for NSError {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSError {}
impl NSError {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSError").unwrap(), alloc) })
    }
}
impl PNSCopying for NSError {}
impl PNSSecureCoding for NSError {}
impl INSObject for NSError {}
impl PNSObject for NSError {}
impl std::convert::TryFrom<NSObject> for NSError {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSError, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSError").unwrap()) };
        if is_kind_of {
            Ok(NSError(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSError")
        }
    }
}
impl INSError for NSError {}
pub trait INSError: Sized + std::ops::Deref {
    unsafe fn initWithDomain_code_userInfo_(
        &self,
        domain: NSString,
        code: NSInteger,
        dict: NSDictionary,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDomain : domain, code : code, userInfo : dict)
    }
    unsafe fn domain(&self) -> NSErrorDomain
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, domain)
    }
    unsafe fn code(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, code)
    }
    unsafe fn userInfo(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userInfo)
    }
    unsafe fn localizedDescription(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localizedDescription)
    }
    unsafe fn localizedFailureReason(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localizedFailureReason)
    }
    unsafe fn localizedRecoverySuggestion(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localizedRecoverySuggestion)
    }
    unsafe fn localizedRecoveryOptions(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localizedRecoveryOptions)
    }
    unsafe fn recoveryAttempter(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, recoveryAttempter)
    }
    unsafe fn helpAnchor(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, helpAnchor)
    }
    unsafe fn underlyingErrors(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, underlyingErrors)
    }
    unsafe fn errorWithDomain_code_userInfo_(
        domain: NSString,
        code: NSInteger,
        dict: NSDictionary,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSError").unwrap(), errorWithDomain : domain, code : code, userInfo : dict)
    }
    unsafe fn setUserInfoValueProviderForDomain_provider_(
        errorDomain: NSString,
        provider: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSError").unwrap(), setUserInfoValueProviderForDomain : errorDomain, provider : provider)
    }
    unsafe fn userInfoValueProviderForDomain_(errorDomain: NSString) -> *mut ::std::os::raw::c_void
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSError").unwrap(), userInfoValueProviderForDomain : errorDomain)
    }
}
pub trait NSObject_NSErrorRecoveryAttempting: Sized + std::ops::Deref {
    unsafe fn attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_(
        &self,
        error: NSError,
        recoveryOptionIndex: NSUInteger,
        delegate: id,
        didRecoverSelector: objc2::runtime::Sel,
        contextInfo: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, attemptRecoveryFromError : error, optionIndex : recoveryOptionIndex, delegate : delegate, didRecoverSelector : didRecoverSelector, contextInfo : contextInfo)
    }
    unsafe fn attemptRecoveryFromError_optionIndex_(
        &self,
        error: NSError,
        recoveryOptionIndex: NSUInteger,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, attemptRecoveryFromError : error, optionIndex : recoveryOptionIndex)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSRunLoop(pub id);
impl std::ops::Deref for NSRunLoop {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSRunLoop {}
impl NSRunLoop {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSRunLoop").unwrap(), alloc) })
    }
}
impl INSObject for NSRunLoop {}
impl PNSObject for NSRunLoop {}
impl std::convert::TryFrom<NSObject> for NSRunLoop {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSRunLoop, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSRunLoop").unwrap()) };
        if is_kind_of {
            Ok(NSRunLoop(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSRunLoop")
        }
    }
}
impl INSRunLoop for NSRunLoop {}
pub trait INSRunLoop: Sized + std::ops::Deref {
    unsafe fn getCFRunLoop(&self) -> CFRunLoopRef
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, getCFRunLoop)
    }
    unsafe fn addTimer_forMode_(&self, timer: NSTimer, mode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addTimer : timer, forMode : mode)
    }
    unsafe fn addPort_forMode_(&self, aPort: NSPort, mode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addPort : aPort, forMode : mode)
    }
    unsafe fn removePort_forMode_(&self, aPort: NSPort, mode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removePort : aPort, forMode : mode)
    }
    unsafe fn limitDateForMode_(&self, mode: NSString) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, limitDateForMode : mode)
    }
    unsafe fn acceptInputForMode_beforeDate_(&self, mode: NSString, limitDate: NSDate)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, acceptInputForMode : mode, beforeDate : limitDate)
    }
    unsafe fn currentMode(&self) -> NSRunLoopMode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentMode)
    }
    unsafe fn currentRunLoop() -> NSRunLoop
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSRunLoop").unwrap(), currentRunLoop)
    }
    unsafe fn mainRunLoop() -> NSRunLoop
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSRunLoop").unwrap(), mainRunLoop)
    }
}
impl NSRunLoop_NSRunLoopConveniences for NSRunLoop {}
pub trait NSRunLoop_NSRunLoopConveniences: Sized + std::ops::Deref {
    unsafe fn run(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, run)
    }
    unsafe fn runUntilDate_(&self, limitDate: NSDate)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, runUntilDate : limitDate)
    }
    unsafe fn runMode_beforeDate_(&self, mode: NSString, limitDate: NSDate) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, runMode : mode, beforeDate : limitDate)
    }
    unsafe fn configureAsServer(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, configureAsServer)
    }
    unsafe fn performInModes_block_(&self, modes: NSArray, block: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, performInModes : modes, block : block)
    }
    unsafe fn performBlock_(&self, block: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, performBlock : block)
    }
}
pub trait NSObject_NSDelayedPerforming: Sized + std::ops::Deref {
    unsafe fn performSelector_withObject_afterDelay_inModes_(
        &self,
        aSelector: objc2::runtime::Sel,
        anArgument: id,
        delay: NSTimeInterval,
        modes: NSArray,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, performSelector : aSelector, withObject : anArgument, afterDelay : delay, inModes : modes)
    }
    unsafe fn performSelector_withObject_afterDelay_(
        &self,
        aSelector: objc2::runtime::Sel,
        anArgument: id,
        delay: NSTimeInterval,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, performSelector : aSelector, withObject : anArgument, afterDelay : delay)
    }
    unsafe fn cancelPreviousPerformRequestsWithTarget_selector_object_(
        aTarget: id,
        aSelector: objc2::runtime::Sel,
        anArgument: id,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSObject").unwrap(), cancelPreviousPerformRequestsWithTarget : aTarget, selector : aSelector, object : anArgument)
    }
    unsafe fn cancelPreviousPerformRequestsWithTarget_(aTarget: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSObject").unwrap(), cancelPreviousPerformRequestsWithTarget : aTarget)
    }
}
impl NSRunLoop_NSOrderedPerform for NSRunLoop {}
pub trait NSRunLoop_NSOrderedPerform: Sized + std::ops::Deref {
    unsafe fn performSelector_target_argument_order_modes_(
        &self,
        aSelector: objc2::runtime::Sel,
        target: id,
        arg: id,
        order: NSUInteger,
        modes: NSArray,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, performSelector : aSelector, target : target, argument : arg, order : order, modes : modes)
    }
    unsafe fn cancelPerformSelector_target_argument_(
        &self,
        aSelector: objc2::runtime::Sel,
        target: id,
        arg: id,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelPerformSelector : aSelector, target : target, argument : arg)
    }
    unsafe fn cancelPerformSelectorsWithTarget_(&self, target: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelPerformSelectorsWithTarget : target)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSFileHandle(pub id);
impl std::ops::Deref for NSFileHandle {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSFileHandle {}
impl NSFileHandle {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileHandle").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSFileHandle {}
impl INSObject for NSFileHandle {}
impl PNSObject for NSFileHandle {}
impl std::convert::TryFrom<NSObject> for NSFileHandle {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSFileHandle, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSFileHandle").unwrap()) };
        if is_kind_of {
            Ok(NSFileHandle(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSFileHandle")
        }
    }
}
impl INSFileHandle for NSFileHandle {}
pub trait INSFileHandle: Sized + std::ops::Deref {
    unsafe fn initWithFileDescriptor_closeOnDealloc_(
        &self,
        fd: ::std::os::raw::c_int,
        closeopt: BOOL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithFileDescriptor : fd, closeOnDealloc : closeopt)
    }
    unsafe fn initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
    unsafe fn readDataToEndOfFileAndReturnError_(&self, error: *mut NSError) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readDataToEndOfFileAndReturnError : error)
    }
    unsafe fn readDataUpToLength_error_(&self, length: NSUInteger, error: *mut NSError) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readDataUpToLength : length, error : error)
    }
    unsafe fn writeData_error_(&self, data: NSData, error: *mut NSError) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeData : data, error : error)
    }
    unsafe fn getOffset_error_(
        &self,
        offsetInFile: *mut ::std::os::raw::c_ulonglong,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getOffset : offsetInFile, error : error)
    }
    unsafe fn seekToEndReturningOffset_error_(
        &self,
        offsetInFile: *mut ::std::os::raw::c_ulonglong,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, seekToEndReturningOffset : offsetInFile, error : error)
    }
    unsafe fn seekToOffset_error_(
        &self,
        offset: ::std::os::raw::c_ulonglong,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, seekToOffset : offset, error : error)
    }
    unsafe fn truncateAtOffset_error_(
        &self,
        offset: ::std::os::raw::c_ulonglong,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, truncateAtOffset : offset, error : error)
    }
    unsafe fn synchronizeAndReturnError_(&self, error: *mut NSError) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, synchronizeAndReturnError : error)
    }
    unsafe fn closeAndReturnError_(&self, error: *mut NSError) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, closeAndReturnError : error)
    }
    unsafe fn availableData(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, availableData)
    }
}
impl NSFileHandle_NSFileHandleCreation for NSFileHandle {}
pub trait NSFileHandle_NSFileHandleCreation: Sized + std::ops::Deref {
    unsafe fn fileHandleForReadingAtPath_(path: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileHandle").unwrap(), fileHandleForReadingAtPath : path)
    }
    unsafe fn fileHandleForWritingAtPath_(path: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileHandle").unwrap(), fileHandleForWritingAtPath : path)
    }
    unsafe fn fileHandleForUpdatingAtPath_(path: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileHandle").unwrap(), fileHandleForUpdatingAtPath : path)
    }
    unsafe fn fileHandleForReadingFromURL_error_(url: NSURL, error: *mut NSError) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileHandle").unwrap(), fileHandleForReadingFromURL : url, error : error)
    }
    unsafe fn fileHandleForWritingToURL_error_(url: NSURL, error: *mut NSError) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileHandle").unwrap(), fileHandleForWritingToURL : url, error : error)
    }
    unsafe fn fileHandleForUpdatingURL_error_(url: NSURL, error: *mut NSError) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileHandle").unwrap(), fileHandleForUpdatingURL : url, error : error)
    }
    unsafe fn fileHandleWithStandardInput() -> NSFileHandle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileHandle").unwrap(), fileHandleWithStandardInput)
    }
    unsafe fn fileHandleWithStandardOutput() -> NSFileHandle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileHandle").unwrap(), fileHandleWithStandardOutput)
    }
    unsafe fn fileHandleWithStandardError() -> NSFileHandle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileHandle").unwrap(), fileHandleWithStandardError)
    }
    unsafe fn fileHandleWithNullDevice() -> NSFileHandle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileHandle").unwrap(), fileHandleWithNullDevice)
    }
}
impl NSFileHandle_NSFileHandleAsynchronousAccess for NSFileHandle {}
pub trait NSFileHandle_NSFileHandleAsynchronousAccess: Sized + std::ops::Deref {
    unsafe fn readInBackgroundAndNotifyForModes_(&self, modes: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readInBackgroundAndNotifyForModes : modes)
    }
    unsafe fn readInBackgroundAndNotify(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, readInBackgroundAndNotify)
    }
    unsafe fn readToEndOfFileInBackgroundAndNotifyForModes_(&self, modes: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readToEndOfFileInBackgroundAndNotifyForModes : modes)
    }
    unsafe fn readToEndOfFileInBackgroundAndNotify(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, readToEndOfFileInBackgroundAndNotify)
    }
    unsafe fn acceptConnectionInBackgroundAndNotifyForModes_(&self, modes: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, acceptConnectionInBackgroundAndNotifyForModes : modes)
    }
    unsafe fn acceptConnectionInBackgroundAndNotify(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, acceptConnectionInBackgroundAndNotify)
    }
    unsafe fn waitForDataInBackgroundAndNotifyForModes_(&self, modes: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, waitForDataInBackgroundAndNotifyForModes : modes)
    }
    unsafe fn waitForDataInBackgroundAndNotify(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, waitForDataInBackgroundAndNotify)
    }
    unsafe fn readabilityHandler(&self) -> *mut ::std::os::raw::c_void
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, readabilityHandler)
    }
    unsafe fn setReadabilityHandler_(&self, readabilityHandler: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReadabilityHandler : readabilityHandler)
    }
    unsafe fn writeabilityHandler(&self) -> *mut ::std::os::raw::c_void
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, writeabilityHandler)
    }
    unsafe fn setWriteabilityHandler_(&self, writeabilityHandler: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWriteabilityHandler : writeabilityHandler)
    }
}
impl NSFileHandle_NSFileHandlePlatformSpecific for NSFileHandle {}
pub trait NSFileHandle_NSFileHandlePlatformSpecific: Sized + std::ops::Deref {
    unsafe fn initWithFileDescriptor_(&self, fd: ::std::os::raw::c_int) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithFileDescriptor : fd)
    }
    unsafe fn fileDescriptor(&self) -> ::std::os::raw::c_int
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileDescriptor)
    }
}
impl NSFileHandle_ for NSFileHandle {}
pub trait NSFileHandle_: Sized + std::ops::Deref {
    unsafe fn readDataToEndOfFile(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, readDataToEndOfFile)
    }
    unsafe fn readDataOfLength_(&self, length: NSUInteger) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readDataOfLength : length)
    }
    unsafe fn writeData_(&self, data: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeData : data)
    }
    unsafe fn offsetInFile(&self) -> ::std::os::raw::c_ulonglong
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, offsetInFile)
    }
    unsafe fn seekToEndOfFile(&self) -> ::std::os::raw::c_ulonglong
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, seekToEndOfFile)
    }
    unsafe fn seekToFileOffset_(&self, offset: ::std::os::raw::c_ulonglong)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, seekToFileOffset : offset)
    }
    unsafe fn truncateFileAtOffset_(&self, offset: ::std::os::raw::c_ulonglong)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, truncateFileAtOffset : offset)
    }
    unsafe fn synchronizeFile(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, synchronizeFile)
    }
    unsafe fn closeFile(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, closeFile)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSPipe(pub id);
impl std::ops::Deref for NSPipe {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSPipe {}
impl NSPipe {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSPipe").unwrap(), alloc) })
    }
}
impl INSObject for NSPipe {}
impl PNSObject for NSPipe {}
impl std::convert::TryFrom<NSObject> for NSPipe {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSPipe, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSPipe").unwrap()) };
        if is_kind_of {
            Ok(NSPipe(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSPipe")
        }
    }
}
impl INSPipe for NSPipe {}
pub trait INSPipe: Sized + std::ops::Deref {
    unsafe fn fileHandleForReading(&self) -> NSFileHandle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileHandleForReading)
    }
    unsafe fn fileHandleForWriting(&self) -> NSFileHandle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileHandleForWriting)
    }
    unsafe fn pipe() -> NSPipe
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPipe").unwrap(), pipe)
    }
}
impl NSString_NSStringPathExtensions for NSString {}
pub trait NSString_NSStringPathExtensions: Sized + std::ops::Deref {
    unsafe fn stringByAppendingPathComponent_(&self, str_: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringByAppendingPathComponent : str_)
    }
    unsafe fn stringByAppendingPathExtension_(&self, str_: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringByAppendingPathExtension : str_)
    }
    unsafe fn stringsByAppendingPaths_(&self, paths: NSArray) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringsByAppendingPaths : paths)
    }
    unsafe fn completePathIntoString_caseSensitive_matchesIntoArray_filterTypes_(
        &self,
        outputName: *mut NSString,
        flag: BOOL,
        outputArray: *mut NSArray,
        filterTypes: NSArray,
    ) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, completePathIntoString : outputName, caseSensitive : flag, matchesIntoArray : outputArray, filterTypes : filterTypes)
    }
    unsafe fn getFileSystemRepresentation_maxLength_(
        &self,
        cname: *mut ::std::os::raw::c_char,
        max: NSUInteger,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getFileSystemRepresentation : cname, maxLength : max)
    }
    unsafe fn pathComponents(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pathComponents)
    }
    unsafe fn isAbsolutePath(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isAbsolutePath)
    }
    unsafe fn lastPathComponent(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lastPathComponent)
    }
    unsafe fn stringByDeletingLastPathComponent(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stringByDeletingLastPathComponent)
    }
    unsafe fn pathExtension(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pathExtension)
    }
    unsafe fn stringByDeletingPathExtension(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stringByDeletingPathExtension)
    }
    unsafe fn stringByAbbreviatingWithTildeInPath(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stringByAbbreviatingWithTildeInPath)
    }
    unsafe fn stringByExpandingTildeInPath(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stringByExpandingTildeInPath)
    }
    unsafe fn stringByStandardizingPath(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stringByStandardizingPath)
    }
    unsafe fn stringByResolvingSymlinksInPath(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stringByResolvingSymlinksInPath)
    }
    unsafe fn fileSystemRepresentation(&self) -> *const ::std::os::raw::c_char
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileSystemRepresentation)
    }
    unsafe fn pathWithComponents_(components: NSArray) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSString").unwrap(), pathWithComponents : components)
    }
}
impl<ObjectType: 'static> NSArray_NSArrayPathExtensions<ObjectType> for NSArray {}
pub trait NSArray_NSArrayPathExtensions<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn pathsMatchingExtensions_(&self, filterTypes: NSArray) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pathsMatchingExtensions : filterTypes)
    }
}
pub type NSSearchPathDirectory = NSUInteger;
pub type NSSearchPathDomainMask = NSUInteger;
pub type NSURLHandleStatus = NSUInteger;
pub trait PNSURLHandleClient: Sized + std::ops::Deref {
    unsafe fn URLHandle_resourceDataDidBecomeAvailable_(
        &self,
        sender: NSURLHandle,
        newBytes: NSData,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLHandle : sender, resourceDataDidBecomeAvailable : newBytes)
    }
    unsafe fn URLHandleResourceDidBeginLoading_(&self, sender: NSURLHandle)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLHandleResourceDidBeginLoading : sender)
    }
    unsafe fn URLHandleResourceDidFinishLoading_(&self, sender: NSURLHandle)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLHandleResourceDidFinishLoading : sender)
    }
    unsafe fn URLHandleResourceDidCancelLoading_(&self, sender: NSURLHandle)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLHandleResourceDidCancelLoading : sender)
    }
    unsafe fn URLHandle_resourceDidFailLoadingWithReason_(
        &self,
        sender: NSURLHandle,
        reason: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLHandle : sender, resourceDidFailLoadingWithReason : reason)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLHandle(pub id);
impl std::ops::Deref for NSURLHandle {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLHandle {}
impl NSURLHandle {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLHandle").unwrap(), alloc) })
    }
}
impl INSObject for NSURLHandle {}
impl PNSObject for NSURLHandle {}
impl std::convert::TryFrom<NSObject> for NSURLHandle {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSURLHandle, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLHandle").unwrap()) };
        if is_kind_of {
            Ok(NSURLHandle(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSURLHandle")
        }
    }
}
impl INSURLHandle for NSURLHandle {}
pub trait INSURLHandle: Sized + std::ops::Deref {
    unsafe fn status(&self) -> NSURLHandleStatus
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, status)
    }
    unsafe fn failureReason(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, failureReason)
    }
    unsafe fn addClient_(&self, client: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addClient : client)
    }
    unsafe fn removeClient_(&self, client: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeClient : client)
    }
    unsafe fn loadInBackground(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, loadInBackground)
    }
    unsafe fn cancelLoadInBackground(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cancelLoadInBackground)
    }
    unsafe fn resourceData(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, resourceData)
    }
    unsafe fn availableResourceData(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, availableResourceData)
    }
    unsafe fn expectedResourceDataSize(&self) -> ::std::os::raw::c_longlong
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, expectedResourceDataSize)
    }
    unsafe fn flushCachedData(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, flushCachedData)
    }
    unsafe fn backgroundLoadDidFailWithReason_(&self, reason: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, backgroundLoadDidFailWithReason : reason)
    }
    unsafe fn didLoadBytes_loadComplete_(&self, newBytes: NSData, yorn: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, didLoadBytes : newBytes, loadComplete : yorn)
    }
    unsafe fn initWithURL_cached_(&self, anURL: NSURL, willCache: BOOL) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithURL : anURL, cached : willCache)
    }
    unsafe fn propertyForKey_(&self, propertyKey: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, propertyForKey : propertyKey)
    }
    unsafe fn propertyForKeyIfAvailable_(&self, propertyKey: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, propertyForKeyIfAvailable : propertyKey)
    }
    unsafe fn writeProperty_forKey_(&self, propertyValue: id, propertyKey: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeProperty : propertyValue, forKey : propertyKey)
    }
    unsafe fn writeData_(&self, data: NSData) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeData : data)
    }
    unsafe fn loadInForeground(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, loadInForeground)
    }
    unsafe fn beginLoadInBackground(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, beginLoadInBackground)
    }
    unsafe fn endLoadInBackground(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endLoadInBackground)
    }
    unsafe fn registerURLHandleClass_(anURLHandleSubclass: Class)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLHandle").unwrap(), registerURLHandleClass : anURLHandleSubclass)
    }
    unsafe fn URLHandleClassForURL_(anURL: NSURL) -> Class
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLHandle").unwrap(), URLHandleClassForURL : anURL)
    }
    unsafe fn canInitWithURL_(anURL: NSURL) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLHandle").unwrap(), canInitWithURL : anURL)
    }
    unsafe fn cachedHandleForURL_(anURL: NSURL) -> NSURLHandle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLHandle").unwrap(), cachedHandleForURL : anURL)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURL(pub id);
impl std::ops::Deref for NSURL {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURL {}
impl NSURL {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURL").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSURL {}
impl PNSCopying for NSURL {}
impl INSObject for NSURL {}
impl PNSObject for NSURL {}
impl std::convert::TryFrom<NSObject> for NSURL {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSURL, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURL").unwrap()) };
        if is_kind_of {
            Ok(NSURL(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSURL")
        }
    }
}
impl INSURL for NSURL {}
pub trait INSURL: Sized + std::ops::Deref {
    unsafe fn initWithScheme_host_path_(
        &self,
        scheme: NSString,
        host: NSString,
        path: NSString,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithScheme : scheme, host : host, path : path)
    }
    unsafe fn initFileURLWithPath_isDirectory_relativeToURL_(
        &self,
        path: NSString,
        isDir: BOOL,
        baseURL: NSURL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initFileURLWithPath : path, isDirectory : isDir, relativeToURL : baseURL)
    }
    unsafe fn initFileURLWithPath_relativeToURL_(
        &self,
        path: NSString,
        baseURL: NSURL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initFileURLWithPath : path, relativeToURL : baseURL)
    }
    unsafe fn initFileURLWithPath_isDirectory_(&self, path: NSString, isDir: BOOL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initFileURLWithPath : path, isDirectory : isDir)
    }
    unsafe fn initFileURLWithPath_(&self, path: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initFileURLWithPath : path)
    }
    unsafe fn initFileURLWithFileSystemRepresentation_isDirectory_relativeToURL_(
        &self,
        path: *const ::std::os::raw::c_char,
        isDir: BOOL,
        baseURL: NSURL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initFileURLWithFileSystemRepresentation : path, isDirectory : isDir, relativeToURL : baseURL)
    }
    unsafe fn initWithString_(&self, URLString: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithString : URLString)
    }
    unsafe fn initWithString_relativeToURL_(
        &self,
        URLString: NSString,
        baseURL: NSURL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithString : URLString, relativeToURL : baseURL)
    }
    unsafe fn initWithString_encodingInvalidCharacters_(
        &self,
        URLString: NSString,
        encodingInvalidCharacters: BOOL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithString : URLString, encodingInvalidCharacters : encodingInvalidCharacters)
    }
    unsafe fn initWithDataRepresentation_relativeToURL_(
        &self,
        data: NSData,
        baseURL: NSURL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDataRepresentation : data, relativeToURL : baseURL)
    }
    unsafe fn initAbsoluteURLWithDataRepresentation_relativeToURL_(
        &self,
        data: NSData,
        baseURL: NSURL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initAbsoluteURLWithDataRepresentation : data, relativeToURL : baseURL)
    }
    unsafe fn getFileSystemRepresentation_maxLength_(
        &self,
        buffer: *mut ::std::os::raw::c_char,
        maxBufferLength: NSUInteger,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getFileSystemRepresentation : buffer, maxLength : maxBufferLength)
    }
    unsafe fn isFileReferenceURL(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isFileReferenceURL)
    }
    unsafe fn fileReferenceURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileReferenceURL)
    }
    unsafe fn getResourceValue_forKey_error_(
        &self,
        value: *mut id,
        key: NSString,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getResourceValue : value, forKey : key, error : error)
    }
    unsafe fn resourceValuesForKeys_error_(
        &self,
        keys: NSArray,
        error: *mut NSError,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resourceValuesForKeys : keys, error : error)
    }
    unsafe fn setResourceValue_forKey_error_(
        &self,
        value: id,
        key: NSString,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setResourceValue : value, forKey : key, error : error)
    }
    unsafe fn setResourceValues_error_(
        &self,
        keyedValues: NSDictionary,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setResourceValues : keyedValues, error : error)
    }
    unsafe fn removeCachedResourceValueForKey_(&self, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeCachedResourceValueForKey : key)
    }
    unsafe fn removeAllCachedResourceValues(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, removeAllCachedResourceValues)
    }
    unsafe fn setTemporaryResourceValue_forKey_(&self, value: id, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTemporaryResourceValue : value, forKey : key)
    }
    unsafe fn bookmarkDataWithOptions_includingResourceValuesForKeys_relativeToURL_error_(
        &self,
        options: NSURLBookmarkCreationOptions,
        keys: NSArray,
        relativeURL: NSURL,
        error: *mut NSError,
    ) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, bookmarkDataWithOptions : options, includingResourceValuesForKeys : keys, relativeToURL : relativeURL, error : error)
    }
    unsafe fn initByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_(
        &self,
        bookmarkData: NSData,
        options: NSURLBookmarkResolutionOptions,
        relativeURL: NSURL,
        isStale: *mut BOOL,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initByResolvingBookmarkData : bookmarkData, options : options, relativeToURL : relativeURL, bookmarkDataIsStale : isStale, error : error)
    }
    unsafe fn startAccessingSecurityScopedResource(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startAccessingSecurityScopedResource)
    }
    unsafe fn stopAccessingSecurityScopedResource(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stopAccessingSecurityScopedResource)
    }
    unsafe fn dataRepresentation(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dataRepresentation)
    }
    unsafe fn absoluteString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, absoluteString)
    }
    unsafe fn relativeString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, relativeString)
    }
    unsafe fn baseURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, baseURL)
    }
    unsafe fn absoluteURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, absoluteURL)
    }
    unsafe fn scheme(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, scheme)
    }
    unsafe fn resourceSpecifier(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, resourceSpecifier)
    }
    unsafe fn host(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, host)
    }
    unsafe fn port(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, port)
    }
    unsafe fn user(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, user)
    }
    unsafe fn password(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, password)
    }
    unsafe fn path(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, path)
    }
    unsafe fn fragment(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fragment)
    }
    unsafe fn parameterString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, parameterString)
    }
    unsafe fn query(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, query)
    }
    unsafe fn relativePath(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, relativePath)
    }
    unsafe fn hasDirectoryPath(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hasDirectoryPath)
    }
    unsafe fn fileSystemRepresentation(&self) -> *const ::std::os::raw::c_char
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileSystemRepresentation)
    }
    unsafe fn isFileURL(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isFileURL)
    }
    unsafe fn standardizedURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, standardizedURL)
    }
    unsafe fn filePathURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, filePathURL)
    }
    unsafe fn fileURLWithPath_isDirectory_relativeToURL_(
        path: NSString,
        isDir: BOOL,
        baseURL: NSURL,
    ) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURL").unwrap(), fileURLWithPath : path, isDirectory : isDir, relativeToURL : baseURL)
    }
    unsafe fn fileURLWithPath_relativeToURL_(path: NSString, baseURL: NSURL) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURL").unwrap(), fileURLWithPath : path, relativeToURL : baseURL)
    }
    unsafe fn fileURLWithPath_isDirectory_(path: NSString, isDir: BOOL) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURL").unwrap(), fileURLWithPath : path, isDirectory : isDir)
    }
    unsafe fn fileURLWithPath_(path: NSString) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURL").unwrap(), fileURLWithPath : path)
    }
    unsafe fn fileURLWithFileSystemRepresentation_isDirectory_relativeToURL_(
        path: *const ::std::os::raw::c_char,
        isDir: BOOL,
        baseURL: NSURL,
    ) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURL").unwrap(), fileURLWithFileSystemRepresentation : path, isDirectory : isDir, relativeToURL : baseURL)
    }
    unsafe fn URLWithString_(URLString: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURL").unwrap(), URLWithString : URLString)
    }
    unsafe fn URLWithString_relativeToURL_(URLString: NSString, baseURL: NSURL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURL").unwrap(), URLWithString : URLString, relativeToURL : baseURL)
    }
    unsafe fn URLWithString_encodingInvalidCharacters_(
        URLString: NSString,
        encodingInvalidCharacters: BOOL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURL").unwrap(), URLWithString : URLString, encodingInvalidCharacters : encodingInvalidCharacters)
    }
    unsafe fn URLWithDataRepresentation_relativeToURL_(data: NSData, baseURL: NSURL) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURL").unwrap(), URLWithDataRepresentation : data, relativeToURL : baseURL)
    }
    unsafe fn absoluteURLWithDataRepresentation_relativeToURL_(
        data: NSData,
        baseURL: NSURL,
    ) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURL").unwrap(), absoluteURLWithDataRepresentation : data, relativeToURL : baseURL)
    }
    unsafe fn URLByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_(
        bookmarkData: NSData,
        options: NSURLBookmarkResolutionOptions,
        relativeURL: NSURL,
        isStale: *mut BOOL,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURL").unwrap(), URLByResolvingBookmarkData : bookmarkData, options : options, relativeToURL : relativeURL, bookmarkDataIsStale : isStale, error : error)
    }
    unsafe fn resourceValuesForKeys_fromBookmarkData_(
        keys: NSArray,
        bookmarkData: NSData,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURL").unwrap(), resourceValuesForKeys : keys, fromBookmarkData : bookmarkData)
    }
    unsafe fn writeBookmarkData_toURL_options_error_(
        bookmarkData: NSData,
        bookmarkFileURL: NSURL,
        options: NSURLBookmarkFileCreationOptions,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURL").unwrap(), writeBookmarkData : bookmarkData, toURL : bookmarkFileURL, options : options, error : error)
    }
    unsafe fn bookmarkDataWithContentsOfURL_error_(
        bookmarkFileURL: NSURL,
        error: *mut NSError,
    ) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURL").unwrap(), bookmarkDataWithContentsOfURL : bookmarkFileURL, error : error)
    }
    unsafe fn URLByResolvingAliasFileAtURL_options_error_(
        url: NSURL,
        options: NSURLBookmarkResolutionOptions,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURL").unwrap(), URLByResolvingAliasFileAtURL : url, options : options, error : error)
    }
}
pub type NSURLBookmarkCreationOptions = NSUInteger;
pub type NSURLBookmarkResolutionOptions = NSUInteger;
pub type NSURLBookmarkFileCreationOptions = NSUInteger;
impl NSURL_NSPromisedItems for NSURL {}
pub trait NSURL_NSPromisedItems: Sized + std::ops::Deref {
    unsafe fn getPromisedItemResourceValue_forKey_error_(
        &self,
        value: *mut id,
        key: NSString,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getPromisedItemResourceValue : value, forKey : key, error : error)
    }
    unsafe fn promisedItemResourceValuesForKeys_error_(
        &self,
        keys: NSArray,
        error: *mut NSError,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, promisedItemResourceValuesForKeys : keys, error : error)
    }
    unsafe fn checkPromisedItemIsReachableAndReturnError_(&self, error: *mut NSError) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, checkPromisedItemIsReachableAndReturnError : error)
    }
}
impl NSURL_NSItemProvider for NSURL {}
pub trait NSURL_NSItemProvider: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLQueryItem(pub id);
impl std::ops::Deref for NSURLQueryItem {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLQueryItem {}
impl NSURLQueryItem {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLQueryItem").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSURLQueryItem {}
impl PNSCopying for NSURLQueryItem {}
impl INSObject for NSURLQueryItem {}
impl PNSObject for NSURLQueryItem {}
impl std::convert::TryFrom<NSObject> for NSURLQueryItem {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSURLQueryItem, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLQueryItem").unwrap()) };
        if is_kind_of {
            Ok(NSURLQueryItem(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSURLQueryItem")
        }
    }
}
impl INSURLQueryItem for NSURLQueryItem {}
pub trait INSURLQueryItem: Sized + std::ops::Deref {
    unsafe fn initWithName_value_(&self, name: NSString, value: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithName : name, value : value)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn value(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn queryItemWithName_value_(name: NSString, value: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLQueryItem").unwrap(), queryItemWithName : name, value : value)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLComponents(pub id);
impl std::ops::Deref for NSURLComponents {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLComponents {}
impl NSURLComponents {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLComponents").unwrap(), alloc) })
    }
}
impl PNSCopying for NSURLComponents {}
impl INSObject for NSURLComponents {}
impl PNSObject for NSURLComponents {}
impl std::convert::TryFrom<NSObject> for NSURLComponents {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSURLComponents, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLComponents").unwrap()) };
        if is_kind_of {
            Ok(NSURLComponents(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSURLComponents")
        }
    }
}
impl INSURLComponents for NSURLComponents {}
pub trait INSURLComponents: 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 initWithURL_resolvingAgainstBaseURL_(&self, url: NSURL, resolve: BOOL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithURL : url, resolvingAgainstBaseURL : resolve)
    }
    unsafe fn initWithString_(&self, URLString: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithString : URLString)
    }
    unsafe fn initWithString_encodingInvalidCharacters_(
        &self,
        URLString: NSString,
        encodingInvalidCharacters: BOOL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithString : URLString, encodingInvalidCharacters : encodingInvalidCharacters)
    }
    unsafe fn URLRelativeToURL_(&self, baseURL: NSURL) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLRelativeToURL : baseURL)
    }
    unsafe fn URL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, URL)
    }
    unsafe fn string(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, string)
    }
    unsafe fn scheme(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, scheme)
    }
    unsafe fn setScheme_(&self, scheme: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setScheme : scheme)
    }
    unsafe fn user(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, user)
    }
    unsafe fn setUser_(&self, user: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUser : user)
    }
    unsafe fn password(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, password)
    }
    unsafe fn setPassword_(&self, password: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPassword : password)
    }
    unsafe fn host(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, host)
    }
    unsafe fn setHost_(&self, host: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHost : host)
    }
    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 path(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, path)
    }
    unsafe fn setPath_(&self, path: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPath : path)
    }
    unsafe fn query(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, query)
    }
    unsafe fn setQuery_(&self, query: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setQuery : query)
    }
    unsafe fn fragment(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fragment)
    }
    unsafe fn setFragment_(&self, fragment: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFragment : fragment)
    }
    unsafe fn percentEncodedUser(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, percentEncodedUser)
    }
    unsafe fn setPercentEncodedUser_(&self, percentEncodedUser: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPercentEncodedUser : percentEncodedUser)
    }
    unsafe fn percentEncodedPassword(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, percentEncodedPassword)
    }
    unsafe fn setPercentEncodedPassword_(&self, percentEncodedPassword: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPercentEncodedPassword : percentEncodedPassword)
    }
    unsafe fn percentEncodedHost(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, percentEncodedHost)
    }
    unsafe fn setPercentEncodedHost_(&self, percentEncodedHost: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPercentEncodedHost : percentEncodedHost)
    }
    unsafe fn percentEncodedPath(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, percentEncodedPath)
    }
    unsafe fn setPercentEncodedPath_(&self, percentEncodedPath: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPercentEncodedPath : percentEncodedPath)
    }
    unsafe fn percentEncodedQuery(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, percentEncodedQuery)
    }
    unsafe fn setPercentEncodedQuery_(&self, percentEncodedQuery: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPercentEncodedQuery : percentEncodedQuery)
    }
    unsafe fn percentEncodedFragment(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, percentEncodedFragment)
    }
    unsafe fn setPercentEncodedFragment_(&self, percentEncodedFragment: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPercentEncodedFragment : percentEncodedFragment)
    }
    unsafe fn encodedHost(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, encodedHost)
    }
    unsafe fn setEncodedHost_(&self, encodedHost: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEncodedHost : encodedHost)
    }
    unsafe fn rangeOfScheme(&self) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rangeOfScheme)
    }
    unsafe fn rangeOfUser(&self) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rangeOfUser)
    }
    unsafe fn rangeOfPassword(&self) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rangeOfPassword)
    }
    unsafe fn rangeOfHost(&self) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rangeOfHost)
    }
    unsafe fn rangeOfPort(&self) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rangeOfPort)
    }
    unsafe fn rangeOfPath(&self) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rangeOfPath)
    }
    unsafe fn rangeOfQuery(&self) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rangeOfQuery)
    }
    unsafe fn rangeOfFragment(&self) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rangeOfFragment)
    }
    unsafe fn queryItems(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, queryItems)
    }
    unsafe fn setQueryItems_(&self, queryItems: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setQueryItems : queryItems)
    }
    unsafe fn percentEncodedQueryItems(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, percentEncodedQueryItems)
    }
    unsafe fn setPercentEncodedQueryItems_(&self, percentEncodedQueryItems: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPercentEncodedQueryItems : percentEncodedQueryItems)
    }
    unsafe fn componentsWithURL_resolvingAgainstBaseURL_(url: NSURL, resolve: BOOL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLComponents").unwrap(), componentsWithURL : url, resolvingAgainstBaseURL : resolve)
    }
    unsafe fn componentsWithString_(URLString: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLComponents").unwrap(), componentsWithString : URLString)
    }
    unsafe fn componentsWithString_encodingInvalidCharacters_(
        URLString: NSString,
        encodingInvalidCharacters: BOOL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLComponents").unwrap(), componentsWithString : URLString, encodingInvalidCharacters : encodingInvalidCharacters)
    }
}
impl NSCharacterSet_NSURLUtilities for NSCharacterSet {}
pub trait NSCharacterSet_NSURLUtilities: Sized + std::ops::Deref {
    unsafe fn URLUserAllowedCharacterSet() -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), URLUserAllowedCharacterSet)
    }
    unsafe fn URLPasswordAllowedCharacterSet() -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), URLPasswordAllowedCharacterSet)
    }
    unsafe fn URLHostAllowedCharacterSet() -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), URLHostAllowedCharacterSet)
    }
    unsafe fn URLPathAllowedCharacterSet() -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), URLPathAllowedCharacterSet)
    }
    unsafe fn URLQueryAllowedCharacterSet() -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), URLQueryAllowedCharacterSet)
    }
    unsafe fn URLFragmentAllowedCharacterSet() -> NSCharacterSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCharacterSet").unwrap(), URLFragmentAllowedCharacterSet)
    }
}
impl NSString_NSURLUtilities for NSString {}
pub trait NSString_NSURLUtilities: Sized + std::ops::Deref {
    unsafe fn stringByAddingPercentEncodingWithAllowedCharacters_(
        &self,
        allowedCharacters: NSCharacterSet,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringByAddingPercentEncodingWithAllowedCharacters : allowedCharacters)
    }
    unsafe fn stringByAddingPercentEscapesUsingEncoding_(&self, enc: NSStringEncoding) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringByAddingPercentEscapesUsingEncoding : enc)
    }
    unsafe fn stringByReplacingPercentEscapesUsingEncoding_(
        &self,
        enc: NSStringEncoding,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringByReplacingPercentEscapesUsingEncoding : enc)
    }
    unsafe fn stringByRemovingPercentEncoding(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stringByRemovingPercentEncoding)
    }
}
impl NSURL_NSURLPathUtilities for NSURL {}
pub trait NSURL_NSURLPathUtilities: Sized + std::ops::Deref {
    unsafe fn URLByAppendingPathComponent_(&self, pathComponent: NSString) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLByAppendingPathComponent : pathComponent)
    }
    unsafe fn URLByAppendingPathComponent_isDirectory_(
        &self,
        pathComponent: NSString,
        isDirectory: BOOL,
    ) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLByAppendingPathComponent : pathComponent, isDirectory : isDirectory)
    }
    unsafe fn URLByAppendingPathExtension_(&self, pathExtension: NSString) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLByAppendingPathExtension : pathExtension)
    }
    unsafe fn checkResourceIsReachableAndReturnError_(&self, error: *mut NSError) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, checkResourceIsReachableAndReturnError : error)
    }
    unsafe fn pathComponents(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pathComponents)
    }
    unsafe fn lastPathComponent(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lastPathComponent)
    }
    unsafe fn pathExtension(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pathExtension)
    }
    unsafe fn URLByDeletingLastPathComponent(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, URLByDeletingLastPathComponent)
    }
    unsafe fn URLByDeletingPathExtension(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, URLByDeletingPathExtension)
    }
    unsafe fn URLByStandardizingPath(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, URLByStandardizingPath)
    }
    unsafe fn URLByResolvingSymlinksInPath(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, URLByResolvingSymlinksInPath)
    }
    unsafe fn fileURLWithPathComponents_(components: NSArray) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURL").unwrap(), fileURLWithPathComponents : components)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSFileSecurity(pub id);
impl std::ops::Deref for NSFileSecurity {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSFileSecurity {}
impl NSFileSecurity {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileSecurity").unwrap(), alloc) })
    }
}
impl PNSCopying for NSFileSecurity {}
impl PNSSecureCoding for NSFileSecurity {}
impl INSObject for NSFileSecurity {}
impl PNSObject for NSFileSecurity {}
impl std::convert::TryFrom<NSObject> for NSFileSecurity {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSFileSecurity, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSFileSecurity").unwrap()) };
        if is_kind_of {
            Ok(NSFileSecurity(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSFileSecurity")
        }
    }
}
impl INSFileSecurity for NSFileSecurity {}
pub trait INSFileSecurity: Sized + std::ops::Deref {
    unsafe fn initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
}
pub trait NSObject_NSURLClient: Sized + std::ops::Deref {
    unsafe fn URL_resourceDataDidBecomeAvailable_(&self, sender: NSURL, newBytes: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URL : sender, resourceDataDidBecomeAvailable : newBytes)
    }
    unsafe fn URLResourceDidFinishLoading_(&self, sender: NSURL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLResourceDidFinishLoading : sender)
    }
    unsafe fn URLResourceDidCancelLoading_(&self, sender: NSURL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLResourceDidCancelLoading : sender)
    }
    unsafe fn URL_resourceDidFailLoadingWithReason_(&self, sender: NSURL, reason: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URL : sender, resourceDidFailLoadingWithReason : reason)
    }
}
impl NSURL_NSURLLoading for NSURL {}
pub trait NSURL_NSURLLoading: Sized + std::ops::Deref {
    unsafe fn resourceDataUsingCache_(&self, shouldUseCache: BOOL) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resourceDataUsingCache : shouldUseCache)
    }
    unsafe fn loadResourceDataNotifyingClient_usingCache_(&self, client: id, shouldUseCache: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, loadResourceDataNotifyingClient : client, usingCache : shouldUseCache)
    }
    unsafe fn propertyForKey_(&self, propertyKey: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, propertyForKey : propertyKey)
    }
    unsafe fn setResourceData_(&self, data: NSData) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setResourceData : data)
    }
    unsafe fn setProperty_forKey_(&self, property: id, propertyKey: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProperty : property, forKey : propertyKey)
    }
    unsafe fn URLHandleUsingCache_(&self, shouldUseCache: BOOL) -> NSURLHandle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLHandleUsingCache : shouldUseCache)
    }
}
pub type NSFileAttributeKey = NSString;
pub type NSFileAttributeType = NSString;
pub type NSFileProtectionType = NSString;
pub type NSFileProviderServiceName = NSString;
pub type NSVolumeEnumerationOptions = NSUInteger;
pub type NSDirectoryEnumerationOptions = NSUInteger;
pub type NSFileManagerItemReplacementOptions = NSUInteger;
pub type NSURLRelationship = NSInteger;
pub type NSFileManagerUnmountOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSFileManager(pub id);
impl std::ops::Deref for NSFileManager {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSFileManager {}
impl NSFileManager {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileManager").unwrap(), alloc) })
    }
}
impl INSObject for NSFileManager {}
impl PNSObject for NSFileManager {}
impl std::convert::TryFrom<NSObject> for NSFileManager {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSFileManager, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSFileManager").unwrap()) };
        if is_kind_of {
            Ok(NSFileManager(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSFileManager")
        }
    }
}
impl INSFileManager for NSFileManager {}
pub trait INSFileManager: Sized + std::ops::Deref {
    unsafe fn mountedVolumeURLsIncludingResourceValuesForKeys_options_(
        &self,
        propertyKeys: NSArray,
        options: NSVolumeEnumerationOptions,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, mountedVolumeURLsIncludingResourceValuesForKeys : propertyKeys, options : options)
    }
    unsafe fn unmountVolumeAtURL_options_completionHandler_(
        &self,
        url: NSURL,
        mask: NSFileManagerUnmountOptions,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unmountVolumeAtURL : url, options : mask, completionHandler : completionHandler)
    }
    unsafe fn contentsOfDirectoryAtURL_includingPropertiesForKeys_options_error_(
        &self,
        url: NSURL,
        keys: NSArray,
        mask: NSDirectoryEnumerationOptions,
        error: *mut NSError,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, contentsOfDirectoryAtURL : url, includingPropertiesForKeys : keys, options : mask, error : error)
    }
    unsafe fn URLsForDirectory_inDomains_(
        &self,
        directory: NSSearchPathDirectory,
        domainMask: NSSearchPathDomainMask,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLsForDirectory : directory, inDomains : domainMask)
    }
    unsafe fn URLForDirectory_inDomain_appropriateForURL_create_error_(
        &self,
        directory: NSSearchPathDirectory,
        domain: NSSearchPathDomainMask,
        url: NSURL,
        shouldCreate: BOOL,
        error: *mut NSError,
    ) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLForDirectory : directory, inDomain : domain, appropriateForURL : url, create : shouldCreate, error : error)
    }
    unsafe fn getRelationship_ofDirectoryAtURL_toItemAtURL_error_(
        &self,
        outRelationship: *mut NSURLRelationship,
        directoryURL: NSURL,
        otherURL: NSURL,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getRelationship : outRelationship, ofDirectoryAtURL : directoryURL, toItemAtURL : otherURL, error : error)
    }
    unsafe fn getRelationship_ofDirectory_inDomain_toItemAtURL_error_(
        &self,
        outRelationship: *mut NSURLRelationship,
        directory: NSSearchPathDirectory,
        domainMask: NSSearchPathDomainMask,
        url: NSURL,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getRelationship : outRelationship, ofDirectory : directory, inDomain : domainMask, toItemAtURL : url, error : error)
    }
    unsafe fn createDirectoryAtURL_withIntermediateDirectories_attributes_error_(
        &self,
        url: NSURL,
        createIntermediates: BOOL,
        attributes: NSDictionary,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, createDirectoryAtURL : url, withIntermediateDirectories : createIntermediates, attributes : attributes, error : error)
    }
    unsafe fn createSymbolicLinkAtURL_withDestinationURL_error_(
        &self,
        url: NSURL,
        destURL: NSURL,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, createSymbolicLinkAtURL : url, withDestinationURL : destURL, error : error)
    }
    unsafe fn setAttributes_ofItemAtPath_error_(
        &self,
        attributes: NSDictionary,
        path: NSString,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttributes : attributes, ofItemAtPath : path, error : error)
    }
    unsafe fn createDirectoryAtPath_withIntermediateDirectories_attributes_error_(
        &self,
        path: NSString,
        createIntermediates: BOOL,
        attributes: NSDictionary,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, createDirectoryAtPath : path, withIntermediateDirectories : createIntermediates, attributes : attributes, error : error)
    }
    unsafe fn contentsOfDirectoryAtPath_error_(
        &self,
        path: NSString,
        error: *mut NSError,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, contentsOfDirectoryAtPath : path, error : error)
    }
    unsafe fn subpathsOfDirectoryAtPath_error_(
        &self,
        path: NSString,
        error: *mut NSError,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subpathsOfDirectoryAtPath : path, error : error)
    }
    unsafe fn attributesOfItemAtPath_error_(
        &self,
        path: NSString,
        error: *mut NSError,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, attributesOfItemAtPath : path, error : error)
    }
    unsafe fn attributesOfFileSystemForPath_error_(
        &self,
        path: NSString,
        error: *mut NSError,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, attributesOfFileSystemForPath : path, error : error)
    }
    unsafe fn createSymbolicLinkAtPath_withDestinationPath_error_(
        &self,
        path: NSString,
        destPath: NSString,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, createSymbolicLinkAtPath : path, withDestinationPath : destPath, error : error)
    }
    unsafe fn destinationOfSymbolicLinkAtPath_error_(
        &self,
        path: NSString,
        error: *mut NSError,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, destinationOfSymbolicLinkAtPath : path, error : error)
    }
    unsafe fn copyItemAtPath_toPath_error_(
        &self,
        srcPath: NSString,
        dstPath: NSString,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, copyItemAtPath : srcPath, toPath : dstPath, error : error)
    }
    unsafe fn moveItemAtPath_toPath_error_(
        &self,
        srcPath: NSString,
        dstPath: NSString,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveItemAtPath : srcPath, toPath : dstPath, error : error)
    }
    unsafe fn linkItemAtPath_toPath_error_(
        &self,
        srcPath: NSString,
        dstPath: NSString,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, linkItemAtPath : srcPath, toPath : dstPath, error : error)
    }
    unsafe fn removeItemAtPath_error_(&self, path: NSString, error: *mut NSError) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeItemAtPath : path, error : error)
    }
    unsafe fn copyItemAtURL_toURL_error_(
        &self,
        srcURL: NSURL,
        dstURL: NSURL,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, copyItemAtURL : srcURL, toURL : dstURL, error : error)
    }
    unsafe fn moveItemAtURL_toURL_error_(
        &self,
        srcURL: NSURL,
        dstURL: NSURL,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveItemAtURL : srcURL, toURL : dstURL, error : error)
    }
    unsafe fn linkItemAtURL_toURL_error_(
        &self,
        srcURL: NSURL,
        dstURL: NSURL,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, linkItemAtURL : srcURL, toURL : dstURL, error : error)
    }
    unsafe fn removeItemAtURL_error_(&self, URL: NSURL, error: *mut NSError) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeItemAtURL : URL, error : error)
    }
    unsafe fn trashItemAtURL_resultingItemURL_error_(
        &self,
        url: NSURL,
        outResultingURL: *mut NSURL,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, trashItemAtURL : url, resultingItemURL : outResultingURL, error : error)
    }
    unsafe fn fileAttributesAtPath_traverseLink_(&self, path: NSString, yorn: BOOL) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fileAttributesAtPath : path, traverseLink : yorn)
    }
    unsafe fn changeFileAttributes_atPath_(&self, attributes: NSDictionary, path: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeFileAttributes : attributes, atPath : path)
    }
    unsafe fn directoryContentsAtPath_(&self, path: NSString) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, directoryContentsAtPath : path)
    }
    unsafe fn fileSystemAttributesAtPath_(&self, path: NSString) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fileSystemAttributesAtPath : path)
    }
    unsafe fn pathContentOfSymbolicLinkAtPath_(&self, path: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pathContentOfSymbolicLinkAtPath : path)
    }
    unsafe fn createSymbolicLinkAtPath_pathContent_(
        &self,
        path: NSString,
        otherpath: NSString,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, createSymbolicLinkAtPath : path, pathContent : otherpath)
    }
    unsafe fn createDirectoryAtPath_attributes_(
        &self,
        path: NSString,
        attributes: NSDictionary,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, createDirectoryAtPath : path, attributes : attributes)
    }
    unsafe fn linkPath_toPath_handler_(&self, src: NSString, dest: NSString, handler: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, linkPath : src, toPath : dest, handler : handler)
    }
    unsafe fn copyPath_toPath_handler_(&self, src: NSString, dest: NSString, handler: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, copyPath : src, toPath : dest, handler : handler)
    }
    unsafe fn movePath_toPath_handler_(&self, src: NSString, dest: NSString, handler: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, movePath : src, toPath : dest, handler : handler)
    }
    unsafe fn removeFileAtPath_handler_(&self, path: NSString, handler: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeFileAtPath : path, handler : handler)
    }
    unsafe fn changeCurrentDirectoryPath_(&self, path: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, changeCurrentDirectoryPath : path)
    }
    unsafe fn fileExistsAtPath_(&self, path: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fileExistsAtPath : path)
    }
    unsafe fn fileExistsAtPath_isDirectory_(&self, path: NSString, isDirectory: *mut BOOL) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fileExistsAtPath : path, isDirectory : isDirectory)
    }
    unsafe fn isReadableFileAtPath_(&self, path: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isReadableFileAtPath : path)
    }
    unsafe fn isWritableFileAtPath_(&self, path: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isWritableFileAtPath : path)
    }
    unsafe fn isExecutableFileAtPath_(&self, path: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isExecutableFileAtPath : path)
    }
    unsafe fn isDeletableFileAtPath_(&self, path: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isDeletableFileAtPath : path)
    }
    unsafe fn contentsEqualAtPath_andPath_(&self, path1: NSString, path2: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, contentsEqualAtPath : path1, andPath : path2)
    }
    unsafe fn displayNameAtPath_(&self, path: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, displayNameAtPath : path)
    }
    unsafe fn componentsToDisplayForPath_(&self, path: NSString) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, componentsToDisplayForPath : path)
    }
    unsafe fn enumeratorAtPath_(&self, path: NSString) -> NSDirectoryEnumerator
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumeratorAtPath : path)
    }
    unsafe fn enumeratorAtURL_includingPropertiesForKeys_options_errorHandler_(
        &self,
        url: NSURL,
        keys: NSArray,
        mask: NSDirectoryEnumerationOptions,
        handler: *mut ::std::os::raw::c_void,
    ) -> NSDirectoryEnumerator
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumeratorAtURL : url, includingPropertiesForKeys : keys, options : mask, errorHandler : handler)
    }
    unsafe fn subpathsAtPath_(&self, path: NSString) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, subpathsAtPath : path)
    }
    unsafe fn contentsAtPath_(&self, path: NSString) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, contentsAtPath : path)
    }
    unsafe fn createFileAtPath_contents_attributes_(
        &self,
        path: NSString,
        data: NSData,
        attr: NSDictionary,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, createFileAtPath : path, contents : data, attributes : attr)
    }
    unsafe fn fileSystemRepresentationWithPath_(
        &self,
        path: NSString,
    ) -> *const ::std::os::raw::c_char
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fileSystemRepresentationWithPath : path)
    }
    unsafe fn stringWithFileSystemRepresentation_length_(
        &self,
        str_: *const ::std::os::raw::c_char,
        len: NSUInteger,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringWithFileSystemRepresentation : str_, length : len)
    }
    unsafe fn replaceItemAtURL_withItemAtURL_backupItemName_options_resultingItemURL_error_(
        &self,
        originalItemURL: NSURL,
        newItemURL: NSURL,
        backupItemName: NSString,
        options: NSFileManagerItemReplacementOptions,
        resultingURL: *mut NSURL,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replaceItemAtURL : originalItemURL, withItemAtURL : newItemURL, backupItemName : backupItemName, options : options, resultingItemURL : resultingURL, error : error)
    }
    unsafe fn setUbiquitous_itemAtURL_destinationURL_error_(
        &self,
        flag: BOOL,
        url: NSURL,
        destinationURL: NSURL,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUbiquitous : flag, itemAtURL : url, destinationURL : destinationURL, error : error)
    }
    unsafe fn isUbiquitousItemAtURL_(&self, url: NSURL) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isUbiquitousItemAtURL : url)
    }
    unsafe fn startDownloadingUbiquitousItemAtURL_error_(
        &self,
        url: NSURL,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, startDownloadingUbiquitousItemAtURL : url, error : error)
    }
    unsafe fn evictUbiquitousItemAtURL_error_(&self, url: NSURL, error: *mut NSError) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, evictUbiquitousItemAtURL : url, error : error)
    }
    unsafe fn URLForUbiquityContainerIdentifier_(&self, containerIdentifier: NSString) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLForUbiquityContainerIdentifier : containerIdentifier)
    }
    unsafe fn URLForPublishingUbiquitousItemAtURL_expirationDate_error_(
        &self,
        url: NSURL,
        outDate: *mut NSDate,
        error: *mut NSError,
    ) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLForPublishingUbiquitousItemAtURL : url, expirationDate : outDate, error : error)
    }
    unsafe fn pauseSyncForUbiquitousItemAtURL_completionHandler_(
        &self,
        url: NSURL,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pauseSyncForUbiquitousItemAtURL : url, completionHandler : completionHandler)
    }
    unsafe fn resumeSyncForUbiquitousItemAtURL_withBehavior_completionHandler_(
        &self,
        url: NSURL,
        behavior: NSFileManagerResumeSyncBehavior,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resumeSyncForUbiquitousItemAtURL : url, withBehavior : behavior, completionHandler : completionHandler)
    }
    unsafe fn fetchLatestRemoteVersionOfItemAtURL_completionHandler_(
        &self,
        url: NSURL,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fetchLatestRemoteVersionOfItemAtURL : url, completionHandler : completionHandler)
    }
    unsafe fn uploadLocalVersionOfUbiquitousItemAtURL_withConflictResolutionPolicy_completionHandler_(
        &self,
        url: NSURL,
        conflictResolutionPolicy: NSFileManagerUploadLocalVersionConflictPolicy,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, uploadLocalVersionOfUbiquitousItemAtURL : url, withConflictResolutionPolicy : conflictResolutionPolicy, completionHandler : completionHandler)
    }
    unsafe fn getFileProviderServicesForItemAtURL_completionHandler_(
        &self,
        url: NSURL,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getFileProviderServicesForItemAtURL : url, completionHandler : completionHandler)
    }
    unsafe fn containerURLForSecurityApplicationGroupIdentifier_(
        &self,
        groupIdentifier: NSString,
    ) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, containerURLForSecurityApplicationGroupIdentifier : groupIdentifier)
    }
    unsafe fn delegate(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delegate)
    }
    unsafe fn setDelegate_(&self, delegate: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelegate : delegate)
    }
    unsafe fn currentDirectoryPath(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentDirectoryPath)
    }
    unsafe fn ubiquityIdentityToken(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ubiquityIdentityToken)
    }
    unsafe fn defaultManager() -> NSFileManager
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileManager").unwrap(), defaultManager)
    }
}
pub type NSFileManagerSupportedSyncControls = NSUInteger;
pub type NSFileManagerResumeSyncBehavior = NSInteger;
pub type NSFileManagerUploadLocalVersionConflictPolicy = NSInteger;
impl NSFileManager_NSUserInformation for NSFileManager {}
pub trait NSFileManager_NSUserInformation: Sized + std::ops::Deref {
    unsafe fn homeDirectoryForUser_(&self, userName: NSString) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, homeDirectoryForUser : userName)
    }
    unsafe fn homeDirectoryForCurrentUser(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, homeDirectoryForCurrentUser)
    }
    unsafe fn temporaryDirectory(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, temporaryDirectory)
    }
}
pub trait NSObject_NSCopyLinkMoveHandler: Sized + std::ops::Deref {
    unsafe fn fileManager_shouldProceedAfterError_(
        &self,
        fm: NSFileManager,
        errorInfo: NSDictionary,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fileManager : fm, shouldProceedAfterError : errorInfo)
    }
    unsafe fn fileManager_willProcessPath_(&self, fm: NSFileManager, path: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fileManager : fm, willProcessPath : path)
    }
}
pub trait PNSFileManagerDelegate: Sized + std::ops::Deref {
    unsafe fn fileManager_shouldCopyItemAtPath_toPath_(
        &self,
        fileManager: NSFileManager,
        srcPath: NSString,
        dstPath: NSString,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fileManager : fileManager, shouldCopyItemAtPath : srcPath, toPath : dstPath)
    }
    unsafe fn fileManager_shouldCopyItemAtURL_toURL_(
        &self,
        fileManager: NSFileManager,
        srcURL: NSURL,
        dstURL: NSURL,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fileManager : fileManager, shouldCopyItemAtURL : srcURL, toURL : dstURL)
    }
    unsafe fn fileManager_shouldProceedAfterError_copyingItemAtPath_toPath_(
        &self,
        fileManager: NSFileManager,
        error: NSError,
        srcPath: NSString,
        dstPath: NSString,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fileManager : fileManager, shouldProceedAfterError : error, copyingItemAtPath : srcPath, toPath : dstPath)
    }
    unsafe fn fileManager_shouldProceedAfterError_copyingItemAtURL_toURL_(
        &self,
        fileManager: NSFileManager,
        error: NSError,
        srcURL: NSURL,
        dstURL: NSURL,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fileManager : fileManager, shouldProceedAfterError : error, copyingItemAtURL : srcURL, toURL : dstURL)
    }
    unsafe fn fileManager_shouldMoveItemAtPath_toPath_(
        &self,
        fileManager: NSFileManager,
        srcPath: NSString,
        dstPath: NSString,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fileManager : fileManager, shouldMoveItemAtPath : srcPath, toPath : dstPath)
    }
    unsafe fn fileManager_shouldMoveItemAtURL_toURL_(
        &self,
        fileManager: NSFileManager,
        srcURL: NSURL,
        dstURL: NSURL,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fileManager : fileManager, shouldMoveItemAtURL : srcURL, toURL : dstURL)
    }
    unsafe fn fileManager_shouldProceedAfterError_movingItemAtPath_toPath_(
        &self,
        fileManager: NSFileManager,
        error: NSError,
        srcPath: NSString,
        dstPath: NSString,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fileManager : fileManager, shouldProceedAfterError : error, movingItemAtPath : srcPath, toPath : dstPath)
    }
    unsafe fn fileManager_shouldProceedAfterError_movingItemAtURL_toURL_(
        &self,
        fileManager: NSFileManager,
        error: NSError,
        srcURL: NSURL,
        dstURL: NSURL,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fileManager : fileManager, shouldProceedAfterError : error, movingItemAtURL : srcURL, toURL : dstURL)
    }
    unsafe fn fileManager_shouldLinkItemAtPath_toPath_(
        &self,
        fileManager: NSFileManager,
        srcPath: NSString,
        dstPath: NSString,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fileManager : fileManager, shouldLinkItemAtPath : srcPath, toPath : dstPath)
    }
    unsafe fn fileManager_shouldLinkItemAtURL_toURL_(
        &self,
        fileManager: NSFileManager,
        srcURL: NSURL,
        dstURL: NSURL,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fileManager : fileManager, shouldLinkItemAtURL : srcURL, toURL : dstURL)
    }
    unsafe fn fileManager_shouldProceedAfterError_linkingItemAtPath_toPath_(
        &self,
        fileManager: NSFileManager,
        error: NSError,
        srcPath: NSString,
        dstPath: NSString,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fileManager : fileManager, shouldProceedAfterError : error, linkingItemAtPath : srcPath, toPath : dstPath)
    }
    unsafe fn fileManager_shouldProceedAfterError_linkingItemAtURL_toURL_(
        &self,
        fileManager: NSFileManager,
        error: NSError,
        srcURL: NSURL,
        dstURL: NSURL,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fileManager : fileManager, shouldProceedAfterError : error, linkingItemAtURL : srcURL, toURL : dstURL)
    }
    unsafe fn fileManager_shouldRemoveItemAtPath_(
        &self,
        fileManager: NSFileManager,
        path: NSString,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fileManager : fileManager, shouldRemoveItemAtPath : path)
    }
    unsafe fn fileManager_shouldRemoveItemAtURL_(
        &self,
        fileManager: NSFileManager,
        URL: NSURL,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fileManager : fileManager, shouldRemoveItemAtURL : URL)
    }
    unsafe fn fileManager_shouldProceedAfterError_removingItemAtPath_(
        &self,
        fileManager: NSFileManager,
        error: NSError,
        path: NSString,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fileManager : fileManager, shouldProceedAfterError : error, removingItemAtPath : path)
    }
    unsafe fn fileManager_shouldProceedAfterError_removingItemAtURL_(
        &self,
        fileManager: NSFileManager,
        error: NSError,
        URL: NSURL,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, fileManager : fileManager, shouldProceedAfterError : error, removingItemAtURL : URL)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSDirectoryEnumerator(pub id);
impl std::ops::Deref for NSDirectoryEnumerator {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSDirectoryEnumerator {}
impl NSDirectoryEnumerator {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSDirectoryEnumerator").unwrap(), alloc) })
    }
}
impl<ObjectType: 'static> INSEnumerator<ObjectType> for NSDirectoryEnumerator {}
impl PNSFastEnumeration for NSDirectoryEnumerator {}
impl INSObject for NSDirectoryEnumerator {}
impl PNSObject for NSDirectoryEnumerator {}
impl std::convert::TryFrom<NSObject> for NSDirectoryEnumerator {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSDirectoryEnumerator, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSDirectoryEnumerator").unwrap()) };
        if is_kind_of {
            Ok(NSDirectoryEnumerator(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSDirectoryEnumerator")
        }
    }
}
impl<ObjectType: 'static> INSDirectoryEnumerator<ObjectType> for NSDirectoryEnumerator {}
pub trait INSDirectoryEnumerator<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn skipDescendents(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, skipDescendents)
    }
    unsafe fn skipDescendants(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, skipDescendants)
    }
    unsafe fn fileAttributes(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileAttributes)
    }
    unsafe fn directoryAttributes(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, directoryAttributes)
    }
    unsafe fn isEnumeratingDirectoryPostOrder(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isEnumeratingDirectoryPostOrder)
    }
    unsafe fn level(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, level)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSFileProviderService(pub id);
impl std::ops::Deref for NSFileProviderService {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSFileProviderService {}
impl NSFileProviderService {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileProviderService").unwrap(), alloc) })
    }
}
impl INSObject for NSFileProviderService {}
impl PNSObject for NSFileProviderService {}
impl std::convert::TryFrom<NSObject> for NSFileProviderService {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSFileProviderService, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSFileProviderService").unwrap()) };
        if is_kind_of {
            Ok(NSFileProviderService(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSFileProviderService")
        }
    }
}
impl INSFileProviderService for NSFileProviderService {}
pub trait INSFileProviderService: Sized + std::ops::Deref {
    unsafe fn getFileProviderConnectionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getFileProviderConnectionWithCompletionHandler : completionHandler)
    }
    unsafe fn name(&self) -> NSFileProviderServiceName
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
}
impl<KeyType: 'static, ObjectType: 'static> NSDictionary_NSFileAttributes<KeyType, ObjectType>
    for NSDictionary
{
}
pub trait NSDictionary_NSFileAttributes<KeyType: 'static, ObjectType: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn fileSize(&self) -> ::std::os::raw::c_ulonglong
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileSize)
    }
    unsafe fn fileModificationDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileModificationDate)
    }
    unsafe fn fileType(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileType)
    }
    unsafe fn filePosixPermissions(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, filePosixPermissions)
    }
    unsafe fn fileOwnerAccountName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileOwnerAccountName)
    }
    unsafe fn fileGroupOwnerAccountName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileGroupOwnerAccountName)
    }
    unsafe fn fileSystemNumber(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileSystemNumber)
    }
    unsafe fn fileSystemFileNumber(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileSystemFileNumber)
    }
    unsafe fn fileExtensionHidden(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileExtensionHidden)
    }
    unsafe fn fileHFSCreatorCode(&self) -> OSType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileHFSCreatorCode)
    }
    unsafe fn fileHFSTypeCode(&self) -> OSType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileHFSTypeCode)
    }
    unsafe fn fileIsImmutable(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileIsImmutable)
    }
    unsafe fn fileIsAppendOnly(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileIsAppendOnly)
    }
    unsafe fn fileCreationDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileCreationDate)
    }
    unsafe fn fileOwnerAccountID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileOwnerAccountID)
    }
    unsafe fn fileGroupOwnerAccountID(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileGroupOwnerAccountID)
    }
}
pub type NSPointerFunctionsOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSPointerFunctions(pub id);
impl std::ops::Deref for NSPointerFunctions {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSPointerFunctions {}
impl NSPointerFunctions {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSPointerFunctions").unwrap(), alloc) })
    }
}
impl PNSCopying for NSPointerFunctions {}
impl INSObject for NSPointerFunctions {}
impl PNSObject for NSPointerFunctions {}
impl std::convert::TryFrom<NSObject> for NSPointerFunctions {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSPointerFunctions, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSPointerFunctions").unwrap()) };
        if is_kind_of {
            Ok(NSPointerFunctions(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSPointerFunctions")
        }
    }
}
impl INSPointerFunctions for NSPointerFunctions {}
pub trait INSPointerFunctions: Sized + std::ops::Deref {
    unsafe fn initWithOptions_(&self, options: NSPointerFunctionsOptions) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithOptions : options)
    }
    unsafe fn hashFunction(
        &self,
    ) -> ::std::option::Option<
        unsafe extern "C" fn(
            arg1: *const ::std::os::raw::c_void,
            arg2: ::std::option::Option<
                unsafe extern "C" fn(arg1: *const ::std::os::raw::c_void) -> NSUInteger,
            >,
        ) -> NSUInteger,
    >
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hashFunction)
    }
    unsafe fn setHashFunction_(
        &self,
        hashFunction: ::std::option::Option<
            unsafe extern "C" fn(
                arg1: *const ::std::os::raw::c_void,
                arg2: ::std::option::Option<
                    unsafe extern "C" fn(arg1: *const ::std::os::raw::c_void) -> NSUInteger,
                >,
            ) -> NSUInteger,
        >,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHashFunction : hashFunction)
    }
    unsafe fn isEqualFunction(
        &self,
    ) -> ::std::option::Option<
        unsafe extern "C" fn(
            arg1: *const ::std::os::raw::c_void,
            arg2: *const ::std::os::raw::c_void,
            arg3: ::std::option::Option<
                unsafe extern "C" fn(arg1: *const ::std::os::raw::c_void) -> NSUInteger,
            >,
        ) -> BOOL,
    >
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isEqualFunction)
    }
    unsafe fn setIsEqualFunction_(
        &self,
        isEqualFunction: ::std::option::Option<
            unsafe extern "C" fn(
                arg1: *const ::std::os::raw::c_void,
                arg2: *const ::std::os::raw::c_void,
                arg3: ::std::option::Option<
                    unsafe extern "C" fn(arg1: *const ::std::os::raw::c_void) -> NSUInteger,
                >,
            ) -> BOOL,
        >,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIsEqualFunction : isEqualFunction)
    }
    unsafe fn sizeFunction(
        &self,
    ) -> ::std::option::Option<
        unsafe extern "C" fn(arg1: *const ::std::os::raw::c_void) -> NSUInteger,
    >
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sizeFunction)
    }
    unsafe fn setSizeFunction_(
        &self,
        sizeFunction: ::std::option::Option<
            unsafe extern "C" fn(arg1: *const ::std::os::raw::c_void) -> NSUInteger,
        >,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSizeFunction : sizeFunction)
    }
    unsafe fn descriptionFunction(
        &self,
    ) -> ::std::option::Option<unsafe extern "C" fn(arg1: *const ::std::os::raw::c_void) -> NSString>
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, descriptionFunction)
    }
    unsafe fn setDescriptionFunction_(
        &self,
        descriptionFunction: ::std::option::Option<
            unsafe extern "C" fn(arg1: *const ::std::os::raw::c_void) -> NSString,
        >,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDescriptionFunction : descriptionFunction)
    }
    unsafe fn relinquishFunction(
        &self,
    ) -> ::std::option::Option<
        unsafe extern "C" fn(
            arg1: *const ::std::os::raw::c_void,
            arg2: ::std::option::Option<
                unsafe extern "C" fn(arg1: *const ::std::os::raw::c_void) -> NSUInteger,
            >,
        ),
    >
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, relinquishFunction)
    }
    unsafe fn setRelinquishFunction_(
        &self,
        relinquishFunction: ::std::option::Option<
            unsafe extern "C" fn(
                arg1: *const ::std::os::raw::c_void,
                arg2: ::std::option::Option<
                    unsafe extern "C" fn(arg1: *const ::std::os::raw::c_void) -> NSUInteger,
                >,
            ),
        >,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRelinquishFunction : relinquishFunction)
    }
    unsafe fn acquireFunction(
        &self,
    ) -> ::std::option::Option<
        unsafe extern "C" fn(
            arg1: *const ::std::os::raw::c_void,
            arg2: ::std::option::Option<
                unsafe extern "C" fn(arg1: *const ::std::os::raw::c_void) -> NSUInteger,
            >,
            arg3: BOOL,
        ) -> *mut ::std::os::raw::c_void,
    >
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, acquireFunction)
    }
    unsafe fn setAcquireFunction_(
        &self,
        acquireFunction: ::std::option::Option<
            unsafe extern "C" fn(
                arg1: *const ::std::os::raw::c_void,
                arg2: ::std::option::Option<
                    unsafe extern "C" fn(arg1: *const ::std::os::raw::c_void) -> NSUInteger,
                >,
                arg3: BOOL,
            ) -> *mut ::std::os::raw::c_void,
        >,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAcquireFunction : acquireFunction)
    }
    unsafe fn usesStrongWriteBarrier(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, usesStrongWriteBarrier)
    }
    unsafe fn setUsesStrongWriteBarrier_(&self, usesStrongWriteBarrier: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUsesStrongWriteBarrier : usesStrongWriteBarrier)
    }
    unsafe fn usesWeakReadAndWriteBarriers(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, usesWeakReadAndWriteBarriers)
    }
    unsafe fn setUsesWeakReadAndWriteBarriers_(&self, usesWeakReadAndWriteBarriers: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUsesWeakReadAndWriteBarriers : usesWeakReadAndWriteBarriers)
    }
    unsafe fn pointerFunctionsWithOptions_(options: NSPointerFunctionsOptions) -> NSPointerFunctions
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPointerFunctions").unwrap(), pointerFunctionsWithOptions : options)
    }
}
pub type NSHashTableOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSHashTable(pub id);
impl std::ops::Deref for NSHashTable {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSHashTable {}
impl NSHashTable {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSHashTable").unwrap(), alloc) })
    }
}
impl PNSCopying for NSHashTable {}
impl PNSSecureCoding for NSHashTable {}
impl PNSFastEnumeration for NSHashTable {}
impl INSObject for NSHashTable {}
impl PNSObject for NSHashTable {}
impl std::convert::TryFrom<NSObject> for NSHashTable {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSHashTable, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSHashTable").unwrap()) };
        if is_kind_of {
            Ok(NSHashTable(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSHashTable")
        }
    }
}
impl<ObjectType: 'static> INSHashTable<ObjectType> for NSHashTable {}
pub trait INSHashTable<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn initWithOptions_capacity_(
        &self,
        options: NSPointerFunctionsOptions,
        initialCapacity: NSUInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithOptions : options, capacity : initialCapacity)
    }
    unsafe fn initWithPointerFunctions_capacity_(
        &self,
        functions: NSPointerFunctions,
        initialCapacity: NSUInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithPointerFunctions : functions, capacity : initialCapacity)
    }
    unsafe fn member_(&self, object: id) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, member : object)
    }
    unsafe fn objectEnumerator(&self) -> NSEnumerator
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, objectEnumerator)
    }
    unsafe fn addObject_(&self, object: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addObject : object)
    }
    unsafe fn removeObject_(&self, object: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObject : object)
    }
    unsafe fn removeAllObjects(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, removeAllObjects)
    }
    unsafe fn containsObject_(&self, anObject: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, containsObject : anObject)
    }
    unsafe fn intersectsHashTable_(&self, other: NSHashTable) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, intersectsHashTable : other)
    }
    unsafe fn isEqualToHashTable_(&self, other: NSHashTable) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isEqualToHashTable : other)
    }
    unsafe fn isSubsetOfHashTable_(&self, other: NSHashTable) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isSubsetOfHashTable : other)
    }
    unsafe fn intersectHashTable_(&self, other: NSHashTable)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, intersectHashTable : other)
    }
    unsafe fn unionHashTable_(&self, other: NSHashTable)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unionHashTable : other)
    }
    unsafe fn minusHashTable_(&self, other: NSHashTable)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, minusHashTable : other)
    }
    unsafe fn pointerFunctions(&self) -> NSPointerFunctions
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pointerFunctions)
    }
    unsafe fn count(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, count)
    }
    unsafe fn allObjects(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allObjects)
    }
    unsafe fn anyObject(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, anyObject)
    }
    unsafe fn setRepresentation(&self) -> NSSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, setRepresentation)
    }
    unsafe fn hashTableWithOptions_(options: NSPointerFunctionsOptions) -> NSHashTable
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSHashTable").unwrap(), hashTableWithOptions : options)
    }
    unsafe fn hashTableWithWeakObjects() -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSHashTable").unwrap(), hashTableWithWeakObjects)
    }
    unsafe fn weakObjectsHashTable() -> NSHashTable
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSHashTable").unwrap(), weakObjectsHashTable)
    }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct NSHashEnumerator {
    pub _pi: NSUInteger,
    pub _si: NSUInteger,
    pub _bs: *mut ::std::os::raw::c_void,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct NSHashTableCallBacks {
    pub hash: ::std::option::Option<
        unsafe extern "C" fn(table: NSHashTable, arg1: *const ::std::os::raw::c_void) -> NSUInteger,
    >,
    pub isEqual: ::std::option::Option<
        unsafe extern "C" fn(
            table: NSHashTable,
            arg1: *const ::std::os::raw::c_void,
            arg2: *const ::std::os::raw::c_void,
        ) -> BOOL,
    >,
    pub retain: ::std::option::Option<
        unsafe extern "C" fn(table: NSHashTable, arg1: *const ::std::os::raw::c_void),
    >,
    pub release: ::std::option::Option<
        unsafe extern "C" fn(table: NSHashTable, arg1: *mut ::std::os::raw::c_void),
    >,
    pub describe: ::std::option::Option<
        unsafe extern "C" fn(table: NSHashTable, arg1: *const ::std::os::raw::c_void) -> NSString,
    >,
}
pub type NSHTTPCookiePropertyKey = NSString;
pub type NSHTTPCookieStringPolicy = NSString;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSHTTPCookie(pub id);
impl std::ops::Deref for NSHTTPCookie {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSHTTPCookie {}
impl NSHTTPCookie {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSHTTPCookie").unwrap(), alloc) })
    }
}
impl INSObject for NSHTTPCookie {}
impl PNSObject for NSHTTPCookie {}
impl std::convert::TryFrom<NSObject> for NSHTTPCookie {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSHTTPCookie, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSHTTPCookie").unwrap()) };
        if is_kind_of {
            Ok(NSHTTPCookie(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSHTTPCookie")
        }
    }
}
impl INSHTTPCookie for NSHTTPCookie {}
pub trait INSHTTPCookie: Sized + std::ops::Deref {
    unsafe fn initWithProperties_(&self, properties: NSDictionary) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithProperties : properties)
    }
    unsafe fn properties(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, properties)
    }
    unsafe fn version(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, version)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn value(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn expiresDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, expiresDate)
    }
    unsafe fn isSessionOnly(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isSessionOnly)
    }
    unsafe fn domain(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, domain)
    }
    unsafe fn path(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, path)
    }
    unsafe fn isSecure(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isSecure)
    }
    unsafe fn isHTTPOnly(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isHTTPOnly)
    }
    unsafe fn comment(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, comment)
    }
    unsafe fn commentURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, commentURL)
    }
    unsafe fn portList(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, portList)
    }
    unsafe fn sameSitePolicy(&self) -> NSHTTPCookieStringPolicy
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sameSitePolicy)
    }
    unsafe fn cookieWithProperties_(properties: NSDictionary) -> NSHTTPCookie
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSHTTPCookie").unwrap(), cookieWithProperties : properties)
    }
    unsafe fn requestHeaderFieldsWithCookies_(cookies: NSArray) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSHTTPCookie").unwrap(), requestHeaderFieldsWithCookies : cookies)
    }
    unsafe fn cookiesWithResponseHeaderFields_forURL_(
        headerFields: NSDictionary,
        URL: NSURL,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSHTTPCookie").unwrap(), cookiesWithResponseHeaderFields : headerFields, forURL : URL)
    }
}
pub type NSHTTPCookieAcceptPolicy = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSHTTPCookieStorage(pub id);
impl std::ops::Deref for NSHTTPCookieStorage {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSHTTPCookieStorage {}
impl NSHTTPCookieStorage {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSHTTPCookieStorage").unwrap(), alloc) })
    }
}
impl INSObject for NSHTTPCookieStorage {}
impl PNSObject for NSHTTPCookieStorage {}
impl std::convert::TryFrom<NSObject> for NSHTTPCookieStorage {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSHTTPCookieStorage, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSHTTPCookieStorage").unwrap()) };
        if is_kind_of {
            Ok(NSHTTPCookieStorage(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSHTTPCookieStorage")
        }
    }
}
impl INSHTTPCookieStorage for NSHTTPCookieStorage {}
pub trait INSHTTPCookieStorage: Sized + std::ops::Deref {
    unsafe fn setCookie_(&self, cookie: NSHTTPCookie)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCookie : cookie)
    }
    unsafe fn deleteCookie_(&self, cookie: NSHTTPCookie)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deleteCookie : cookie)
    }
    unsafe fn removeCookiesSinceDate_(&self, date: NSDate)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeCookiesSinceDate : date)
    }
    unsafe fn cookiesForURL_(&self, URL: NSURL) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cookiesForURL : URL)
    }
    unsafe fn setCookies_forURL_mainDocumentURL_(
        &self,
        cookies: NSArray,
        URL: NSURL,
        mainDocumentURL: NSURL,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCookies : cookies, forURL : URL, mainDocumentURL : mainDocumentURL)
    }
    unsafe fn sortedCookiesUsingDescriptors_(&self, sortOrder: NSArray) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sortedCookiesUsingDescriptors : sortOrder)
    }
    unsafe fn cookies(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cookies)
    }
    unsafe fn cookieAcceptPolicy(&self) -> NSHTTPCookieAcceptPolicy
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cookieAcceptPolicy)
    }
    unsafe fn setCookieAcceptPolicy_(&self, cookieAcceptPolicy: NSHTTPCookieAcceptPolicy)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCookieAcceptPolicy : cookieAcceptPolicy)
    }
    unsafe fn sharedCookieStorageForGroupContainerIdentifier_(
        identifier: NSString,
    ) -> NSHTTPCookieStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSHTTPCookieStorage").unwrap(), sharedCookieStorageForGroupContainerIdentifier : identifier)
    }
    unsafe fn sharedHTTPCookieStorage() -> NSHTTPCookieStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSHTTPCookieStorage").unwrap(), sharedHTTPCookieStorage)
    }
}
impl NSHTTPCookieStorage_NSURLSessionTaskAdditions for NSHTTPCookieStorage {}
pub trait NSHTTPCookieStorage_NSURLSessionTaskAdditions: Sized + std::ops::Deref {
    unsafe fn storeCookies_forTask_(&self, cookies: NSArray, task: NSURLSessionTask)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, storeCookies : cookies, forTask : task)
    }
    unsafe fn getCookiesForTask_completionHandler_(
        &self,
        task: NSURLSessionTask,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getCookiesForTask : task, completionHandler : completionHandler)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSIndexPath(pub id);
impl std::ops::Deref for NSIndexPath {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSIndexPath {}
impl NSIndexPath {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSIndexPath").unwrap(), alloc) })
    }
}
impl PNSCopying for NSIndexPath {}
impl PNSSecureCoding for NSIndexPath {}
impl INSObject for NSIndexPath {}
impl PNSObject for NSIndexPath {}
impl std::convert::TryFrom<NSObject> for NSIndexPath {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSIndexPath, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSIndexPath").unwrap()) };
        if is_kind_of {
            Ok(NSIndexPath(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSIndexPath")
        }
    }
}
impl INSIndexPath for NSIndexPath {}
pub trait INSIndexPath: Sized + std::ops::Deref {
    unsafe fn initWithIndexes_length_(
        &self,
        indexes: *const NSUInteger,
        length: NSUInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithIndexes : indexes, length : length)
    }
    unsafe fn initWithIndex_(&self, index: NSUInteger) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithIndex : index)
    }
    unsafe fn indexPathByAddingIndex_(&self, index: NSUInteger) -> NSIndexPath
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexPathByAddingIndex : index)
    }
    unsafe fn indexPathByRemovingLastIndex(&self) -> NSIndexPath
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, indexPathByRemovingLastIndex)
    }
    unsafe fn indexAtPosition_(&self, position: NSUInteger) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexAtPosition : position)
    }
    unsafe fn getIndexes_range_(&self, indexes: *mut NSUInteger, positionRange: NSRange)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getIndexes : indexes, range : positionRange)
    }
    unsafe fn compare_(&self, otherObject: NSIndexPath) -> NSComparisonResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, compare : otherObject)
    }
    unsafe fn length(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, length)
    }
    unsafe fn indexPathWithIndex_(index: NSUInteger) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSIndexPath").unwrap(), indexPathWithIndex : index)
    }
    unsafe fn indexPathWithIndexes_length_(
        indexes: *const NSUInteger,
        length: NSUInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSIndexPath").unwrap(), indexPathWithIndexes : indexes, length : length)
    }
}
impl NSIndexPath_NSDeprecated for NSIndexPath {}
pub trait NSIndexPath_NSDeprecated: Sized + std::ops::Deref {
    unsafe fn getIndexes_(&self, indexes: *mut NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getIndexes : indexes)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSInflectionRule(pub id);
impl std::ops::Deref for NSInflectionRule {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSInflectionRule {}
impl NSInflectionRule {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSInflectionRule").unwrap(), alloc) })
    }
}
impl PNSCopying for NSInflectionRule {}
impl PNSSecureCoding for NSInflectionRule {}
impl INSObject for NSInflectionRule {}
impl PNSObject for NSInflectionRule {}
impl std::convert::TryFrom<NSObject> for NSInflectionRule {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSInflectionRule, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSInflectionRule").unwrap()) };
        if is_kind_of {
            Ok(NSInflectionRule(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSInflectionRule")
        }
    }
}
impl INSInflectionRule for NSInflectionRule {}
pub trait INSInflectionRule: Sized + std::ops::Deref {
    unsafe fn init(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn automaticRule() -> NSInflectionRule
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSInflectionRule").unwrap(), automaticRule)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSInflectionRuleExplicit(pub id);
impl std::ops::Deref for NSInflectionRuleExplicit {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSInflectionRuleExplicit {}
impl NSInflectionRuleExplicit {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSInflectionRuleExplicit").unwrap(), alloc) })
    }
}
impl INSInflectionRule for NSInflectionRuleExplicit {}
impl PNSCopying for NSInflectionRuleExplicit {}
impl PNSSecureCoding for NSInflectionRuleExplicit {}
impl From<NSInflectionRuleExplicit> for NSInflectionRule {
    fn from(child: NSInflectionRuleExplicit) -> NSInflectionRule {
        NSInflectionRule(child.0)
    }
}
impl std::convert::TryFrom<NSInflectionRule> for NSInflectionRuleExplicit {
    type Error = &'static str;
    fn try_from(parent: NSInflectionRule) -> Result<NSInflectionRuleExplicit, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSInflectionRuleExplicit").unwrap()) };
        if is_kind_of {
            Ok(NSInflectionRuleExplicit(parent.0))
        } else {
            Err("This NSInflectionRule cannot be downcasted to NSInflectionRuleExplicit")
        }
    }
}
impl INSObject for NSInflectionRuleExplicit {}
impl PNSObject for NSInflectionRuleExplicit {}
impl INSInflectionRuleExplicit for NSInflectionRuleExplicit {}
pub trait INSInflectionRuleExplicit: Sized + std::ops::Deref {
    unsafe fn initWithMorphology_(&self, morphology: NSMorphology) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithMorphology : morphology)
    }
    unsafe fn morphology(&self) -> NSMorphology
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, morphology)
    }
}
impl NSInflectionRule_NSInflectionAvailability for NSInflectionRule {}
pub trait NSInflectionRule_NSInflectionAvailability: Sized + std::ops::Deref {
    unsafe fn canInflectLanguage_(language: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSInflectionRule").unwrap(), canInflectLanguage : language)
    }
    unsafe fn canInflectPreferredLocalization() -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSInflectionRule").unwrap(), canInflectPreferredLocalization)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSInvocation(pub id);
impl std::ops::Deref for NSInvocation {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSInvocation {}
impl NSInvocation {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSInvocation").unwrap(), alloc) })
    }
}
impl INSObject for NSInvocation {}
impl PNSObject for NSInvocation {}
impl std::convert::TryFrom<NSObject> for NSInvocation {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSInvocation, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSInvocation").unwrap()) };
        if is_kind_of {
            Ok(NSInvocation(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSInvocation")
        }
    }
}
impl INSInvocation for NSInvocation {}
pub trait INSInvocation: Sized + std::ops::Deref {
    unsafe fn retainArguments(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, retainArguments)
    }
    unsafe fn getReturnValue_(&self, retLoc: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getReturnValue : retLoc)
    }
    unsafe fn setReturnValue_(&self, retLoc: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReturnValue : retLoc)
    }
    unsafe fn getArgument_atIndex_(
        &self,
        argumentLocation: *mut ::std::os::raw::c_void,
        idx: NSInteger,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getArgument : argumentLocation, atIndex : idx)
    }
    unsafe fn setArgument_atIndex_(
        &self,
        argumentLocation: *mut ::std::os::raw::c_void,
        idx: NSInteger,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArgument : argumentLocation, atIndex : idx)
    }
    unsafe fn invoke(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invoke)
    }
    unsafe fn invokeWithTarget_(&self, target: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, invokeWithTarget : target)
    }
    unsafe fn invokeUsingIMP_(&self, imp: IMP)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, invokeUsingIMP : imp)
    }
    unsafe fn methodSignature(&self) -> NSMethodSignature
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, methodSignature)
    }
    unsafe fn argumentsRetained(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, argumentsRetained)
    }
    unsafe fn target(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, target)
    }
    unsafe fn setTarget_(&self, target: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTarget : target)
    }
    unsafe fn selector(&self) -> objc2::runtime::Sel
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, selector)
    }
    unsafe fn setSelector_(&self, selector: objc2::runtime::Sel)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSelector : selector)
    }
    unsafe fn invocationWithMethodSignature_(sig: NSMethodSignature) -> NSInvocation
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSInvocation").unwrap(), invocationWithMethodSignature : sig)
    }
}
pub type NSJSONReadingOptions = NSUInteger;
pub type NSJSONWritingOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSJSONSerialization(pub id);
impl std::ops::Deref for NSJSONSerialization {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSJSONSerialization {}
impl NSJSONSerialization {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSJSONSerialization").unwrap(), alloc) })
    }
}
impl INSObject for NSJSONSerialization {}
impl PNSObject for NSJSONSerialization {}
impl std::convert::TryFrom<NSObject> for NSJSONSerialization {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSJSONSerialization, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSJSONSerialization").unwrap()) };
        if is_kind_of {
            Ok(NSJSONSerialization(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSJSONSerialization")
        }
    }
}
impl INSJSONSerialization for NSJSONSerialization {}
pub trait INSJSONSerialization: Sized + std::ops::Deref {
    unsafe fn isValidJSONObject_(obj: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSJSONSerialization").unwrap(), isValidJSONObject : obj)
    }
    unsafe fn dataWithJSONObject_options_error_(
        obj: id,
        opt: NSJSONWritingOptions,
        error: *mut NSError,
    ) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSJSONSerialization").unwrap(), dataWithJSONObject : obj, options : opt, error : error)
    }
    unsafe fn JSONObjectWithData_options_error_(
        data: NSData,
        opt: NSJSONReadingOptions,
        error: *mut NSError,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSJSONSerialization").unwrap(), JSONObjectWithData : data, options : opt, error : error)
    }
    unsafe fn writeJSONObject_toStream_options_error_(
        obj: id,
        stream: NSOutputStream,
        opt: NSJSONWritingOptions,
        error: *mut NSError,
    ) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSJSONSerialization").unwrap(), writeJSONObject : obj, toStream : stream, options : opt, error : error)
    }
    unsafe fn JSONObjectWithStream_options_error_(
        stream: NSInputStream,
        opt: NSJSONReadingOptions,
        error: *mut NSError,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSJSONSerialization").unwrap(), JSONObjectWithStream : stream, options : opt, error : error)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSOrderedSet(pub id);
impl std::ops::Deref for NSOrderedSet {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSOrderedSet {}
impl NSOrderedSet {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSOrderedSet").unwrap(), alloc) })
    }
}
impl PNSCopying for NSOrderedSet {}
impl PNSMutableCopying for NSOrderedSet {}
impl PNSSecureCoding for NSOrderedSet {}
impl PNSFastEnumeration for NSOrderedSet {}
impl INSObject for NSOrderedSet {}
impl PNSObject for NSOrderedSet {}
impl std::convert::TryFrom<NSObject> for NSOrderedSet {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSOrderedSet, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSOrderedSet").unwrap()) };
        if is_kind_of {
            Ok(NSOrderedSet(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSOrderedSet")
        }
    }
}
impl<ObjectType: 'static> INSOrderedSet<ObjectType> for NSOrderedSet {}
pub trait INSOrderedSet<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn objectAtIndex_(&self, idx: NSUInteger) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectAtIndex : idx)
    }
    unsafe fn indexOfObject_(&self, object: id) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexOfObject : object)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithObjects_count_(
        &self,
        objects: *const *mut u64,
        cnt: NSUInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithObjects : objects, count : cnt)
    }
    unsafe fn initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
    unsafe fn count(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, count)
    }
}
impl<ObjectType: 'static> NSOrderedSet_NSExtendedOrderedSet<ObjectType> for NSOrderedSet {}
pub trait NSOrderedSet_NSExtendedOrderedSet<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn getObjects_range_(&self, objects: *mut id, range: NSRange)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getObjects : objects, range : range)
    }
    unsafe fn objectsAtIndexes_(&self, indexes: NSIndexSet) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectsAtIndexes : indexes)
    }
    unsafe fn isEqualToOrderedSet_(&self, other: NSOrderedSet) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isEqualToOrderedSet : other)
    }
    unsafe fn containsObject_(&self, object: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, containsObject : object)
    }
    unsafe fn intersectsOrderedSet_(&self, other: NSOrderedSet) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, intersectsOrderedSet : other)
    }
    unsafe fn intersectsSet_(&self, set: NSSet) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, intersectsSet : set)
    }
    unsafe fn isSubsetOfOrderedSet_(&self, other: NSOrderedSet) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isSubsetOfOrderedSet : other)
    }
    unsafe fn isSubsetOfSet_(&self, set: NSSet) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isSubsetOfSet : set)
    }
    unsafe fn objectAtIndexedSubscript_(&self, idx: NSUInteger) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectAtIndexedSubscript : idx)
    }
    unsafe fn objectEnumerator(&self) -> NSEnumerator
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, objectEnumerator)
    }
    unsafe fn reverseObjectEnumerator(&self) -> NSEnumerator
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reverseObjectEnumerator)
    }
    unsafe fn enumerateObjectsUsingBlock_(&self, block: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateObjectsUsingBlock : block)
    }
    unsafe fn enumerateObjectsWithOptions_usingBlock_(
        &self,
        opts: NSEnumerationOptions,
        block: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateObjectsWithOptions : opts, usingBlock : block)
    }
    unsafe fn enumerateObjectsAtIndexes_options_usingBlock_(
        &self,
        s: NSIndexSet,
        opts: NSEnumerationOptions,
        block: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateObjectsAtIndexes : s, options : opts, usingBlock : block)
    }
    unsafe fn indexOfObjectPassingTest_(&self, predicate: *mut ::std::os::raw::c_void) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexOfObjectPassingTest : predicate)
    }
    unsafe fn indexOfObjectWithOptions_passingTest_(
        &self,
        opts: NSEnumerationOptions,
        predicate: *mut ::std::os::raw::c_void,
    ) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexOfObjectWithOptions : opts, passingTest : predicate)
    }
    unsafe fn indexOfObjectAtIndexes_options_passingTest_(
        &self,
        s: NSIndexSet,
        opts: NSEnumerationOptions,
        predicate: *mut ::std::os::raw::c_void,
    ) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexOfObjectAtIndexes : s, options : opts, passingTest : predicate)
    }
    unsafe fn indexesOfObjectsPassingTest_(
        &self,
        predicate: *mut ::std::os::raw::c_void,
    ) -> NSIndexSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexesOfObjectsPassingTest : predicate)
    }
    unsafe fn indexesOfObjectsWithOptions_passingTest_(
        &self,
        opts: NSEnumerationOptions,
        predicate: *mut ::std::os::raw::c_void,
    ) -> NSIndexSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexesOfObjectsWithOptions : opts, passingTest : predicate)
    }
    unsafe fn indexesOfObjectsAtIndexes_options_passingTest_(
        &self,
        s: NSIndexSet,
        opts: NSEnumerationOptions,
        predicate: *mut ::std::os::raw::c_void,
    ) -> NSIndexSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexesOfObjectsAtIndexes : s, options : opts, passingTest : predicate)
    }
    unsafe fn indexOfObject_inSortedRange_options_usingComparator_(
        &self,
        object: id,
        range: NSRange,
        opts: NSBinarySearchingOptions,
        cmp: NSComparator,
    ) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexOfObject : object, inSortedRange : range, options : opts, usingComparator : cmp)
    }
    unsafe fn sortedArrayUsingComparator_(&self, cmptr: NSComparator) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sortedArrayUsingComparator : cmptr)
    }
    unsafe fn sortedArrayWithOptions_usingComparator_(
        &self,
        opts: NSSortOptions,
        cmptr: NSComparator,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sortedArrayWithOptions : opts, usingComparator : cmptr)
    }
    unsafe fn descriptionWithLocale_(&self, locale: id) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, descriptionWithLocale : locale)
    }
    unsafe fn descriptionWithLocale_indent_(&self, locale: id, level: NSUInteger) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, descriptionWithLocale : locale, indent : level)
    }
    unsafe fn firstObject(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, firstObject)
    }
    unsafe fn lastObject(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lastObject)
    }
    unsafe fn reversedOrderedSet(&self) -> NSOrderedSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reversedOrderedSet)
    }
    unsafe fn array(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, array)
    }
    unsafe fn set(&self) -> NSSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, set)
    }
    unsafe fn description(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, description)
    }
}
impl<ObjectType: 'static> NSOrderedSet_NSOrderedSetCreation<ObjectType> for NSOrderedSet {}
pub trait NSOrderedSet_NSOrderedSetCreation<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn initWithObject_(&self, object: id) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithObject : object)
    }
    unsafe fn initWithObjects_(&self, firstObj: id) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithObjects : firstObj)
    }
    unsafe fn initWithOrderedSet_(&self, set: NSOrderedSet) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithOrderedSet : set)
    }
    unsafe fn initWithOrderedSet_copyItems_(&self, set: NSOrderedSet, flag: BOOL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithOrderedSet : set, copyItems : flag)
    }
    unsafe fn initWithOrderedSet_range_copyItems_(
        &self,
        set: NSOrderedSet,
        range: NSRange,
        flag: BOOL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithOrderedSet : set, range : range, copyItems : flag)
    }
    unsafe fn initWithArray_(&self, array: NSArray) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithArray : array)
    }
    unsafe fn initWithArray_copyItems_(&self, set: NSArray, flag: BOOL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithArray : set, copyItems : flag)
    }
    unsafe fn initWithArray_range_copyItems_(
        &self,
        set: NSArray,
        range: NSRange,
        flag: BOOL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithArray : set, range : range, copyItems : flag)
    }
    unsafe fn initWithSet_(&self, set: NSSet) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithSet : set)
    }
    unsafe fn initWithSet_copyItems_(&self, set: NSSet, flag: BOOL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithSet : set, copyItems : flag)
    }
    unsafe fn orderedSet() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSOrderedSet").unwrap(), orderedSet)
    }
    unsafe fn orderedSetWithObject_(object: id) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSOrderedSet").unwrap(), orderedSetWithObject : object)
    }
    unsafe fn orderedSetWithObjects_count_(
        objects: *const *mut u64,
        cnt: NSUInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSOrderedSet").unwrap(), orderedSetWithObjects : objects, count : cnt)
    }
    unsafe fn orderedSetWithObjects_(firstObj: id) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSOrderedSet").unwrap(), orderedSetWithObjects : firstObj)
    }
    unsafe fn orderedSetWithOrderedSet_(set: NSOrderedSet) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSOrderedSet").unwrap(), orderedSetWithOrderedSet : set)
    }
    unsafe fn orderedSetWithOrderedSet_range_copyItems_(
        set: NSOrderedSet,
        range: NSRange,
        flag: BOOL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSOrderedSet").unwrap(), orderedSetWithOrderedSet : set, range : range, copyItems : flag)
    }
    unsafe fn orderedSetWithArray_(array: NSArray) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSOrderedSet").unwrap(), orderedSetWithArray : array)
    }
    unsafe fn orderedSetWithArray_range_copyItems_(
        array: NSArray,
        range: NSRange,
        flag: BOOL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSOrderedSet").unwrap(), orderedSetWithArray : array, range : range, copyItems : flag)
    }
    unsafe fn orderedSetWithSet_(set: NSSet) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSOrderedSet").unwrap(), orderedSetWithSet : set)
    }
    unsafe fn orderedSetWithSet_copyItems_(set: NSSet, flag: BOOL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSOrderedSet").unwrap(), orderedSetWithSet : set, copyItems : flag)
    }
}
impl<ObjectType: 'static> NSOrderedSet_NSOrderedSetDiffing<ObjectType> for NSOrderedSet {}
pub trait NSOrderedSet_NSOrderedSetDiffing<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn differenceFromOrderedSet_withOptions_usingEquivalenceTest_(
        &self,
        other: NSOrderedSet,
        options: NSOrderedCollectionDifferenceCalculationOptions,
        block: *mut ::std::os::raw::c_void,
    ) -> NSOrderedCollectionDifference
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, differenceFromOrderedSet : other, withOptions : options, usingEquivalenceTest : block)
    }
    unsafe fn differenceFromOrderedSet_withOptions_(
        &self,
        other: NSOrderedSet,
        options: NSOrderedCollectionDifferenceCalculationOptions,
    ) -> NSOrderedCollectionDifference
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, differenceFromOrderedSet : other, withOptions : options)
    }
    unsafe fn differenceFromOrderedSet_(&self, other: NSOrderedSet) -> NSOrderedCollectionDifference
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, differenceFromOrderedSet : other)
    }
    unsafe fn orderedSetByApplyingDifference_(
        &self,
        difference: NSOrderedCollectionDifference,
    ) -> NSOrderedSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, orderedSetByApplyingDifference : difference)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMutableOrderedSet(pub id);
impl std::ops::Deref for NSMutableOrderedSet {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMutableOrderedSet {}
impl NSMutableOrderedSet {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableOrderedSet").unwrap(), alloc) })
    }
}
impl<ObjectType: 'static> INSOrderedSet<ObjectType> for NSMutableOrderedSet {}
impl PNSCopying for NSMutableOrderedSet {}
impl PNSMutableCopying for NSMutableOrderedSet {}
impl PNSSecureCoding for NSMutableOrderedSet {}
impl PNSFastEnumeration for NSMutableOrderedSet {}
impl INSObject for NSMutableOrderedSet {}
impl PNSObject for NSMutableOrderedSet {}
impl std::convert::TryFrom<NSObject> for NSMutableOrderedSet {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSMutableOrderedSet, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMutableOrderedSet").unwrap()) };
        if is_kind_of {
            Ok(NSMutableOrderedSet(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSMutableOrderedSet")
        }
    }
}
impl<ObjectType: 'static> INSMutableOrderedSet<ObjectType> for NSMutableOrderedSet {}
pub trait INSMutableOrderedSet<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn insertObject_atIndex_(&self, object: id, idx: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, insertObject : object, atIndex : idx)
    }
    unsafe fn removeObjectAtIndex_(&self, idx: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObjectAtIndex : idx)
    }
    unsafe fn replaceObjectAtIndex_withObject_(&self, idx: NSUInteger, object: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replaceObjectAtIndex : idx, withObject : object)
    }
    unsafe fn initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithCapacity_(&self, numItems: NSUInteger) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCapacity : numItems)
    }
}
impl<ObjectType: 'static> NSMutableOrderedSet_NSExtendedMutableOrderedSet<ObjectType>
    for NSMutableOrderedSet
{
}
pub trait NSMutableOrderedSet_NSExtendedMutableOrderedSet<ObjectType: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn addObject_(&self, object: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addObject : object)
    }
    unsafe fn addObjects_count_(&self, objects: *const *mut u64, count: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addObjects : objects, count : count)
    }
    unsafe fn addObjectsFromArray_(&self, array: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addObjectsFromArray : array)
    }
    unsafe fn exchangeObjectAtIndex_withObjectAtIndex_(&self, idx1: NSUInteger, idx2: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, exchangeObjectAtIndex : idx1, withObjectAtIndex : idx2)
    }
    unsafe fn moveObjectsAtIndexes_toIndex_(&self, indexes: NSIndexSet, idx: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, moveObjectsAtIndexes : indexes, toIndex : idx)
    }
    unsafe fn insertObjects_atIndexes_(&self, objects: NSArray, indexes: NSIndexSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, insertObjects : objects, atIndexes : indexes)
    }
    unsafe fn setObject_atIndex_(&self, obj: id, idx: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setObject : obj, atIndex : idx)
    }
    unsafe fn setObject_atIndexedSubscript_(&self, obj: id, idx: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setObject : obj, atIndexedSubscript : idx)
    }
    unsafe fn replaceObjectsInRange_withObjects_count_(
        &self,
        range: NSRange,
        objects: *const *mut u64,
        count: NSUInteger,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replaceObjectsInRange : range, withObjects : objects, count : count)
    }
    unsafe fn replaceObjectsAtIndexes_withObjects_(&self, indexes: NSIndexSet, objects: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replaceObjectsAtIndexes : indexes, withObjects : objects)
    }
    unsafe fn removeObjectsInRange_(&self, range: NSRange)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObjectsInRange : range)
    }
    unsafe fn removeObjectsAtIndexes_(&self, indexes: NSIndexSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObjectsAtIndexes : indexes)
    }
    unsafe fn removeAllObjects(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, removeAllObjects)
    }
    unsafe fn removeObject_(&self, object: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObject : object)
    }
    unsafe fn removeObjectsInArray_(&self, array: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObjectsInArray : array)
    }
    unsafe fn intersectOrderedSet_(&self, other: NSOrderedSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, intersectOrderedSet : other)
    }
    unsafe fn minusOrderedSet_(&self, other: NSOrderedSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, minusOrderedSet : other)
    }
    unsafe fn unionOrderedSet_(&self, other: NSOrderedSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unionOrderedSet : other)
    }
    unsafe fn intersectSet_(&self, other: NSSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, intersectSet : other)
    }
    unsafe fn minusSet_(&self, other: NSSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, minusSet : other)
    }
    unsafe fn unionSet_(&self, other: NSSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unionSet : other)
    }
    unsafe fn sortUsingComparator_(&self, cmptr: NSComparator)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sortUsingComparator : cmptr)
    }
    unsafe fn sortWithOptions_usingComparator_(&self, opts: NSSortOptions, cmptr: NSComparator)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sortWithOptions : opts, usingComparator : cmptr)
    }
    unsafe fn sortRange_options_usingComparator_(
        &self,
        range: NSRange,
        opts: NSSortOptions,
        cmptr: NSComparator,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sortRange : range, options : opts, usingComparator : cmptr)
    }
}
impl<ObjectType: 'static> NSMutableOrderedSet_NSMutableOrderedSetCreation<ObjectType>
    for NSMutableOrderedSet
{
}
pub trait NSMutableOrderedSet_NSMutableOrderedSetCreation<ObjectType: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn orderedSetWithCapacity_(numItems: NSUInteger) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableOrderedSet").unwrap(), orderedSetWithCapacity : numItems)
    }
}
impl<ObjectType: 'static> NSMutableOrderedSet_NSMutableOrderedSetDiffing<ObjectType>
    for NSMutableOrderedSet
{
}
pub trait NSMutableOrderedSet_NSMutableOrderedSetDiffing<ObjectType: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn applyDifference_(&self, difference: NSOrderedCollectionDifference)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, applyDifference : difference)
    }
}
pub type NSKeyValueOperator = NSString;
pub trait NSObject_NSKeyValueCoding: Sized + std::ops::Deref {
    unsafe fn valueForKey_(&self, key: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, valueForKey : key)
    }
    unsafe fn setValue_forKey_(&self, value: id, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value, forKey : key)
    }
    unsafe fn validateValue_forKey_error_(
        &self,
        ioValue: *mut id,
        inKey: NSString,
        outError: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, validateValue : ioValue, forKey : inKey, error : outError)
    }
    unsafe fn mutableArrayValueForKey_(&self, key: NSString) -> NSMutableArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, mutableArrayValueForKey : key)
    }
    unsafe fn mutableOrderedSetValueForKey_(&self, key: NSString) -> NSMutableOrderedSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, mutableOrderedSetValueForKey : key)
    }
    unsafe fn mutableSetValueForKey_(&self, key: NSString) -> NSMutableSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, mutableSetValueForKey : key)
    }
    unsafe fn valueForKeyPath_(&self, keyPath: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, valueForKeyPath : keyPath)
    }
    unsafe fn setValue_forKeyPath_(&self, value: id, keyPath: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value, forKeyPath : keyPath)
    }
    unsafe fn validateValue_forKeyPath_error_(
        &self,
        ioValue: *mut id,
        inKeyPath: NSString,
        outError: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, validateValue : ioValue, forKeyPath : inKeyPath, error : outError)
    }
    unsafe fn mutableArrayValueForKeyPath_(&self, keyPath: NSString) -> NSMutableArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, mutableArrayValueForKeyPath : keyPath)
    }
    unsafe fn mutableOrderedSetValueForKeyPath_(&self, keyPath: NSString) -> NSMutableOrderedSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, mutableOrderedSetValueForKeyPath : keyPath)
    }
    unsafe fn mutableSetValueForKeyPath_(&self, keyPath: NSString) -> NSMutableSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, mutableSetValueForKeyPath : keyPath)
    }
    unsafe fn valueForUndefinedKey_(&self, key: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, valueForUndefinedKey : key)
    }
    unsafe fn setValue_forUndefinedKey_(&self, value: id, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value, forUndefinedKey : key)
    }
    unsafe fn setNilValueForKey_(&self, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNilValueForKey : key)
    }
    unsafe fn dictionaryWithValuesForKeys_(&self, keys: NSArray) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dictionaryWithValuesForKeys : keys)
    }
    unsafe fn setValuesForKeysWithDictionary_(&self, keyedValues: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValuesForKeysWithDictionary : keyedValues)
    }
    unsafe fn accessInstanceVariablesDirectly() -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSObject").unwrap(), accessInstanceVariablesDirectly)
    }
}
impl<ObjectType: 'static> NSArray_NSKeyValueCoding<ObjectType> for NSArray {}
pub trait NSArray_NSKeyValueCoding<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn valueForKey_(&self, key: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, valueForKey : key)
    }
    unsafe fn setValue_forKey_(&self, value: id, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value, forKey : key)
    }
}
impl<KeyType: 'static, ObjectType: 'static> NSDictionary_NSKeyValueCoding<KeyType, ObjectType>
    for NSDictionary
{
}
pub trait NSDictionary_NSKeyValueCoding<KeyType: 'static, ObjectType: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn valueForKey_(&self, key: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, valueForKey : key)
    }
}
impl<KeyType: 'static, ObjectType: 'static>
    NSMutableDictionary_NSKeyValueCoding<KeyType, ObjectType> for NSMutableDictionary
{
}
pub trait NSMutableDictionary_NSKeyValueCoding<KeyType: 'static, ObjectType: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn setValue_forKey_(&self, value: id, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value, forKey : key)
    }
}
impl<ObjectType: 'static> NSOrderedSet_NSKeyValueCoding<ObjectType> for NSOrderedSet {}
pub trait NSOrderedSet_NSKeyValueCoding<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn valueForKey_(&self, key: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, valueForKey : key)
    }
    unsafe fn setValue_forKey_(&self, value: id, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value, forKey : key)
    }
}
impl<ObjectType: 'static> NSSet_NSKeyValueCoding<ObjectType> for NSSet {}
pub trait NSSet_NSKeyValueCoding<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn valueForKey_(&self, key: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, valueForKey : key)
    }
    unsafe fn setValue_forKey_(&self, value: id, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value, forKey : key)
    }
}
pub trait NSObject_NSDeprecatedKeyValueCoding: Sized + std::ops::Deref {
    unsafe fn storedValueForKey_(&self, key: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, storedValueForKey : key)
    }
    unsafe fn takeStoredValue_forKey_(&self, value: id, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, takeStoredValue : value, forKey : key)
    }
    unsafe fn takeValue_forKey_(&self, value: id, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, takeValue : value, forKey : key)
    }
    unsafe fn takeValue_forKeyPath_(&self, value: id, keyPath: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, takeValue : value, forKeyPath : keyPath)
    }
    unsafe fn handleQueryWithUnboundKey_(&self, key: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, handleQueryWithUnboundKey : key)
    }
    unsafe fn handleTakeValue_forUnboundKey_(&self, value: id, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, handleTakeValue : value, forUnboundKey : key)
    }
    unsafe fn unableToSetNilForKey_(&self, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unableToSetNilForKey : key)
    }
    unsafe fn valuesForKeys_(&self, keys: NSArray) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, valuesForKeys : keys)
    }
    unsafe fn takeValuesFromDictionary_(&self, properties: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, takeValuesFromDictionary : properties)
    }
    unsafe fn useStoredAccessor() -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSObject").unwrap(), useStoredAccessor)
    }
}
pub type NSKeyValueObservingOptions = NSUInteger;
pub type NSKeyValueChange = NSUInteger;
pub type NSKeyValueSetMutationKind = NSUInteger;
pub type NSKeyValueChangeKey = NSString;
pub trait NSObject_NSKeyValueObserving: Sized + std::ops::Deref {
    unsafe fn observeValueForKeyPath_ofObject_change_context_(
        &self,
        keyPath: NSString,
        object: id,
        change: NSDictionary,
        context: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, observeValueForKeyPath : keyPath, ofObject : object, change : change, context : context)
    }
}
pub trait NSObject_NSKeyValueObserverRegistration: Sized + std::ops::Deref {
    unsafe fn addObserver_forKeyPath_options_context_(
        &self,
        observer: NSObject,
        keyPath: NSString,
        options: NSKeyValueObservingOptions,
        context: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addObserver : observer, forKeyPath : keyPath, options : options, context : context)
    }
    unsafe fn removeObserver_forKeyPath_context_(
        &self,
        observer: NSObject,
        keyPath: NSString,
        context: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObserver : observer, forKeyPath : keyPath, context : context)
    }
    unsafe fn removeObserver_forKeyPath_(&self, observer: NSObject, keyPath: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObserver : observer, forKeyPath : keyPath)
    }
}
impl<ObjectType: 'static> NSArray_NSKeyValueObserverRegistration<ObjectType> for NSArray {}
pub trait NSArray_NSKeyValueObserverRegistration<ObjectType: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn addObserver_toObjectsAtIndexes_forKeyPath_options_context_(
        &self,
        observer: NSObject,
        indexes: NSIndexSet,
        keyPath: NSString,
        options: NSKeyValueObservingOptions,
        context: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addObserver : observer, toObjectsAtIndexes : indexes, forKeyPath : keyPath, options : options, context : context)
    }
    unsafe fn removeObserver_fromObjectsAtIndexes_forKeyPath_context_(
        &self,
        observer: NSObject,
        indexes: NSIndexSet,
        keyPath: NSString,
        context: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObserver : observer, fromObjectsAtIndexes : indexes, forKeyPath : keyPath, context : context)
    }
    unsafe fn removeObserver_fromObjectsAtIndexes_forKeyPath_(
        &self,
        observer: NSObject,
        indexes: NSIndexSet,
        keyPath: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObserver : observer, fromObjectsAtIndexes : indexes, forKeyPath : keyPath)
    }
    unsafe fn addObserver_forKeyPath_options_context_(
        &self,
        observer: NSObject,
        keyPath: NSString,
        options: NSKeyValueObservingOptions,
        context: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addObserver : observer, forKeyPath : keyPath, options : options, context : context)
    }
    unsafe fn removeObserver_forKeyPath_context_(
        &self,
        observer: NSObject,
        keyPath: NSString,
        context: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObserver : observer, forKeyPath : keyPath, context : context)
    }
    unsafe fn removeObserver_forKeyPath_(&self, observer: NSObject, keyPath: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObserver : observer, forKeyPath : keyPath)
    }
}
impl<ObjectType: 'static> NSOrderedSet_NSKeyValueObserverRegistration<ObjectType> for NSOrderedSet {}
pub trait NSOrderedSet_NSKeyValueObserverRegistration<ObjectType: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn addObserver_forKeyPath_options_context_(
        &self,
        observer: NSObject,
        keyPath: NSString,
        options: NSKeyValueObservingOptions,
        context: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addObserver : observer, forKeyPath : keyPath, options : options, context : context)
    }
    unsafe fn removeObserver_forKeyPath_context_(
        &self,
        observer: NSObject,
        keyPath: NSString,
        context: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObserver : observer, forKeyPath : keyPath, context : context)
    }
    unsafe fn removeObserver_forKeyPath_(&self, observer: NSObject, keyPath: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObserver : observer, forKeyPath : keyPath)
    }
}
impl<ObjectType: 'static> NSSet_NSKeyValueObserverRegistration<ObjectType> for NSSet {}
pub trait NSSet_NSKeyValueObserverRegistration<ObjectType: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn addObserver_forKeyPath_options_context_(
        &self,
        observer: NSObject,
        keyPath: NSString,
        options: NSKeyValueObservingOptions,
        context: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addObserver : observer, forKeyPath : keyPath, options : options, context : context)
    }
    unsafe fn removeObserver_forKeyPath_context_(
        &self,
        observer: NSObject,
        keyPath: NSString,
        context: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObserver : observer, forKeyPath : keyPath, context : context)
    }
    unsafe fn removeObserver_forKeyPath_(&self, observer: NSObject, keyPath: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObserver : observer, forKeyPath : keyPath)
    }
}
pub trait NSObject_NSKeyValueObserverNotification: Sized + std::ops::Deref {
    unsafe fn willChangeValueForKey_(&self, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, willChangeValueForKey : key)
    }
    unsafe fn didChangeValueForKey_(&self, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, didChangeValueForKey : key)
    }
    unsafe fn willChange_valuesAtIndexes_forKey_(
        &self,
        changeKind: NSKeyValueChange,
        indexes: NSIndexSet,
        key: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, willChange : changeKind, valuesAtIndexes : indexes, forKey : key)
    }
    unsafe fn didChange_valuesAtIndexes_forKey_(
        &self,
        changeKind: NSKeyValueChange,
        indexes: NSIndexSet,
        key: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, didChange : changeKind, valuesAtIndexes : indexes, forKey : key)
    }
    unsafe fn willChangeValueForKey_withSetMutation_usingObjects_(
        &self,
        key: NSString,
        mutationKind: NSKeyValueSetMutationKind,
        objects: NSSet,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, willChangeValueForKey : key, withSetMutation : mutationKind, usingObjects : objects)
    }
    unsafe fn didChangeValueForKey_withSetMutation_usingObjects_(
        &self,
        key: NSString,
        mutationKind: NSKeyValueSetMutationKind,
        objects: NSSet,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, didChangeValueForKey : key, withSetMutation : mutationKind, usingObjects : objects)
    }
}
pub trait NSObject_NSKeyValueObservingCustomization: Sized + std::ops::Deref {
    unsafe fn observationInfo(&self) -> *mut ::std::os::raw::c_void
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, observationInfo)
    }
    unsafe fn setObservationInfo_(&self, observationInfo: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setObservationInfo : observationInfo)
    }
    unsafe fn keyPathsForValuesAffectingValueForKey_(key: NSString) -> NSSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSObject").unwrap(), keyPathsForValuesAffectingValueForKey : key)
    }
    unsafe fn automaticallyNotifiesObserversForKey_(key: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSObject").unwrap(), automaticallyNotifiesObserversForKey : key)
    }
}
pub trait NSObject_NSDeprecatedKeyValueObservingCustomization: Sized + std::ops::Deref {
    unsafe fn setKeys_triggerChangeNotificationsForDependentKey_(
        keys: NSArray,
        dependentKey: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSObject").unwrap(), setKeys : keys, triggerChangeNotificationsForDependentKey : dependentKey)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSKeyValueSharedObserversSnapshot(pub id);
impl std::ops::Deref for NSKeyValueSharedObserversSnapshot {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSKeyValueSharedObserversSnapshot {}
impl NSKeyValueSharedObserversSnapshot {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSKeyValueSharedObserversSnapshot").unwrap(), alloc) })
    }
}
impl INSObject for NSKeyValueSharedObserversSnapshot {}
impl PNSObject for NSKeyValueSharedObserversSnapshot {}
impl std::convert::TryFrom<NSObject> for NSKeyValueSharedObserversSnapshot {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSKeyValueSharedObserversSnapshot, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSKeyValueSharedObserversSnapshot").unwrap())
        };
        if is_kind_of {
            Ok(NSKeyValueSharedObserversSnapshot(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSKeyValueSharedObserversSnapshot")
        }
    }
}
impl INSKeyValueSharedObserversSnapshot for NSKeyValueSharedObserversSnapshot {}
pub trait INSKeyValueSharedObserversSnapshot: Sized + std::ops::Deref {
    unsafe fn init(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSKeyValueSharedObserversSnapshot").unwrap(), new)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSKeyValueSharedObservers(pub id);
impl std::ops::Deref for NSKeyValueSharedObservers {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSKeyValueSharedObservers {}
impl NSKeyValueSharedObservers {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSKeyValueSharedObservers").unwrap(), alloc) })
    }
}
impl INSObject for NSKeyValueSharedObservers {}
impl PNSObject for NSKeyValueSharedObservers {}
impl std::convert::TryFrom<NSObject> for NSKeyValueSharedObservers {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSKeyValueSharedObservers, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSKeyValueSharedObservers").unwrap()) };
        if is_kind_of {
            Ok(NSKeyValueSharedObservers(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSKeyValueSharedObservers")
        }
    }
}
impl INSKeyValueSharedObservers for NSKeyValueSharedObservers {}
pub trait INSKeyValueSharedObservers: Sized + std::ops::Deref {
    unsafe fn initWithObservableClass_(&self, observableClass: Class) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithObservableClass : observableClass)
    }
    unsafe fn init(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn addSharedObserver_forKey_options_context_(
        &self,
        observer: NSObject,
        key: NSString,
        options: NSKeyValueObservingOptions,
        context: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addSharedObserver : observer, forKey : key, options : options, context : context)
    }
    unsafe fn addObserver_forKeyPath_options_context_(
        &self,
        observer: NSObject,
        keyPath: NSString,
        options: NSKeyValueObservingOptions,
        context: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addObserver : observer, forKeyPath : keyPath, options : options, context : context)
    }
    unsafe fn snapshot(&self) -> NSKeyValueSharedObserversSnapshot
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, snapshot)
    }
    unsafe fn new() -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSKeyValueSharedObservers").unwrap(), new)
    }
}
pub trait NSObject_NSKeyValueSharedObserverRegistration: Sized + std::ops::Deref {
    unsafe fn setSharedObservers_(&self, sharedObservers: NSKeyValueSharedObserversSnapshot)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSharedObservers : sharedObservers)
    }
}
pub type NSPropertyListMutabilityOptions = NSUInteger;
pub type NSPropertyListFormat = NSUInteger;
pub use self::NSPropertyListMutabilityOptions as NSPropertyListReadOptions;
pub type NSPropertyListWriteOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSPropertyListSerialization(pub id);
impl std::ops::Deref for NSPropertyListSerialization {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSPropertyListSerialization {}
impl NSPropertyListSerialization {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSPropertyListSerialization").unwrap(), alloc) })
    }
}
impl INSObject for NSPropertyListSerialization {}
impl PNSObject for NSPropertyListSerialization {}
impl std::convert::TryFrom<NSObject> for NSPropertyListSerialization {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSPropertyListSerialization, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSPropertyListSerialization").unwrap()) };
        if is_kind_of {
            Ok(NSPropertyListSerialization(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSPropertyListSerialization")
        }
    }
}
impl INSPropertyListSerialization for NSPropertyListSerialization {}
pub trait INSPropertyListSerialization: Sized + std::ops::Deref {
    unsafe fn propertyList_isValidForFormat_(plist: id, format: NSPropertyListFormat) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPropertyListSerialization").unwrap(), propertyList : plist, isValidForFormat : format)
    }
    unsafe fn dataWithPropertyList_format_options_error_(
        plist: id,
        format: NSPropertyListFormat,
        opt: NSPropertyListWriteOptions,
        error: *mut NSError,
    ) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPropertyListSerialization").unwrap(), dataWithPropertyList : plist, format : format, options : opt, error : error)
    }
    unsafe fn writePropertyList_toStream_format_options_error_(
        plist: id,
        stream: NSOutputStream,
        format: NSPropertyListFormat,
        opt: NSPropertyListWriteOptions,
        error: *mut NSError,
    ) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPropertyListSerialization").unwrap(), writePropertyList : plist, toStream : stream, format : format, options : opt, error : error)
    }
    unsafe fn propertyListWithData_options_format_error_(
        data: NSData,
        opt: NSPropertyListReadOptions,
        format: *mut NSPropertyListFormat,
        error: *mut NSError,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPropertyListSerialization").unwrap(), propertyListWithData : data, options : opt, format : format, error : error)
    }
    unsafe fn propertyListWithStream_options_format_error_(
        stream: NSInputStream,
        opt: NSPropertyListReadOptions,
        format: *mut NSPropertyListFormat,
        error: *mut NSError,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPropertyListSerialization").unwrap(), propertyListWithStream : stream, options : opt, format : format, error : error)
    }
    unsafe fn dataFromPropertyList_format_errorDescription_(
        plist: id,
        format: NSPropertyListFormat,
        errorString: *mut NSString,
    ) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPropertyListSerialization").unwrap(), dataFromPropertyList : plist, format : format, errorDescription : errorString)
    }
    unsafe fn propertyListFromData_mutabilityOption_format_errorDescription_(
        data: NSData,
        opt: NSPropertyListMutabilityOptions,
        format: *mut NSPropertyListFormat,
        errorString: *mut NSString,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPropertyListSerialization").unwrap(), propertyListFromData : data, mutabilityOption : opt, format : format, errorDescription : errorString)
    }
}
pub type NSPoint = CGPoint;
pub type NSPointPointer = *mut NSPoint;
pub type NSPointArray = *mut NSPoint;
pub type NSSize = CGSize;
pub type NSSizePointer = *mut NSSize;
pub type NSSizeArray = *mut NSSize;
pub type NSRect = CGRect;
pub type NSRectPointer = *mut NSRect;
pub type NSRectArray = *mut NSRect;
pub type NSRectEdge = NSUInteger;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct NSEdgeInsets {
    pub top: CGFloat,
    pub left: CGFloat,
    pub bottom: CGFloat,
    pub right: CGFloat,
}
pub type NSAlignmentOptions = ::std::os::raw::c_ulonglong;
impl NSValue_NSValueGeometryExtensions for NSValue {}
pub trait NSValue_NSValueGeometryExtensions: Sized + std::ops::Deref {
    unsafe fn pointValue(&self) -> NSPoint
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pointValue)
    }
    unsafe fn sizeValue(&self) -> NSSize
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sizeValue)
    }
    unsafe fn rectValue(&self) -> NSRect
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rectValue)
    }
    unsafe fn edgeInsetsValue(&self) -> NSEdgeInsets
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, edgeInsetsValue)
    }
    unsafe fn valueWithPoint_(point: NSPoint) -> NSValue
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSValue").unwrap(), valueWithPoint : point)
    }
    unsafe fn valueWithSize_(size: NSSize) -> NSValue
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSValue").unwrap(), valueWithSize : size)
    }
    unsafe fn valueWithRect_(rect: NSRect) -> NSValue
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSValue").unwrap(), valueWithRect : rect)
    }
    unsafe fn valueWithEdgeInsets_(insets: NSEdgeInsets) -> NSValue
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSValue").unwrap(), valueWithEdgeInsets : insets)
    }
}
impl NSCoder_NSGeometryCoding for NSCoder {}
pub trait NSCoder_NSGeometryCoding: Sized + std::ops::Deref {
    unsafe fn encodePoint_(&self, point: NSPoint)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodePoint : point)
    }
    unsafe fn decodePoint(&self) -> NSPoint
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, decodePoint)
    }
    unsafe fn encodeSize_(&self, size: NSSize)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeSize : size)
    }
    unsafe fn decodeSize(&self) -> NSSize
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, decodeSize)
    }
    unsafe fn encodeRect_(&self, rect: NSRect)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeRect : rect)
    }
    unsafe fn decodeRect(&self) -> NSRect
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, decodeRect)
    }
}
impl NSCoder_NSGeometryKeyedCoding for NSCoder {}
pub trait NSCoder_NSGeometryKeyedCoding: Sized + std::ops::Deref {
    unsafe fn encodePoint_forKey_(&self, point: NSPoint, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodePoint : point, forKey : key)
    }
    unsafe fn encodeSize_forKey_(&self, size: NSSize, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeSize : size, forKey : key)
    }
    unsafe fn encodeRect_forKey_(&self, rect: NSRect, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeRect : rect, forKey : key)
    }
    unsafe fn decodePointForKey_(&self, key: NSString) -> NSPoint
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodePointForKey : key)
    }
    unsafe fn decodeSizeForKey_(&self, key: NSString) -> NSSize
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeSizeForKey : key)
    }
    unsafe fn decodeRectForKey_(&self, key: NSString) -> NSRect
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeRectForKey : key)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSKeyedArchiver(pub id);
impl std::ops::Deref for NSKeyedArchiver {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSKeyedArchiver {}
impl NSKeyedArchiver {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSKeyedArchiver").unwrap(), alloc) })
    }
}
impl INSCoder for NSKeyedArchiver {}
impl From<NSKeyedArchiver> for NSCoder {
    fn from(child: NSKeyedArchiver) -> NSCoder {
        NSCoder(child.0)
    }
}
impl std::convert::TryFrom<NSCoder> for NSKeyedArchiver {
    type Error = &'static str;
    fn try_from(parent: NSCoder) -> Result<NSKeyedArchiver, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSKeyedArchiver").unwrap()) };
        if is_kind_of {
            Ok(NSKeyedArchiver(parent.0))
        } else {
            Err("This NSCoder cannot be downcasted to NSKeyedArchiver")
        }
    }
}
impl INSObject for NSKeyedArchiver {}
impl PNSObject for NSKeyedArchiver {}
impl INSKeyedArchiver for NSKeyedArchiver {}
pub trait INSKeyedArchiver: Sized + std::ops::Deref {
    unsafe fn initRequiringSecureCoding_(&self, requiresSecureCoding: BOOL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initRequiringSecureCoding : requiresSecureCoding)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initForWritingWithMutableData_(&self, data: NSMutableData) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initForWritingWithMutableData : data)
    }
    unsafe fn finishEncoding(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, finishEncoding)
    }
    unsafe fn setClassName_forClass_(&self, codedName: NSString, cls: Class)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setClassName : codedName, forClass : cls)
    }
    unsafe fn classNameForClass_(&self, cls: Class) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, classNameForClass : cls)
    }
    unsafe fn encodeObject_forKey_(&self, object: id, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeObject : object, forKey : key)
    }
    unsafe fn encodeConditionalObject_forKey_(&self, object: id, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeConditionalObject : object, forKey : key)
    }
    unsafe fn encodeBool_forKey_(&self, value: BOOL, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeBool : value, forKey : key)
    }
    unsafe fn encodeInt_forKey_(&self, value: ::std::os::raw::c_int, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeInt : value, forKey : key)
    }
    unsafe fn encodeInt32_forKey_(&self, value: i32, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeInt32 : value, forKey : key)
    }
    unsafe fn encodeInt64_forKey_(&self, value: i64, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeInt64 : value, forKey : key)
    }
    unsafe fn encodeFloat_forKey_(&self, value: f32, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeFloat : value, forKey : key)
    }
    unsafe fn encodeDouble_forKey_(&self, value: f64, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeDouble : value, forKey : key)
    }
    unsafe fn encodeBytes_length_forKey_(&self, bytes: *const u8, length: NSUInteger, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeBytes : bytes, length : length, forKey : key)
    }
    unsafe fn delegate(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delegate)
    }
    unsafe fn setDelegate_(&self, delegate: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelegate : delegate)
    }
    unsafe fn outputFormat(&self) -> NSPropertyListFormat
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, outputFormat)
    }
    unsafe fn setOutputFormat_(&self, outputFormat: NSPropertyListFormat)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOutputFormat : outputFormat)
    }
    unsafe fn encodedData(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, encodedData)
    }
    unsafe fn requiresSecureCoding(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requiresSecureCoding)
    }
    unsafe fn setRequiresSecureCoding_(&self, requiresSecureCoding: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRequiresSecureCoding : requiresSecureCoding)
    }
    unsafe fn archivedDataWithRootObject_requiringSecureCoding_error_(
        object: id,
        requiresSecureCoding: BOOL,
        error: *mut NSError,
    ) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSKeyedArchiver").unwrap(), archivedDataWithRootObject : object, requiringSecureCoding : requiresSecureCoding, error : error)
    }
    unsafe fn archivedDataWithRootObject_(rootObject: id) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSKeyedArchiver").unwrap(), archivedDataWithRootObject : rootObject)
    }
    unsafe fn archiveRootObject_toFile_(rootObject: id, path: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSKeyedArchiver").unwrap(), archiveRootObject : rootObject, toFile : path)
    }
    unsafe fn class_setClassName_forClass_(codedName: NSString, cls: Class)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSKeyedArchiver").unwrap(), setClassName : codedName, forClass : cls)
    }
    unsafe fn class_classNameForClass_(cls: Class) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSKeyedArchiver").unwrap(), classNameForClass : cls)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSKeyedUnarchiver(pub id);
impl std::ops::Deref for NSKeyedUnarchiver {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSKeyedUnarchiver {}
impl NSKeyedUnarchiver {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSKeyedUnarchiver").unwrap(), alloc) })
    }
}
impl INSCoder for NSKeyedUnarchiver {}
impl std::convert::TryFrom<NSCoder> for NSKeyedUnarchiver {
    type Error = &'static str;
    fn try_from(parent: NSCoder) -> Result<NSKeyedUnarchiver, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSKeyedUnarchiver").unwrap()) };
        if is_kind_of {
            Ok(NSKeyedUnarchiver(parent.0))
        } else {
            Err("This NSCoder cannot be downcasted to NSKeyedUnarchiver")
        }
    }
}
impl INSObject for NSKeyedUnarchiver {}
impl PNSObject for NSKeyedUnarchiver {}
impl INSKeyedUnarchiver for NSKeyedUnarchiver {}
pub trait INSKeyedUnarchiver: Sized + std::ops::Deref {
    unsafe fn initForReadingFromData_error_(
        &self,
        data: NSData,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initForReadingFromData : data, error : error)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initForReadingWithData_(&self, data: NSData) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initForReadingWithData : data)
    }
    unsafe fn finishDecoding(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, finishDecoding)
    }
    unsafe fn setClass_forClassName_(&self, cls: Class, codedName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setClass : cls, forClassName : codedName)
    }
    unsafe fn classForClassName_(&self, codedName: NSString) -> Class
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, classForClassName : codedName)
    }
    unsafe fn containsValueForKey_(&self, key: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, containsValueForKey : key)
    }
    unsafe fn decodeObjectForKey_(&self, key: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeObjectForKey : key)
    }
    unsafe fn decodeBoolForKey_(&self, key: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeBoolForKey : key)
    }
    unsafe fn decodeIntForKey_(&self, key: NSString) -> ::std::os::raw::c_int
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeIntForKey : key)
    }
    unsafe fn decodeInt32ForKey_(&self, key: NSString) -> i32
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeInt32ForKey : key)
    }
    unsafe fn decodeInt64ForKey_(&self, key: NSString) -> i64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeInt64ForKey : key)
    }
    unsafe fn decodeFloatForKey_(&self, key: NSString) -> f32
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeFloatForKey : key)
    }
    unsafe fn decodeDoubleForKey_(&self, key: NSString) -> f64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeDoubleForKey : key)
    }
    unsafe fn decodeBytesForKey_returnedLength_(
        &self,
        key: NSString,
        lengthp: *mut NSUInteger,
    ) -> *const u8
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeBytesForKey : key, returnedLength : lengthp)
    }
    unsafe fn delegate(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delegate)
    }
    unsafe fn setDelegate_(&self, delegate: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelegate : delegate)
    }
    unsafe fn requiresSecureCoding(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requiresSecureCoding)
    }
    unsafe fn setRequiresSecureCoding_(&self, requiresSecureCoding: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRequiresSecureCoding : requiresSecureCoding)
    }
    unsafe fn decodingFailurePolicy(&self) -> NSDecodingFailurePolicy
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, decodingFailurePolicy)
    }
    unsafe fn setDecodingFailurePolicy_(&self, decodingFailurePolicy: NSDecodingFailurePolicy)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDecodingFailurePolicy : decodingFailurePolicy)
    }
    unsafe fn unarchivedObjectOfClass_fromData_error_(
        cls: Class,
        data: NSData,
        error: *mut NSError,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSKeyedUnarchiver").unwrap(), unarchivedObjectOfClass : cls, fromData : data, error : error)
    }
    unsafe fn unarchivedArrayOfObjectsOfClass_fromData_error_(
        cls: Class,
        data: NSData,
        error: *mut NSError,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSKeyedUnarchiver").unwrap(), unarchivedArrayOfObjectsOfClass : cls, fromData : data, error : error)
    }
    unsafe fn unarchivedDictionaryWithKeysOfClass_objectsOfClass_fromData_error_(
        keyCls: Class,
        valueCls: Class,
        data: NSData,
        error: *mut NSError,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSKeyedUnarchiver").unwrap(), unarchivedDictionaryWithKeysOfClass : keyCls, objectsOfClass : valueCls, fromData : data, error : error)
    }
    unsafe fn unarchivedObjectOfClasses_fromData_error_(
        classes: NSSet,
        data: NSData,
        error: *mut NSError,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSKeyedUnarchiver").unwrap(), unarchivedObjectOfClasses : classes, fromData : data, error : error)
    }
    unsafe fn unarchivedArrayOfObjectsOfClasses_fromData_error_(
        classes: NSSet,
        data: NSData,
        error: *mut NSError,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSKeyedUnarchiver").unwrap(), unarchivedArrayOfObjectsOfClasses : classes, fromData : data, error : error)
    }
    unsafe fn unarchivedDictionaryWithKeysOfClasses_objectsOfClasses_fromData_error_(
        keyClasses: NSSet,
        valueClasses: NSSet,
        data: NSData,
        error: *mut NSError,
    ) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSKeyedUnarchiver").unwrap(), unarchivedDictionaryWithKeysOfClasses : keyClasses, objectsOfClasses : valueClasses, fromData : data, error : error)
    }
    unsafe fn unarchiveObjectWithData_(data: NSData) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSKeyedUnarchiver").unwrap(), unarchiveObjectWithData : data)
    }
    unsafe fn unarchiveTopLevelObjectWithData_error_(data: NSData, error: *mut NSError) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSKeyedUnarchiver").unwrap(), unarchiveTopLevelObjectWithData : data, error : error)
    }
    unsafe fn unarchiveObjectWithFile_(path: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSKeyedUnarchiver").unwrap(), unarchiveObjectWithFile : path)
    }
    unsafe fn class_setClass_forClassName_(cls: Class, codedName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSKeyedUnarchiver").unwrap(), setClass : cls, forClassName : codedName)
    }
    unsafe fn class_classForClassName_(codedName: NSString) -> Class
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSKeyedUnarchiver").unwrap(), classForClassName : codedName)
    }
}
pub trait PNSKeyedArchiverDelegate: Sized + std::ops::Deref {
    unsafe fn archiver_willEncodeObject_(&self, archiver: NSKeyedArchiver, object: id) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, archiver : archiver, willEncodeObject : object)
    }
    unsafe fn archiver_didEncodeObject_(&self, archiver: NSKeyedArchiver, object: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, archiver : archiver, didEncodeObject : object)
    }
    unsafe fn archiver_willReplaceObject_withObject_(
        &self,
        archiver: NSKeyedArchiver,
        object: id,
        newObject: id,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, archiver : archiver, willReplaceObject : object, withObject : newObject)
    }
    unsafe fn archiverWillFinish_(&self, archiver: NSKeyedArchiver)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, archiverWillFinish : archiver)
    }
    unsafe fn archiverDidFinish_(&self, archiver: NSKeyedArchiver)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, archiverDidFinish : archiver)
    }
}
pub trait PNSKeyedUnarchiverDelegate: Sized + std::ops::Deref {
    unsafe fn unarchiver_cannotDecodeObjectOfClassName_originalClasses_(
        &self,
        unarchiver: NSKeyedUnarchiver,
        name: NSString,
        classNames: NSArray,
    ) -> Class
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unarchiver : unarchiver, cannotDecodeObjectOfClassName : name, originalClasses : classNames)
    }
    unsafe fn unarchiver_didDecodeObject_(&self, unarchiver: NSKeyedUnarchiver, object: id) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unarchiver : unarchiver, didDecodeObject : object)
    }
    unsafe fn unarchiver_willReplaceObject_withObject_(
        &self,
        unarchiver: NSKeyedUnarchiver,
        object: id,
        newObject: id,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unarchiver : unarchiver, willReplaceObject : object, withObject : newObject)
    }
    unsafe fn unarchiverWillFinish_(&self, unarchiver: NSKeyedUnarchiver)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unarchiverWillFinish : unarchiver)
    }
    unsafe fn unarchiverDidFinish_(&self, unarchiver: NSKeyedUnarchiver)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unarchiverDidFinish : unarchiver)
    }
}
pub trait NSObject_NSKeyedArchiverObjectSubstitution: Sized + std::ops::Deref {
    unsafe fn replacementObjectForKeyedArchiver_(&self, archiver: NSKeyedArchiver) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replacementObjectForKeyedArchiver : archiver)
    }
    unsafe fn classForKeyedArchiver(&self) -> Class
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, classForKeyedArchiver)
    }
    unsafe fn classFallbacksForKeyedArchiver() -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSObject").unwrap(), classFallbacksForKeyedArchiver)
    }
}
pub trait NSObject_NSKeyedUnarchiverObjectSubstitution: Sized + std::ops::Deref {
    unsafe fn classForKeyedUnarchiver() -> Class
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSObject").unwrap(), classForKeyedUnarchiver)
    }
}
pub trait PNSLocking: Sized + std::ops::Deref {
    unsafe fn lock(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lock)
    }
    unsafe fn unlock(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, unlock)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSLock(pub id);
impl std::ops::Deref for NSLock {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSLock {}
impl NSLock {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSLock").unwrap(), alloc) })
    }
}
impl PNSLocking for NSLock {}
impl INSObject for NSLock {}
impl PNSObject for NSLock {}
impl std::convert::TryFrom<NSObject> for NSLock {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSLock, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSLock").unwrap()) };
        if is_kind_of {
            Ok(NSLock(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSLock")
        }
    }
}
impl INSLock for NSLock {}
pub trait INSLock: Sized + std::ops::Deref {
    unsafe fn tryLock(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tryLock)
    }
    unsafe fn lockBeforeDate_(&self, limit: NSDate) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, lockBeforeDate : limit)
    }
    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 NSConditionLock(pub id);
impl std::ops::Deref for NSConditionLock {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSConditionLock {}
impl NSConditionLock {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSConditionLock").unwrap(), alloc) })
    }
}
impl PNSLocking for NSConditionLock {}
impl INSObject for NSConditionLock {}
impl PNSObject for NSConditionLock {}
impl std::convert::TryFrom<NSObject> for NSConditionLock {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSConditionLock, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSConditionLock").unwrap()) };
        if is_kind_of {
            Ok(NSConditionLock(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSConditionLock")
        }
    }
}
impl INSConditionLock for NSConditionLock {}
pub trait INSConditionLock: Sized + std::ops::Deref {
    unsafe fn initWithCondition_(&self, condition: NSInteger) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCondition : condition)
    }
    unsafe fn lockWhenCondition_(&self, condition: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, lockWhenCondition : condition)
    }
    unsafe fn tryLock(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tryLock)
    }
    unsafe fn tryLockWhenCondition_(&self, condition: NSInteger) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, tryLockWhenCondition : condition)
    }
    unsafe fn unlockWithCondition_(&self, condition: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unlockWithCondition : condition)
    }
    unsafe fn lockBeforeDate_(&self, limit: NSDate) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, lockBeforeDate : limit)
    }
    unsafe fn lockWhenCondition_beforeDate_(&self, condition: NSInteger, limit: NSDate) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, lockWhenCondition : condition, beforeDate : limit)
    }
    unsafe fn condition(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, condition)
    }
    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 NSRecursiveLock(pub id);
impl std::ops::Deref for NSRecursiveLock {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSRecursiveLock {}
impl NSRecursiveLock {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSRecursiveLock").unwrap(), alloc) })
    }
}
impl PNSLocking for NSRecursiveLock {}
impl INSObject for NSRecursiveLock {}
impl PNSObject for NSRecursiveLock {}
impl std::convert::TryFrom<NSObject> for NSRecursiveLock {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSRecursiveLock, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSRecursiveLock").unwrap()) };
        if is_kind_of {
            Ok(NSRecursiveLock(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSRecursiveLock")
        }
    }
}
impl INSRecursiveLock for NSRecursiveLock {}
pub trait INSRecursiveLock: Sized + std::ops::Deref {
    unsafe fn tryLock(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tryLock)
    }
    unsafe fn lockBeforeDate_(&self, limit: NSDate) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, lockBeforeDate : limit)
    }
    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 NSCondition(pub id);
impl std::ops::Deref for NSCondition {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSCondition {}
impl NSCondition {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSCondition").unwrap(), alloc) })
    }
}
impl PNSLocking for NSCondition {}
impl INSObject for NSCondition {}
impl PNSObject for NSCondition {}
impl std::convert::TryFrom<NSObject> for NSCondition {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSCondition, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSCondition").unwrap()) };
        if is_kind_of {
            Ok(NSCondition(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSCondition")
        }
    }
}
impl INSCondition for NSCondition {}
pub trait INSCondition: Sized + std::ops::Deref {
    unsafe fn wait(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, wait)
    }
    unsafe fn waitUntilDate_(&self, limit: NSDate) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, waitUntilDate : limit)
    }
    unsafe fn signal(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, signal)
    }
    unsafe fn broadcast(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, broadcast)
    }
    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)
    }
}
pub type NSMapTableOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMapTable(pub id);
impl std::ops::Deref for NSMapTable {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMapTable {}
impl NSMapTable {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMapTable").unwrap(), alloc) })
    }
}
impl PNSCopying for NSMapTable {}
impl PNSSecureCoding for NSMapTable {}
impl PNSFastEnumeration for NSMapTable {}
impl INSObject for NSMapTable {}
impl PNSObject for NSMapTable {}
impl std::convert::TryFrom<NSObject> for NSMapTable {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSMapTable, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMapTable").unwrap()) };
        if is_kind_of {
            Ok(NSMapTable(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSMapTable")
        }
    }
}
impl<KeyType: 'static, ObjectType: 'static> INSMapTable<KeyType, ObjectType> for NSMapTable {}
pub trait INSMapTable<KeyType: 'static, ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn initWithKeyOptions_valueOptions_capacity_(
        &self,
        keyOptions: NSPointerFunctionsOptions,
        valueOptions: NSPointerFunctionsOptions,
        initialCapacity: NSUInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithKeyOptions : keyOptions, valueOptions : valueOptions, capacity : initialCapacity)
    }
    unsafe fn initWithKeyPointerFunctions_valuePointerFunctions_capacity_(
        &self,
        keyFunctions: NSPointerFunctions,
        valueFunctions: NSPointerFunctions,
        initialCapacity: NSUInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithKeyPointerFunctions : keyFunctions, valuePointerFunctions : valueFunctions, capacity : initialCapacity)
    }
    unsafe fn objectForKey_(&self, aKey: id) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectForKey : aKey)
    }
    unsafe fn removeObjectForKey_(&self, aKey: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObjectForKey : aKey)
    }
    unsafe fn setObject_forKey_(&self, anObject: id, aKey: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setObject : anObject, forKey : aKey)
    }
    unsafe fn keyEnumerator(&self) -> NSEnumerator
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, keyEnumerator)
    }
    unsafe fn objectEnumerator(&self) -> NSEnumerator
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, objectEnumerator)
    }
    unsafe fn removeAllObjects(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, removeAllObjects)
    }
    unsafe fn dictionaryRepresentation(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dictionaryRepresentation)
    }
    unsafe fn keyPointerFunctions(&self) -> NSPointerFunctions
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, keyPointerFunctions)
    }
    unsafe fn valuePointerFunctions(&self) -> NSPointerFunctions
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, valuePointerFunctions)
    }
    unsafe fn count(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, count)
    }
    unsafe fn mapTableWithKeyOptions_valueOptions_(
        keyOptions: NSPointerFunctionsOptions,
        valueOptions: NSPointerFunctionsOptions,
    ) -> NSMapTable
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMapTable").unwrap(), mapTableWithKeyOptions : keyOptions, valueOptions : valueOptions)
    }
    unsafe fn mapTableWithStrongToStrongObjects() -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMapTable").unwrap(), mapTableWithStrongToStrongObjects)
    }
    unsafe fn mapTableWithWeakToStrongObjects() -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMapTable").unwrap(), mapTableWithWeakToStrongObjects)
    }
    unsafe fn mapTableWithStrongToWeakObjects() -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMapTable").unwrap(), mapTableWithStrongToWeakObjects)
    }
    unsafe fn mapTableWithWeakToWeakObjects() -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMapTable").unwrap(), mapTableWithWeakToWeakObjects)
    }
    unsafe fn strongToStrongObjectsMapTable() -> NSMapTable
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMapTable").unwrap(), strongToStrongObjectsMapTable)
    }
    unsafe fn weakToStrongObjectsMapTable() -> NSMapTable
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMapTable").unwrap(), weakToStrongObjectsMapTable)
    }
    unsafe fn strongToWeakObjectsMapTable() -> NSMapTable
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMapTable").unwrap(), strongToWeakObjectsMapTable)
    }
    unsafe fn weakToWeakObjectsMapTable() -> NSMapTable
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMapTable").unwrap(), weakToWeakObjectsMapTable)
    }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct NSMapEnumerator {
    pub _pi: NSUInteger,
    pub _si: NSUInteger,
    pub _bs: *mut ::std::os::raw::c_void,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct NSMapTableKeyCallBacks {
    pub hash: ::std::option::Option<
        unsafe extern "C" fn(table: NSMapTable, arg1: *const ::std::os::raw::c_void) -> NSUInteger,
    >,
    pub isEqual: ::std::option::Option<
        unsafe extern "C" fn(
            table: NSMapTable,
            arg1: *const ::std::os::raw::c_void,
            arg2: *const ::std::os::raw::c_void,
        ) -> BOOL,
    >,
    pub retain: ::std::option::Option<
        unsafe extern "C" fn(table: NSMapTable, arg1: *const ::std::os::raw::c_void),
    >,
    pub release: ::std::option::Option<
        unsafe extern "C" fn(table: NSMapTable, arg1: *mut ::std::os::raw::c_void),
    >,
    pub describe: ::std::option::Option<
        unsafe extern "C" fn(table: NSMapTable, arg1: *const ::std::os::raw::c_void) -> NSString,
    >,
    pub notAKeyMarker: *const ::std::os::raw::c_void,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct NSMapTableValueCallBacks {
    pub retain: ::std::option::Option<
        unsafe extern "C" fn(table: NSMapTable, arg1: *const ::std::os::raw::c_void),
    >,
    pub release: ::std::option::Option<
        unsafe extern "C" fn(table: NSMapTable, arg1: *mut ::std::os::raw::c_void),
    >,
    pub describe: ::std::option::Option<
        unsafe extern "C" fn(table: NSMapTable, arg1: *const ::std::os::raw::c_void) -> NSString,
    >,
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMethodSignature(pub id);
impl std::ops::Deref for NSMethodSignature {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMethodSignature {}
impl NSMethodSignature {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMethodSignature").unwrap(), alloc) })
    }
}
impl INSObject for NSMethodSignature {}
impl PNSObject for NSMethodSignature {}
impl std::convert::TryFrom<NSObject> for NSMethodSignature {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSMethodSignature, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMethodSignature").unwrap()) };
        if is_kind_of {
            Ok(NSMethodSignature(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSMethodSignature")
        }
    }
}
impl INSMethodSignature for NSMethodSignature {}
pub trait INSMethodSignature: Sized + std::ops::Deref {
    unsafe fn getArgumentTypeAtIndex_(&self, idx: NSUInteger) -> *const ::std::os::raw::c_char
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getArgumentTypeAtIndex : idx)
    }
    unsafe fn isOneway(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isOneway)
    }
    unsafe fn numberOfArguments(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, numberOfArguments)
    }
    unsafe fn frameLength(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, frameLength)
    }
    unsafe fn methodReturnType(&self) -> *const ::std::os::raw::c_char
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, methodReturnType)
    }
    unsafe fn methodReturnLength(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, methodReturnLength)
    }
    unsafe fn signatureWithObjCTypes_(types: *const ::std::os::raw::c_char) -> NSMethodSignature
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMethodSignature").unwrap(), signatureWithObjCTypes : types)
    }
}
pub type NSGrammaticalGender = NSInteger;
pub type NSGrammaticalPartOfSpeech = NSInteger;
pub type NSGrammaticalNumber = NSInteger;
pub type NSGrammaticalCase = NSInteger;
pub type NSGrammaticalPronounType = NSInteger;
pub type NSGrammaticalPerson = NSInteger;
pub type NSGrammaticalDetermination = NSInteger;
pub type NSGrammaticalDefiniteness = NSInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMorphology(pub id);
impl std::ops::Deref for NSMorphology {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMorphology {}
impl NSMorphology {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMorphology").unwrap(), alloc) })
    }
}
impl PNSCopying for NSMorphology {}
impl PNSSecureCoding for NSMorphology {}
impl INSObject for NSMorphology {}
impl PNSObject for NSMorphology {}
impl std::convert::TryFrom<NSObject> for NSMorphology {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSMorphology, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMorphology").unwrap()) };
        if is_kind_of {
            Ok(NSMorphology(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSMorphology")
        }
    }
}
impl INSMorphology for NSMorphology {}
pub trait INSMorphology: Sized + std::ops::Deref {
    unsafe fn grammaticalGender(&self) -> NSGrammaticalGender
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, grammaticalGender)
    }
    unsafe fn setGrammaticalGender_(&self, grammaticalGender: NSGrammaticalGender)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGrammaticalGender : grammaticalGender)
    }
    unsafe fn partOfSpeech(&self) -> NSGrammaticalPartOfSpeech
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, partOfSpeech)
    }
    unsafe fn setPartOfSpeech_(&self, partOfSpeech: NSGrammaticalPartOfSpeech)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPartOfSpeech : partOfSpeech)
    }
    unsafe fn number(&self) -> NSGrammaticalNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, number)
    }
    unsafe fn setNumber_(&self, number: NSGrammaticalNumber)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNumber : number)
    }
    unsafe fn grammaticalCase(&self) -> NSGrammaticalCase
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, grammaticalCase)
    }
    unsafe fn setGrammaticalCase_(&self, grammaticalCase: NSGrammaticalCase)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGrammaticalCase : grammaticalCase)
    }
    unsafe fn determination(&self) -> NSGrammaticalDetermination
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, determination)
    }
    unsafe fn setDetermination_(&self, determination: NSGrammaticalDetermination)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDetermination : determination)
    }
    unsafe fn grammaticalPerson(&self) -> NSGrammaticalPerson
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, grammaticalPerson)
    }
    unsafe fn setGrammaticalPerson_(&self, grammaticalPerson: NSGrammaticalPerson)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGrammaticalPerson : grammaticalPerson)
    }
    unsafe fn pronounType(&self) -> NSGrammaticalPronounType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pronounType)
    }
    unsafe fn setPronounType_(&self, pronounType: NSGrammaticalPronounType)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPronounType : pronounType)
    }
    unsafe fn definiteness(&self) -> NSGrammaticalDefiniteness
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, definiteness)
    }
    unsafe fn setDefiniteness_(&self, definiteness: NSGrammaticalDefiniteness)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDefiniteness : definiteness)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMorphologyPronoun(pub id);
impl std::ops::Deref for NSMorphologyPronoun {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMorphologyPronoun {}
impl NSMorphologyPronoun {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMorphologyPronoun").unwrap(), alloc) })
    }
}
impl PNSCopying for NSMorphologyPronoun {}
impl PNSSecureCoding for NSMorphologyPronoun {}
impl INSObject for NSMorphologyPronoun {}
impl PNSObject for NSMorphologyPronoun {}
impl std::convert::TryFrom<NSObject> for NSMorphologyPronoun {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSMorphologyPronoun, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMorphologyPronoun").unwrap()) };
        if is_kind_of {
            Ok(NSMorphologyPronoun(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSMorphologyPronoun")
        }
    }
}
impl INSMorphologyPronoun for NSMorphologyPronoun {}
pub trait INSMorphologyPronoun: 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 initWithPronoun_morphology_dependentMorphology_(
        &self,
        pronoun: NSString,
        morphology: NSMorphology,
        dependentMorphology: NSMorphology,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithPronoun : pronoun, morphology : morphology, dependentMorphology : dependentMorphology)
    }
    unsafe fn pronoun(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pronoun)
    }
    unsafe fn morphology(&self) -> NSMorphology
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, morphology)
    }
    unsafe fn dependentMorphology(&self) -> NSMorphology
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dependentMorphology)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMorphologyPronoun").unwrap(), new)
    }
}
impl NSMorphology_NSCustomPronouns for NSMorphology {}
pub trait NSMorphology_NSCustomPronouns: Sized + std::ops::Deref {
    unsafe fn customPronounForLanguage_(&self, language: NSString) -> NSMorphologyCustomPronoun
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, customPronounForLanguage : language)
    }
    unsafe fn setCustomPronoun_forLanguage_error_(
        &self,
        features: NSMorphologyCustomPronoun,
        language: NSString,
        error: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCustomPronoun : features, forLanguage : language, error : error)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMorphologyCustomPronoun(pub id);
impl std::ops::Deref for NSMorphologyCustomPronoun {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMorphologyCustomPronoun {}
impl NSMorphologyCustomPronoun {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMorphologyCustomPronoun").unwrap(), alloc) })
    }
}
impl PNSCopying for NSMorphologyCustomPronoun {}
impl PNSSecureCoding for NSMorphologyCustomPronoun {}
impl INSObject for NSMorphologyCustomPronoun {}
impl PNSObject for NSMorphologyCustomPronoun {}
impl std::convert::TryFrom<NSObject> for NSMorphologyCustomPronoun {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSMorphologyCustomPronoun, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMorphologyCustomPronoun").unwrap()) };
        if is_kind_of {
            Ok(NSMorphologyCustomPronoun(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSMorphologyCustomPronoun")
        }
    }
}
impl INSMorphologyCustomPronoun for NSMorphologyCustomPronoun {}
pub trait INSMorphologyCustomPronoun: Sized + std::ops::Deref {
    unsafe fn subjectForm(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, subjectForm)
    }
    unsafe fn setSubjectForm_(&self, subjectForm: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSubjectForm : subjectForm)
    }
    unsafe fn objectForm(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, objectForm)
    }
    unsafe fn setObjectForm_(&self, objectForm: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setObjectForm : objectForm)
    }
    unsafe fn possessiveForm(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, possessiveForm)
    }
    unsafe fn setPossessiveForm_(&self, possessiveForm: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPossessiveForm : possessiveForm)
    }
    unsafe fn possessiveAdjectiveForm(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, possessiveAdjectiveForm)
    }
    unsafe fn setPossessiveAdjectiveForm_(&self, possessiveAdjectiveForm: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPossessiveAdjectiveForm : possessiveAdjectiveForm)
    }
    unsafe fn reflexiveForm(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reflexiveForm)
    }
    unsafe fn setReflexiveForm_(&self, reflexiveForm: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReflexiveForm : reflexiveForm)
    }
    unsafe fn isSupportedForLanguage_(language: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMorphologyCustomPronoun").unwrap(), isSupportedForLanguage : language)
    }
    unsafe fn requiredKeysForLanguage_(language: NSString) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMorphologyCustomPronoun").unwrap(), requiredKeysForLanguage : language)
    }
}
impl NSMorphology_NSMorphologyUserSettings for NSMorphology {}
pub trait NSMorphology_NSMorphologyUserSettings: Sized + std::ops::Deref {
    unsafe fn isUnspecified(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isUnspecified)
    }
    unsafe fn userMorphology() -> NSMorphology
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMorphology").unwrap(), userMorphology)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSTermOfAddress(pub id);
impl std::ops::Deref for NSTermOfAddress {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSTermOfAddress {}
impl NSTermOfAddress {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSTermOfAddress").unwrap(), alloc) })
    }
}
impl PNSCopying for NSTermOfAddress {}
impl PNSSecureCoding for NSTermOfAddress {}
impl INSObject for NSTermOfAddress {}
impl PNSObject for NSTermOfAddress {}
impl std::convert::TryFrom<NSObject> for NSTermOfAddress {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSTermOfAddress, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSTermOfAddress").unwrap()) };
        if is_kind_of {
            Ok(NSTermOfAddress(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSTermOfAddress")
        }
    }
}
impl INSTermOfAddress for NSTermOfAddress {}
pub trait INSTermOfAddress: 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 languageIdentifier(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, languageIdentifier)
    }
    unsafe fn pronouns(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pronouns)
    }
    unsafe fn neutral() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTermOfAddress").unwrap(), neutral)
    }
    unsafe fn feminine() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTermOfAddress").unwrap(), feminine)
    }
    unsafe fn masculine() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTermOfAddress").unwrap(), masculine)
    }
    unsafe fn currentUser() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTermOfAddress").unwrap(), currentUser)
    }
    unsafe fn localizedForLanguageIdentifier_withPronouns_(
        language: NSString,
        pronouns: NSArray,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTermOfAddress").unwrap(), localizedForLanguageIdentifier : language, withPronouns : pronouns)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTermOfAddress").unwrap(), new)
    }
}
pub type NSPostingStyle = NSUInteger;
pub type NSNotificationCoalescing = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSNotificationQueue(pub id);
impl std::ops::Deref for NSNotificationQueue {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSNotificationQueue {}
impl NSNotificationQueue {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSNotificationQueue").unwrap(), alloc) })
    }
}
impl INSObject for NSNotificationQueue {}
impl PNSObject for NSNotificationQueue {}
impl std::convert::TryFrom<NSObject> for NSNotificationQueue {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSNotificationQueue, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSNotificationQueue").unwrap()) };
        if is_kind_of {
            Ok(NSNotificationQueue(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSNotificationQueue")
        }
    }
}
impl INSNotificationQueue for NSNotificationQueue {}
pub trait INSNotificationQueue: Sized + std::ops::Deref {
    unsafe fn initWithNotificationCenter_(
        &self,
        notificationCenter: NSNotificationCenter,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithNotificationCenter : notificationCenter)
    }
    unsafe fn enqueueNotification_postingStyle_(
        &self,
        notification: NSNotification,
        postingStyle: NSPostingStyle,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enqueueNotification : notification, postingStyle : postingStyle)
    }
    unsafe fn enqueueNotification_postingStyle_coalesceMask_forModes_(
        &self,
        notification: NSNotification,
        postingStyle: NSPostingStyle,
        coalesceMask: NSNotificationCoalescing,
        modes: NSArray,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enqueueNotification : notification, postingStyle : postingStyle, coalesceMask : coalesceMask, forModes : modes)
    }
    unsafe fn dequeueNotificationsMatching_coalesceMask_(
        &self,
        notification: NSNotification,
        coalesceMask: NSUInteger,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dequeueNotificationsMatching : notification, coalesceMask : coalesceMask)
    }
    unsafe fn defaultQueue() -> NSNotificationQueue
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNotificationQueue").unwrap(), defaultQueue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSNull(pub id);
impl std::ops::Deref for NSNull {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSNull {}
impl NSNull {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSNull").unwrap(), alloc) })
    }
}
impl PNSCopying for NSNull {}
impl PNSSecureCoding for NSNull {}
impl INSObject for NSNull {}
impl PNSObject for NSNull {}
impl std::convert::TryFrom<NSObject> for NSNull {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSNull, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSNull").unwrap()) };
        if is_kind_of {
            Ok(NSNull(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSNull")
        }
    }
}
impl INSNull for NSNull {}
pub trait INSNull: Sized + std::ops::Deref {
    unsafe fn null() -> NSNull
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNull").unwrap(), null)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSLocalizedNumberFormatRule(pub id);
impl std::ops::Deref for NSLocalizedNumberFormatRule {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSLocalizedNumberFormatRule {}
impl NSLocalizedNumberFormatRule {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSLocalizedNumberFormatRule").unwrap(), alloc) })
    }
}
impl PNSCopying for NSLocalizedNumberFormatRule {}
impl PNSSecureCoding for NSLocalizedNumberFormatRule {}
impl INSObject for NSLocalizedNumberFormatRule {}
impl PNSObject for NSLocalizedNumberFormatRule {}
impl std::convert::TryFrom<NSObject> for NSLocalizedNumberFormatRule {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSLocalizedNumberFormatRule, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSLocalizedNumberFormatRule").unwrap()) };
        if is_kind_of {
            Ok(NSLocalizedNumberFormatRule(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSLocalizedNumberFormatRule")
        }
    }
}
impl INSLocalizedNumberFormatRule for NSLocalizedNumberFormatRule {}
pub trait INSLocalizedNumberFormatRule: Sized + std::ops::Deref {
    unsafe fn init(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn new() -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLocalizedNumberFormatRule").unwrap(), new)
    }
    unsafe fn automatic() -> NSLocalizedNumberFormatRule
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLocalizedNumberFormatRule").unwrap(), automatic)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSOperation(pub id);
impl std::ops::Deref for NSOperation {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSOperation {}
impl NSOperation {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSOperation").unwrap(), alloc) })
    }
}
impl INSObject for NSOperation {}
impl PNSObject for NSOperation {}
impl std::convert::TryFrom<NSObject> for NSOperation {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSOperation, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSOperation").unwrap()) };
        if is_kind_of {
            Ok(NSOperation(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSOperation")
        }
    }
}
impl INSOperation for NSOperation {}
pub trait INSOperation: Sized + std::ops::Deref {
    unsafe fn start(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, start)
    }
    unsafe fn main(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, main)
    }
    unsafe fn cancel(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cancel)
    }
    unsafe fn addDependency_(&self, op: NSOperation)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addDependency : op)
    }
    unsafe fn removeDependency_(&self, op: NSOperation)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeDependency : op)
    }
    unsafe fn waitUntilFinished(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, waitUntilFinished)
    }
    unsafe fn isCancelled(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isCancelled)
    }
    unsafe fn isExecuting(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isExecuting)
    }
    unsafe fn isFinished(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isFinished)
    }
    unsafe fn isConcurrent(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isConcurrent)
    }
    unsafe fn isAsynchronous(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isAsynchronous)
    }
    unsafe fn isReady(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isReady)
    }
    unsafe fn dependencies(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dependencies)
    }
    unsafe fn queuePriority(&self) -> NSOperationQueuePriority
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, queuePriority)
    }
    unsafe fn setQueuePriority_(&self, queuePriority: NSOperationQueuePriority)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setQueuePriority : queuePriority)
    }
    unsafe fn completionBlock(&self) -> *mut ::std::os::raw::c_void
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, completionBlock)
    }
    unsafe fn setCompletionBlock_(&self, completionBlock: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCompletionBlock : completionBlock)
    }
    unsafe fn threadPriority(&self) -> f64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, threadPriority)
    }
    unsafe fn setThreadPriority_(&self, threadPriority: f64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setThreadPriority : threadPriority)
    }
    unsafe fn qualityOfService(&self) -> NSQualityOfService
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, qualityOfService)
    }
    unsafe fn setQualityOfService_(&self, qualityOfService: NSQualityOfService)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setQualityOfService : qualityOfService)
    }
    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)
    }
}
pub type NSOperationQueuePriority = NSInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSBlockOperation(pub id);
impl std::ops::Deref for NSBlockOperation {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSBlockOperation {}
impl NSBlockOperation {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSBlockOperation").unwrap(), alloc) })
    }
}
impl INSOperation for NSBlockOperation {}
impl From<NSBlockOperation> for NSOperation {
    fn from(child: NSBlockOperation) -> NSOperation {
        NSOperation(child.0)
    }
}
impl std::convert::TryFrom<NSOperation> for NSBlockOperation {
    type Error = &'static str;
    fn try_from(parent: NSOperation) -> Result<NSBlockOperation, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSBlockOperation").unwrap()) };
        if is_kind_of {
            Ok(NSBlockOperation(parent.0))
        } else {
            Err("This NSOperation cannot be downcasted to NSBlockOperation")
        }
    }
}
impl INSObject for NSBlockOperation {}
impl PNSObject for NSBlockOperation {}
impl INSBlockOperation for NSBlockOperation {}
pub trait INSBlockOperation: Sized + std::ops::Deref {
    unsafe fn addExecutionBlock_(&self, block: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addExecutionBlock : block)
    }
    unsafe fn executionBlocks(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, executionBlocks)
    }
    unsafe fn blockOperationWithBlock_(block: *mut ::std::os::raw::c_void) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSBlockOperation").unwrap(), blockOperationWithBlock : block)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSInvocationOperation(pub id);
impl std::ops::Deref for NSInvocationOperation {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSInvocationOperation {}
impl NSInvocationOperation {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSInvocationOperation").unwrap(), alloc) })
    }
}
impl INSOperation for NSInvocationOperation {}
impl std::convert::TryFrom<NSOperation> for NSInvocationOperation {
    type Error = &'static str;
    fn try_from(parent: NSOperation) -> Result<NSInvocationOperation, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSInvocationOperation").unwrap()) };
        if is_kind_of {
            Ok(NSInvocationOperation(parent.0))
        } else {
            Err("This NSOperation cannot be downcasted to NSInvocationOperation")
        }
    }
}
impl INSObject for NSInvocationOperation {}
impl PNSObject for NSInvocationOperation {}
impl INSInvocationOperation for NSInvocationOperation {}
pub trait INSInvocationOperation: Sized + std::ops::Deref {
    unsafe fn initWithTarget_selector_object_(
        &self,
        target: id,
        sel: objc2::runtime::Sel,
        arg: id,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithTarget : target, selector : sel, object : arg)
    }
    unsafe fn initWithInvocation_(&self, inv: NSInvocation) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithInvocation : inv)
    }
    unsafe fn invocation(&self) -> NSInvocation
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invocation)
    }
    unsafe fn result(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, result)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSOperationQueue(pub id);
impl std::ops::Deref for NSOperationQueue {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSOperationQueue {}
impl NSOperationQueue {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSOperationQueue").unwrap(), alloc) })
    }
}
impl PNSProgressReporting for NSOperationQueue {}
impl INSObject for NSOperationQueue {}
impl PNSObject for NSOperationQueue {}
impl std::convert::TryFrom<NSObject> for NSOperationQueue {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSOperationQueue, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSOperationQueue").unwrap()) };
        if is_kind_of {
            Ok(NSOperationQueue(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSOperationQueue")
        }
    }
}
impl INSOperationQueue for NSOperationQueue {}
pub trait INSOperationQueue: Sized + std::ops::Deref {
    unsafe fn addOperation_(&self, op: NSOperation)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addOperation : op)
    }
    unsafe fn addOperations_waitUntilFinished_(&self, ops: NSArray, wait: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addOperations : ops, waitUntilFinished : wait)
    }
    unsafe fn addOperationWithBlock_(&self, block: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addOperationWithBlock : block)
    }
    unsafe fn addBarrierBlock_(&self, barrier: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addBarrierBlock : barrier)
    }
    unsafe fn cancelAllOperations(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cancelAllOperations)
    }
    unsafe fn waitUntilAllOperationsAreFinished(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, waitUntilAllOperationsAreFinished)
    }
    unsafe fn progress(&self) -> NSProgress
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, progress)
    }
    unsafe fn maxConcurrentOperationCount(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maxConcurrentOperationCount)
    }
    unsafe fn setMaxConcurrentOperationCount_(&self, maxConcurrentOperationCount: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaxConcurrentOperationCount : maxConcurrentOperationCount)
    }
    unsafe fn isSuspended(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isSuspended)
    }
    unsafe fn setSuspended_(&self, suspended: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSuspended : suspended)
    }
    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 qualityOfService(&self) -> NSQualityOfService
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, qualityOfService)
    }
    unsafe fn setQualityOfService_(&self, qualityOfService: NSQualityOfService)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setQualityOfService : qualityOfService)
    }
    unsafe fn underlyingQueue(&self) -> dispatch_queue_t
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, underlyingQueue)
    }
    unsafe fn setUnderlyingQueue_(&self, underlyingQueue: NSObject)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUnderlyingQueue : underlyingQueue)
    }
    unsafe fn currentQueue() -> NSOperationQueue
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSOperationQueue").unwrap(), currentQueue)
    }
    unsafe fn mainQueue() -> NSOperationQueue
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSOperationQueue").unwrap(), mainQueue)
    }
}
impl NSOperationQueue_NSDeprecated for NSOperationQueue {}
pub trait NSOperationQueue_NSDeprecated: Sized + std::ops::Deref {
    unsafe fn operations(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operations)
    }
    unsafe fn operationCount(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationCount)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSOrthography(pub id);
impl std::ops::Deref for NSOrthography {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSOrthography {}
impl NSOrthography {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSOrthography").unwrap(), alloc) })
    }
}
impl PNSCopying for NSOrthography {}
impl PNSSecureCoding for NSOrthography {}
impl INSObject for NSOrthography {}
impl PNSObject for NSOrthography {}
impl std::convert::TryFrom<NSObject> for NSOrthography {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSOrthography, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSOrthography").unwrap()) };
        if is_kind_of {
            Ok(NSOrthography(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSOrthography")
        }
    }
}
impl INSOrthography for NSOrthography {}
pub trait INSOrthography: Sized + std::ops::Deref {
    unsafe fn initWithDominantScript_languageMap_(
        &self,
        script: NSString,
        map: NSDictionary,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDominantScript : script, languageMap : map)
    }
    unsafe fn initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
    unsafe fn dominantScript(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dominantScript)
    }
    unsafe fn languageMap(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, languageMap)
    }
}
impl NSOrthography_NSOrthographyExtended for NSOrthography {}
pub trait NSOrthography_NSOrthographyExtended: Sized + std::ops::Deref {
    unsafe fn languagesForScript_(&self, script: NSString) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, languagesForScript : script)
    }
    unsafe fn dominantLanguageForScript_(&self, script: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dominantLanguageForScript : script)
    }
    unsafe fn dominantLanguage(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dominantLanguage)
    }
    unsafe fn allScripts(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allScripts)
    }
    unsafe fn allLanguages(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allLanguages)
    }
    unsafe fn defaultOrthographyForLanguage_(language: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSOrthography").unwrap(), defaultOrthographyForLanguage : language)
    }
}
impl NSOrthography_NSOrthographyCreation for NSOrthography {}
pub trait NSOrthography_NSOrthographyCreation: Sized + std::ops::Deref {
    unsafe fn orthographyWithDominantScript_languageMap_(
        script: NSString,
        map: NSDictionary,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSOrthography").unwrap(), orthographyWithDominantScript : script, languageMap : map)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSPointerArray(pub id);
impl std::ops::Deref for NSPointerArray {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSPointerArray {}
impl NSPointerArray {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSPointerArray").unwrap(), alloc) })
    }
}
impl PNSFastEnumeration for NSPointerArray {}
impl PNSCopying for NSPointerArray {}
impl PNSSecureCoding for NSPointerArray {}
impl INSObject for NSPointerArray {}
impl PNSObject for NSPointerArray {}
impl std::convert::TryFrom<NSObject> for NSPointerArray {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSPointerArray, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSPointerArray").unwrap()) };
        if is_kind_of {
            Ok(NSPointerArray(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSPointerArray")
        }
    }
}
impl INSPointerArray for NSPointerArray {}
pub trait INSPointerArray: Sized + std::ops::Deref {
    unsafe fn initWithOptions_(&self, options: NSPointerFunctionsOptions) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithOptions : options)
    }
    unsafe fn initWithPointerFunctions_(&self, functions: NSPointerFunctions) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithPointerFunctions : functions)
    }
    unsafe fn pointerAtIndex_(&self, index: NSUInteger) -> *mut ::std::os::raw::c_void
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, pointerAtIndex : index)
    }
    unsafe fn addPointer_(&self, pointer: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addPointer : pointer)
    }
    unsafe fn removePointerAtIndex_(&self, index: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removePointerAtIndex : index)
    }
    unsafe fn insertPointer_atIndex_(&self, item: *mut ::std::os::raw::c_void, index: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, insertPointer : item, atIndex : index)
    }
    unsafe fn replacePointerAtIndex_withPointer_(
        &self,
        index: NSUInteger,
        item: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replacePointerAtIndex : index, withPointer : item)
    }
    unsafe fn compact(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, compact)
    }
    unsafe fn pointerFunctions(&self) -> NSPointerFunctions
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pointerFunctions)
    }
    unsafe fn count(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, count)
    }
    unsafe fn setCount_(&self, count: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCount : count)
    }
    unsafe fn pointerArrayWithOptions_(options: NSPointerFunctionsOptions) -> NSPointerArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPointerArray").unwrap(), pointerArrayWithOptions : options)
    }
    unsafe fn pointerArrayWithPointerFunctions_(functions: NSPointerFunctions) -> NSPointerArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPointerArray").unwrap(), pointerArrayWithPointerFunctions : functions)
    }
}
impl NSPointerArray_NSPointerArrayConveniences for NSPointerArray {}
pub trait NSPointerArray_NSPointerArrayConveniences: Sized + std::ops::Deref {
    unsafe fn allObjects(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allObjects)
    }
    unsafe fn pointerArrayWithStrongObjects() -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPointerArray").unwrap(), pointerArrayWithStrongObjects)
    }
    unsafe fn pointerArrayWithWeakObjects() -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPointerArray").unwrap(), pointerArrayWithWeakObjects)
    }
    unsafe fn strongObjectsPointerArray() -> NSPointerArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPointerArray").unwrap(), strongObjectsPointerArray)
    }
    unsafe fn weakObjectsPointerArray() -> NSPointerArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPointerArray").unwrap(), weakObjectsPointerArray)
    }
}
pub type NSSocketNativeHandle = ::std::os::raw::c_int;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSPort(pub id);
impl std::ops::Deref for NSPort {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSPort {}
impl NSPort {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSPort").unwrap(), alloc) })
    }
}
impl PNSCopying for NSPort {}
impl PNSCoding for NSPort {}
impl INSObject for NSPort {}
impl PNSObject for NSPort {}
impl std::convert::TryFrom<NSObject> for NSPort {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSPort, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSPort").unwrap()) };
        if is_kind_of {
            Ok(NSPort(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSPort")
        }
    }
}
impl INSPort for NSPort {}
pub trait INSPort: Sized + std::ops::Deref {
    unsafe fn invalidate(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invalidate)
    }
    unsafe fn setDelegate_(&self, anObject: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelegate : anObject)
    }
    unsafe fn delegate(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delegate)
    }
    unsafe fn scheduleInRunLoop_forMode_(&self, runLoop: NSRunLoop, mode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scheduleInRunLoop : runLoop, forMode : mode)
    }
    unsafe fn removeFromRunLoop_forMode_(&self, runLoop: NSRunLoop, mode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeFromRunLoop : runLoop, forMode : mode)
    }
    unsafe fn sendBeforeDate_components_from_reserved_(
        &self,
        limitDate: NSDate,
        components: NSMutableArray,
        receivePort: NSPort,
        headerSpaceReserved: NSUInteger,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sendBeforeDate : limitDate, components : components, from : receivePort, reserved : headerSpaceReserved)
    }
    unsafe fn sendBeforeDate_msgid_components_from_reserved_(
        &self,
        limitDate: NSDate,
        msgID: NSUInteger,
        components: NSMutableArray,
        receivePort: NSPort,
        headerSpaceReserved: NSUInteger,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sendBeforeDate : limitDate, msgid : msgID, components : components, from : receivePort, reserved : headerSpaceReserved)
    }
    unsafe fn addConnection_toRunLoop_forMode_(
        &self,
        conn: NSConnection,
        runLoop: NSRunLoop,
        mode: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addConnection : conn, toRunLoop : runLoop, forMode : mode)
    }
    unsafe fn removeConnection_fromRunLoop_forMode_(
        &self,
        conn: NSConnection,
        runLoop: NSRunLoop,
        mode: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeConnection : conn, fromRunLoop : runLoop, forMode : mode)
    }
    unsafe fn isValid(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isValid)
    }
    unsafe fn reservedSpaceLength(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reservedSpaceLength)
    }
    unsafe fn port() -> NSPort
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPort").unwrap(), port)
    }
}
pub trait PNSPortDelegate: Sized + std::ops::Deref {
    unsafe fn handlePortMessage_(&self, message: NSPortMessage)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, handlePortMessage : message)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMachPort(pub id);
impl std::ops::Deref for NSMachPort {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMachPort {}
impl NSMachPort {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMachPort").unwrap(), alloc) })
    }
}
impl INSPort for NSMachPort {}
impl PNSCopying for NSMachPort {}
impl PNSCoding for NSMachPort {}
impl From<NSMachPort> for NSPort {
    fn from(child: NSMachPort) -> NSPort {
        NSPort(child.0)
    }
}
impl std::convert::TryFrom<NSPort> for NSMachPort {
    type Error = &'static str;
    fn try_from(parent: NSPort) -> Result<NSMachPort, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMachPort").unwrap()) };
        if is_kind_of {
            Ok(NSMachPort(parent.0))
        } else {
            Err("This NSPort cannot be downcasted to NSMachPort")
        }
    }
}
impl INSObject for NSMachPort {}
impl PNSObject for NSMachPort {}
impl INSMachPort for NSMachPort {}
pub trait INSMachPort: Sized + std::ops::Deref {
    unsafe fn initWithMachPort_(&self, machPort: u32) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithMachPort : machPort)
    }
    unsafe fn setDelegate_(&self, anObject: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelegate : anObject)
    }
    unsafe fn delegate(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delegate)
    }
    unsafe fn initWithMachPort_options_(&self, machPort: u32, f: NSMachPortOptions) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithMachPort : machPort, options : f)
    }
    unsafe fn scheduleInRunLoop_forMode_(&self, runLoop: NSRunLoop, mode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scheduleInRunLoop : runLoop, forMode : mode)
    }
    unsafe fn removeFromRunLoop_forMode_(&self, runLoop: NSRunLoop, mode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeFromRunLoop : runLoop, forMode : mode)
    }
    unsafe fn machPort(&self) -> u32
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, machPort)
    }
    unsafe fn portWithMachPort_(machPort: u32) -> NSPort
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMachPort").unwrap(), portWithMachPort : machPort)
    }
    unsafe fn portWithMachPort_options_(machPort: u32, f: NSMachPortOptions) -> NSPort
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMachPort").unwrap(), portWithMachPort : machPort, options : f)
    }
}
pub type NSMachPortOptions = NSUInteger;
pub trait PNSMachPortDelegate: Sized + std::ops::Deref {
    unsafe fn handleMachMessage_(&self, msg: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, handleMachMessage : msg)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMessagePort(pub id);
impl std::ops::Deref for NSMessagePort {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMessagePort {}
impl NSMessagePort {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMessagePort").unwrap(), alloc) })
    }
}
impl INSPort for NSMessagePort {}
impl PNSCopying for NSMessagePort {}
impl PNSCoding for NSMessagePort {}
impl std::convert::TryFrom<NSPort> for NSMessagePort {
    type Error = &'static str;
    fn try_from(parent: NSPort) -> Result<NSMessagePort, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMessagePort").unwrap()) };
        if is_kind_of {
            Ok(NSMessagePort(parent.0))
        } else {
            Err("This NSPort cannot be downcasted to NSMessagePort")
        }
    }
}
impl INSObject for NSMessagePort {}
impl PNSObject for NSMessagePort {}
impl INSMessagePort for NSMessagePort {}
pub trait INSMessagePort: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSSocketPort(pub id);
impl std::ops::Deref for NSSocketPort {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSSocketPort {}
impl NSSocketPort {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSSocketPort").unwrap(), alloc) })
    }
}
impl INSPort for NSSocketPort {}
impl PNSCopying for NSSocketPort {}
impl PNSCoding for NSSocketPort {}
impl std::convert::TryFrom<NSPort> for NSSocketPort {
    type Error = &'static str;
    fn try_from(parent: NSPort) -> Result<NSSocketPort, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSSocketPort").unwrap()) };
        if is_kind_of {
            Ok(NSSocketPort(parent.0))
        } else {
            Err("This NSPort cannot be downcasted to NSSocketPort")
        }
    }
}
impl INSObject for NSSocketPort {}
impl PNSObject for NSSocketPort {}
impl INSSocketPort for NSSocketPort {}
pub trait INSSocketPort: 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 initWithTCPPort_(&self, port: ::std::os::raw::c_ushort) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithTCPPort : port)
    }
    unsafe fn initWithProtocolFamily_socketType_protocol_address_(
        &self,
        family: ::std::os::raw::c_int,
        type_: ::std::os::raw::c_int,
        protocol: ::std::os::raw::c_int,
        address: NSData,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithProtocolFamily : family, socketType : type_, protocol : protocol, address : address)
    }
    unsafe fn initWithProtocolFamily_socketType_protocol_socket_(
        &self,
        family: ::std::os::raw::c_int,
        type_: ::std::os::raw::c_int,
        protocol: ::std::os::raw::c_int,
        sock: NSSocketNativeHandle,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithProtocolFamily : family, socketType : type_, protocol : protocol, socket : sock)
    }
    unsafe fn initRemoteWithTCPPort_host_(
        &self,
        port: ::std::os::raw::c_ushort,
        hostName: NSString,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initRemoteWithTCPPort : port, host : hostName)
    }
    unsafe fn initRemoteWithProtocolFamily_socketType_protocol_address_(
        &self,
        family: ::std::os::raw::c_int,
        type_: ::std::os::raw::c_int,
        protocol: ::std::os::raw::c_int,
        address: NSData,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initRemoteWithProtocolFamily : family, socketType : type_, protocol : protocol, address : address)
    }
    unsafe fn protocolFamily(&self) -> ::std::os::raw::c_int
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, protocolFamily)
    }
    unsafe fn socketType(&self) -> ::std::os::raw::c_int
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, socketType)
    }
    unsafe fn protocol(&self) -> ::std::os::raw::c_int
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, protocol)
    }
    unsafe fn address(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, address)
    }
    unsafe fn socket(&self) -> NSSocketNativeHandle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, socket)
    }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct NSOperatingSystemVersion {
    pub majorVersion: NSInteger,
    pub minorVersion: NSInteger,
    pub patchVersion: NSInteger,
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSProcessInfo(pub id);
impl std::ops::Deref for NSProcessInfo {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSProcessInfo {}
impl NSProcessInfo {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSProcessInfo").unwrap(), alloc) })
    }
}
impl INSObject for NSProcessInfo {}
impl PNSObject for NSProcessInfo {}
impl std::convert::TryFrom<NSObject> for NSProcessInfo {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSProcessInfo, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSProcessInfo").unwrap()) };
        if is_kind_of {
            Ok(NSProcessInfo(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSProcessInfo")
        }
    }
}
impl INSProcessInfo for NSProcessInfo {}
pub trait INSProcessInfo: Sized + std::ops::Deref {
    unsafe fn operatingSystem(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operatingSystem)
    }
    unsafe fn operatingSystemName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operatingSystemName)
    }
    unsafe fn isOperatingSystemAtLeastVersion_(&self, version: NSOperatingSystemVersion) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isOperatingSystemAtLeastVersion : version)
    }
    unsafe fn disableSuddenTermination(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, disableSuddenTermination)
    }
    unsafe fn enableSuddenTermination(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, enableSuddenTermination)
    }
    unsafe fn disableAutomaticTermination_(&self, reason: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, disableAutomaticTermination : reason)
    }
    unsafe fn enableAutomaticTermination_(&self, reason: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enableAutomaticTermination : reason)
    }
    unsafe fn environment(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, environment)
    }
    unsafe fn arguments(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arguments)
    }
    unsafe fn hostName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hostName)
    }
    unsafe fn processName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, processName)
    }
    unsafe fn setProcessName_(&self, processName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProcessName : processName)
    }
    unsafe fn processIdentifier(&self) -> ::std::os::raw::c_int
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, processIdentifier)
    }
    unsafe fn globallyUniqueString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, globallyUniqueString)
    }
    unsafe fn operatingSystemVersionString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operatingSystemVersionString)
    }
    unsafe fn operatingSystemVersion(&self) -> NSOperatingSystemVersion
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operatingSystemVersion)
    }
    unsafe fn processorCount(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, processorCount)
    }
    unsafe fn activeProcessorCount(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, activeProcessorCount)
    }
    unsafe fn physicalMemory(&self) -> ::std::os::raw::c_ulonglong
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, physicalMemory)
    }
    unsafe fn systemUptime(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, systemUptime)
    }
    unsafe fn automaticTerminationSupportEnabled(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, automaticTerminationSupportEnabled)
    }
    unsafe fn setAutomaticTerminationSupportEnabled_(
        &self,
        automaticTerminationSupportEnabled: BOOL,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAutomaticTerminationSupportEnabled : automaticTerminationSupportEnabled)
    }
    unsafe fn processInfo() -> NSProcessInfo
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSProcessInfo").unwrap(), processInfo)
    }
}
pub type NSActivityOptions = u64;
impl NSProcessInfo_NSProcessInfoActivity for NSProcessInfo {}
pub trait NSProcessInfo_NSProcessInfoActivity: Sized + std::ops::Deref {
    unsafe fn beginActivityWithOptions_reason_(
        &self,
        options: NSActivityOptions,
        reason: NSString,
    ) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, beginActivityWithOptions : options, reason : reason)
    }
    unsafe fn endActivity_(&self, activity: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, endActivity : activity)
    }
    unsafe fn performActivityWithOptions_reason_usingBlock_(
        &self,
        options: NSActivityOptions,
        reason: NSString,
        block: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, performActivityWithOptions : options, reason : reason, usingBlock : block)
    }
    unsafe fn performExpiringActivityWithReason_usingBlock_(
        &self,
        reason: NSString,
        block: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, performExpiringActivityWithReason : reason, usingBlock : block)
    }
}
impl NSProcessInfo_NSUserInformation for NSProcessInfo {}
pub trait NSProcessInfo_NSUserInformation: Sized + std::ops::Deref {
    unsafe fn userName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userName)
    }
    unsafe fn fullUserName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fullUserName)
    }
}
pub type NSProcessInfoThermalState = NSInteger;
impl NSProcessInfo_NSProcessInfoThermalState for NSProcessInfo {}
pub trait NSProcessInfo_NSProcessInfoThermalState: Sized + std::ops::Deref {
    unsafe fn thermalState(&self) -> NSProcessInfoThermalState
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, thermalState)
    }
}
impl NSProcessInfo_NSProcessInfoPowerState for NSProcessInfo {}
pub trait NSProcessInfo_NSProcessInfoPowerState: Sized + std::ops::Deref {
    unsafe fn isLowPowerModeEnabled(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isLowPowerModeEnabled)
    }
}
impl NSProcessInfo_NSProcessInfoPlatform for NSProcessInfo {}
pub trait NSProcessInfo_NSProcessInfoPlatform: Sized + std::ops::Deref {
    unsafe fn isMacCatalystApp(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isMacCatalystApp)
    }
    unsafe fn isiOSAppOnMac(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isiOSAppOnMac)
    }
    unsafe fn isiOSAppOnVision(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isiOSAppOnVision)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSProxy(pub id);
impl std::ops::Deref for NSProxy {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSProxy {}
impl NSProxy {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSProxy").unwrap(), alloc) })
    }
}
impl PNSObject for NSProxy {}
impl INSProxy for NSProxy {}
pub trait INSProxy: Sized + std::ops::Deref {
    unsafe fn forwardInvocation_(&self, invocation: NSInvocation)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, forwardInvocation : invocation)
    }
    unsafe fn methodSignatureForSelector_(&self, sel: objc2::runtime::Sel) -> NSMethodSignature
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, methodSignatureForSelector : sel)
    }
    unsafe fn dealloc(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dealloc)
    }
    unsafe fn finalize(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, finalize)
    }
    unsafe fn allowsWeakReference(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowsWeakReference)
    }
    unsafe fn retainWeakReference(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, retainWeakReference)
    }
    unsafe fn description(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, description)
    }
    unsafe fn debugDescription(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, debugDescription)
    }
    unsafe fn alloc() -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSProxy").unwrap(), alloc)
    }
    unsafe fn allocWithZone_(zone: *mut NSZone) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSProxy").unwrap(), allocWithZone : zone)
    }
    unsafe fn class() -> Class
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSProxy").unwrap(), class)
    }
    unsafe fn respondsToSelector_(aSelector: objc2::runtime::Sel) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSProxy").unwrap(), respondsToSelector : aSelector)
    }
}
pub type NSTextCheckingType = u64;
pub type NSTextCheckingTypes = u64;
pub type NSTextCheckingKey = NSString;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSTextCheckingResult(pub id);
impl std::ops::Deref for NSTextCheckingResult {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSTextCheckingResult {}
impl NSTextCheckingResult {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSTextCheckingResult").unwrap(), alloc) })
    }
}
impl PNSCopying for NSTextCheckingResult {}
impl PNSSecureCoding for NSTextCheckingResult {}
impl INSObject for NSTextCheckingResult {}
impl PNSObject for NSTextCheckingResult {}
impl std::convert::TryFrom<NSObject> for NSTextCheckingResult {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSTextCheckingResult, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSTextCheckingResult").unwrap()) };
        if is_kind_of {
            Ok(NSTextCheckingResult(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSTextCheckingResult")
        }
    }
}
impl INSTextCheckingResult for NSTextCheckingResult {}
pub trait INSTextCheckingResult: Sized + std::ops::Deref {
    unsafe fn resultType(&self) -> NSTextCheckingType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, resultType)
    }
    unsafe fn range(&self) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, range)
    }
}
impl NSTextCheckingResult_NSTextCheckingResultOptional for NSTextCheckingResult {}
pub trait NSTextCheckingResult_NSTextCheckingResultOptional: Sized + std::ops::Deref {
    unsafe fn rangeAtIndex_(&self, idx: NSUInteger) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rangeAtIndex : idx)
    }
    unsafe fn rangeWithName_(&self, name: NSString) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rangeWithName : name)
    }
    unsafe fn resultByAdjustingRangesWithOffset_(&self, offset: NSInteger) -> NSTextCheckingResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resultByAdjustingRangesWithOffset : offset)
    }
    unsafe fn orthography(&self) -> NSOrthography
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, orthography)
    }
    unsafe fn grammarDetails(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, grammarDetails)
    }
    unsafe fn date(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, date)
    }
    unsafe fn timeZone(&self) -> NSTimeZone
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeZone)
    }
    unsafe fn duration(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, duration)
    }
    unsafe fn components(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, components)
    }
    unsafe fn URL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, URL)
    }
    unsafe fn replacementString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, replacementString)
    }
    unsafe fn alternativeStrings(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, alternativeStrings)
    }
    unsafe fn regularExpression(&self) -> NSRegularExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, regularExpression)
    }
    unsafe fn phoneNumber(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, phoneNumber)
    }
    unsafe fn numberOfRanges(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, numberOfRanges)
    }
    unsafe fn addressComponents(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, addressComponents)
    }
}
impl NSTextCheckingResult_NSTextCheckingResultCreation for NSTextCheckingResult {}
pub trait NSTextCheckingResult_NSTextCheckingResultCreation: Sized + std::ops::Deref {
    unsafe fn orthographyCheckingResultWithRange_orthography_(
        range: NSRange,
        orthography: NSOrthography,
    ) -> NSTextCheckingResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTextCheckingResult").unwrap(), orthographyCheckingResultWithRange : range, orthography : orthography)
    }
    unsafe fn spellCheckingResultWithRange_(range: NSRange) -> NSTextCheckingResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTextCheckingResult").unwrap(), spellCheckingResultWithRange : range)
    }
    unsafe fn grammarCheckingResultWithRange_details_(
        range: NSRange,
        details: NSArray,
    ) -> NSTextCheckingResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTextCheckingResult").unwrap(), grammarCheckingResultWithRange : range, details : details)
    }
    unsafe fn dateCheckingResultWithRange_date_(
        range: NSRange,
        date: NSDate,
    ) -> NSTextCheckingResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTextCheckingResult").unwrap(), dateCheckingResultWithRange : range, date : date)
    }
    unsafe fn dateCheckingResultWithRange_date_timeZone_duration_(
        range: NSRange,
        date: NSDate,
        timeZone: NSTimeZone,
        duration: NSTimeInterval,
    ) -> NSTextCheckingResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTextCheckingResult").unwrap(), dateCheckingResultWithRange : range, date : date, timeZone : timeZone, duration : duration)
    }
    unsafe fn addressCheckingResultWithRange_components_(
        range: NSRange,
        components: NSDictionary,
    ) -> NSTextCheckingResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTextCheckingResult").unwrap(), addressCheckingResultWithRange : range, components : components)
    }
    unsafe fn linkCheckingResultWithRange_URL_(range: NSRange, url: NSURL) -> NSTextCheckingResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTextCheckingResult").unwrap(), linkCheckingResultWithRange : range, URL : url)
    }
    unsafe fn quoteCheckingResultWithRange_replacementString_(
        range: NSRange,
        replacementString: NSString,
    ) -> NSTextCheckingResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTextCheckingResult").unwrap(), quoteCheckingResultWithRange : range, replacementString : replacementString)
    }
    unsafe fn dashCheckingResultWithRange_replacementString_(
        range: NSRange,
        replacementString: NSString,
    ) -> NSTextCheckingResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTextCheckingResult").unwrap(), dashCheckingResultWithRange : range, replacementString : replacementString)
    }
    unsafe fn replacementCheckingResultWithRange_replacementString_(
        range: NSRange,
        replacementString: NSString,
    ) -> NSTextCheckingResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTextCheckingResult").unwrap(), replacementCheckingResultWithRange : range, replacementString : replacementString)
    }
    unsafe fn correctionCheckingResultWithRange_replacementString_(
        range: NSRange,
        replacementString: NSString,
    ) -> NSTextCheckingResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTextCheckingResult").unwrap(), correctionCheckingResultWithRange : range, replacementString : replacementString)
    }
    unsafe fn correctionCheckingResultWithRange_replacementString_alternativeStrings_(
        range: NSRange,
        replacementString: NSString,
        alternativeStrings: NSArray,
    ) -> NSTextCheckingResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTextCheckingResult").unwrap(), correctionCheckingResultWithRange : range, replacementString : replacementString, alternativeStrings : alternativeStrings)
    }
    unsafe fn regularExpressionCheckingResultWithRanges_count_regularExpression_(
        ranges: NSRangePointer,
        count: NSUInteger,
        regularExpression: NSRegularExpression,
    ) -> NSTextCheckingResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTextCheckingResult").unwrap(), regularExpressionCheckingResultWithRanges : ranges, count : count, regularExpression : regularExpression)
    }
    unsafe fn phoneNumberCheckingResultWithRange_phoneNumber_(
        range: NSRange,
        phoneNumber: NSString,
    ) -> NSTextCheckingResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTextCheckingResult").unwrap(), phoneNumberCheckingResultWithRange : range, phoneNumber : phoneNumber)
    }
    unsafe fn transitInformationCheckingResultWithRange_components_(
        range: NSRange,
        components: NSDictionary,
    ) -> NSTextCheckingResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTextCheckingResult").unwrap(), transitInformationCheckingResultWithRange : range, components : components)
    }
}
pub type NSRegularExpressionOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSRegularExpression(pub id);
impl std::ops::Deref for NSRegularExpression {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSRegularExpression {}
impl NSRegularExpression {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSRegularExpression").unwrap(), alloc) })
    }
}
impl PNSCopying for NSRegularExpression {}
impl PNSSecureCoding for NSRegularExpression {}
impl INSObject for NSRegularExpression {}
impl PNSObject for NSRegularExpression {}
impl std::convert::TryFrom<NSObject> for NSRegularExpression {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSRegularExpression, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSRegularExpression").unwrap()) };
        if is_kind_of {
            Ok(NSRegularExpression(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSRegularExpression")
        }
    }
}
impl INSRegularExpression for NSRegularExpression {}
pub trait INSRegularExpression: Sized + std::ops::Deref {
    unsafe fn initWithPattern_options_error_(
        &self,
        pattern: NSString,
        options: NSRegularExpressionOptions,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithPattern : pattern, options : options, error : error)
    }
    unsafe fn pattern(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, pattern)
    }
    unsafe fn options(&self) -> NSRegularExpressionOptions
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, options)
    }
    unsafe fn numberOfCaptureGroups(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, numberOfCaptureGroups)
    }
    unsafe fn regularExpressionWithPattern_options_error_(
        pattern: NSString,
        options: NSRegularExpressionOptions,
        error: *mut NSError,
    ) -> NSRegularExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSRegularExpression").unwrap(), regularExpressionWithPattern : pattern, options : options, error : error)
    }
    unsafe fn escapedPatternForString_(string: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSRegularExpression").unwrap(), escapedPatternForString : string)
    }
}
pub type NSMatchingOptions = NSUInteger;
pub type NSMatchingFlags = NSUInteger;
impl NSRegularExpression_NSMatching for NSRegularExpression {}
pub trait NSRegularExpression_NSMatching: Sized + std::ops::Deref {
    unsafe fn enumerateMatchesInString_options_range_usingBlock_(
        &self,
        string: NSString,
        options: NSMatchingOptions,
        range: NSRange,
        block: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateMatchesInString : string, options : options, range : range, usingBlock : block)
    }
    unsafe fn matchesInString_options_range_(
        &self,
        string: NSString,
        options: NSMatchingOptions,
        range: NSRange,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, matchesInString : string, options : options, range : range)
    }
    unsafe fn numberOfMatchesInString_options_range_(
        &self,
        string: NSString,
        options: NSMatchingOptions,
        range: NSRange,
    ) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, numberOfMatchesInString : string, options : options, range : range)
    }
    unsafe fn firstMatchInString_options_range_(
        &self,
        string: NSString,
        options: NSMatchingOptions,
        range: NSRange,
    ) -> NSTextCheckingResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, firstMatchInString : string, options : options, range : range)
    }
    unsafe fn rangeOfFirstMatchInString_options_range_(
        &self,
        string: NSString,
        options: NSMatchingOptions,
        range: NSRange,
    ) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rangeOfFirstMatchInString : string, options : options, range : range)
    }
}
impl NSRegularExpression_NSReplacement for NSRegularExpression {}
pub trait NSRegularExpression_NSReplacement: Sized + std::ops::Deref {
    unsafe fn stringByReplacingMatchesInString_options_range_withTemplate_(
        &self,
        string: NSString,
        options: NSMatchingOptions,
        range: NSRange,
        templ: NSString,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringByReplacingMatchesInString : string, options : options, range : range, withTemplate : templ)
    }
    unsafe fn replaceMatchesInString_options_range_withTemplate_(
        &self,
        string: NSMutableString,
        options: NSMatchingOptions,
        range: NSRange,
        templ: NSString,
    ) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replaceMatchesInString : string, options : options, range : range, withTemplate : templ)
    }
    unsafe fn replacementStringForResult_inString_offset_template_(
        &self,
        result: NSTextCheckingResult,
        string: NSString,
        offset: NSInteger,
        templ: NSString,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replacementStringForResult : result, inString : string, offset : offset, template : templ)
    }
    unsafe fn escapedTemplateForString_(string: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSRegularExpression").unwrap(), escapedTemplateForString : string)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSDataDetector(pub id);
impl std::ops::Deref for NSDataDetector {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSDataDetector {}
impl NSDataDetector {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSDataDetector").unwrap(), alloc) })
    }
}
impl INSRegularExpression for NSDataDetector {}
impl PNSCopying for NSDataDetector {}
impl PNSSecureCoding for NSDataDetector {}
impl From<NSDataDetector> for NSRegularExpression {
    fn from(child: NSDataDetector) -> NSRegularExpression {
        NSRegularExpression(child.0)
    }
}
impl std::convert::TryFrom<NSRegularExpression> for NSDataDetector {
    type Error = &'static str;
    fn try_from(parent: NSRegularExpression) -> Result<NSDataDetector, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSDataDetector").unwrap()) };
        if is_kind_of {
            Ok(NSDataDetector(parent.0))
        } else {
            Err("This NSRegularExpression cannot be downcasted to NSDataDetector")
        }
    }
}
impl INSObject for NSDataDetector {}
impl PNSObject for NSDataDetector {}
impl INSDataDetector for NSDataDetector {}
pub trait INSDataDetector: Sized + std::ops::Deref {
    unsafe fn initWithTypes_error_(
        &self,
        checkingTypes: NSTextCheckingTypes,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithTypes : checkingTypes, error : error)
    }
    unsafe fn checkingTypes(&self) -> NSTextCheckingTypes
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, checkingTypes)
    }
    unsafe fn dataDetectorWithTypes_error_(
        checkingTypes: NSTextCheckingTypes,
        error: *mut NSError,
    ) -> NSDataDetector
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDataDetector").unwrap(), dataDetectorWithTypes : checkingTypes, error : error)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSSortDescriptor(pub id);
impl std::ops::Deref for NSSortDescriptor {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSSortDescriptor {}
impl NSSortDescriptor {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSSortDescriptor").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSSortDescriptor {}
impl PNSCopying for NSSortDescriptor {}
impl INSObject for NSSortDescriptor {}
impl PNSObject for NSSortDescriptor {}
impl std::convert::TryFrom<NSObject> for NSSortDescriptor {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSSortDescriptor, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSSortDescriptor").unwrap()) };
        if is_kind_of {
            Ok(NSSortDescriptor(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSSortDescriptor")
        }
    }
}
impl INSSortDescriptor for NSSortDescriptor {}
pub trait INSSortDescriptor: Sized + std::ops::Deref {
    unsafe fn initWithKey_ascending_(&self, key: NSString, ascending: BOOL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithKey : key, ascending : ascending)
    }
    unsafe fn initWithKey_ascending_selector_(
        &self,
        key: NSString,
        ascending: BOOL,
        selector: objc2::runtime::Sel,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithKey : key, ascending : ascending, selector : selector)
    }
    unsafe fn initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
    unsafe fn allowEvaluation(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowEvaluation)
    }
    unsafe fn initWithKey_ascending_comparator_(
        &self,
        key: NSString,
        ascending: BOOL,
        cmptr: NSComparator,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithKey : key, ascending : ascending, comparator : cmptr)
    }
    unsafe fn compareObject_toObject_(&self, object1: id, object2: id) -> NSComparisonResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, compareObject : object1, toObject : object2)
    }
    unsafe fn key(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, key)
    }
    unsafe fn ascending(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, ascending)
    }
    unsafe fn selector(&self) -> objc2::runtime::Sel
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, selector)
    }
    unsafe fn comparator(&self) -> NSComparator
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, comparator)
    }
    unsafe fn reversedSortDescriptor(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, reversedSortDescriptor)
    }
    unsafe fn sortDescriptorWithKey_ascending_(key: NSString, ascending: BOOL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSSortDescriptor").unwrap(), sortDescriptorWithKey : key, ascending : ascending)
    }
    unsafe fn sortDescriptorWithKey_ascending_selector_(
        key: NSString,
        ascending: BOOL,
        selector: objc2::runtime::Sel,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSSortDescriptor").unwrap(), sortDescriptorWithKey : key, ascending : ascending, selector : selector)
    }
    unsafe fn sortDescriptorWithKey_ascending_comparator_(
        key: NSString,
        ascending: BOOL,
        cmptr: NSComparator,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSSortDescriptor").unwrap(), sortDescriptorWithKey : key, ascending : ascending, comparator : cmptr)
    }
}
impl<ObjectType: 'static> NSSet_NSSortDescriptorSorting<ObjectType> for NSSet {}
pub trait NSSet_NSSortDescriptorSorting<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn sortedArrayUsingDescriptors_(&self, sortDescriptors: NSArray) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sortedArrayUsingDescriptors : sortDescriptors)
    }
}
impl<ObjectType: 'static> NSArray_NSSortDescriptorSorting<ObjectType> for NSArray {}
pub trait NSArray_NSSortDescriptorSorting<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn sortedArrayUsingDescriptors_(&self, sortDescriptors: NSArray) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sortedArrayUsingDescriptors : sortDescriptors)
    }
}
impl<ObjectType: 'static> NSMutableArray_NSSortDescriptorSorting<ObjectType> for NSMutableArray {}
pub trait NSMutableArray_NSSortDescriptorSorting<ObjectType: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn sortUsingDescriptors_(&self, sortDescriptors: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sortUsingDescriptors : sortDescriptors)
    }
}
impl<ObjectType: 'static> NSOrderedSet_NSKeyValueSorting<ObjectType> for NSOrderedSet {}
pub trait NSOrderedSet_NSKeyValueSorting<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn sortedArrayUsingDescriptors_(&self, sortDescriptors: NSArray) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sortedArrayUsingDescriptors : sortDescriptors)
    }
}
impl<ObjectType: 'static> NSMutableOrderedSet_NSKeyValueSorting<ObjectType>
    for NSMutableOrderedSet
{
}
pub trait NSMutableOrderedSet_NSKeyValueSorting<ObjectType: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn sortUsingDescriptors_(&self, sortDescriptors: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sortUsingDescriptors : sortDescriptors)
    }
}
pub type NSStreamPropertyKey = NSString;
pub type NSStreamStatus = NSUInteger;
pub type NSStreamEvent = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSStream(pub id);
impl std::ops::Deref for NSStream {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSStream {}
impl NSStream {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSStream").unwrap(), alloc) })
    }
}
impl INSObject for NSStream {}
impl PNSObject for NSStream {}
impl std::convert::TryFrom<NSObject> for NSStream {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSStream, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSStream").unwrap()) };
        if is_kind_of {
            Ok(NSStream(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSStream")
        }
    }
}
impl INSStream for NSStream {}
pub trait INSStream: Sized + std::ops::Deref {
    unsafe fn open(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, open)
    }
    unsafe fn close(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, close)
    }
    unsafe fn propertyForKey_(&self, key: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, propertyForKey : key)
    }
    unsafe fn setProperty_forKey_(&self, property: id, key: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProperty : property, forKey : key)
    }
    unsafe fn scheduleInRunLoop_forMode_(&self, aRunLoop: NSRunLoop, mode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scheduleInRunLoop : aRunLoop, forMode : mode)
    }
    unsafe fn removeFromRunLoop_forMode_(&self, aRunLoop: NSRunLoop, mode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeFromRunLoop : aRunLoop, forMode : mode)
    }
    unsafe fn delegate(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delegate)
    }
    unsafe fn setDelegate_(&self, delegate: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelegate : delegate)
    }
    unsafe fn streamStatus(&self) -> NSStreamStatus
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, streamStatus)
    }
    unsafe fn streamError(&self) -> NSError
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, streamError)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSInputStream(pub id);
impl std::ops::Deref for NSInputStream {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSInputStream {}
impl NSInputStream {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSInputStream").unwrap(), alloc) })
    }
}
impl INSStream for NSInputStream {}
impl From<NSInputStream> for NSStream {
    fn from(child: NSInputStream) -> NSStream {
        NSStream(child.0)
    }
}
impl std::convert::TryFrom<NSStream> for NSInputStream {
    type Error = &'static str;
    fn try_from(parent: NSStream) -> Result<NSInputStream, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSInputStream").unwrap()) };
        if is_kind_of {
            Ok(NSInputStream(parent.0))
        } else {
            Err("This NSStream cannot be downcasted to NSInputStream")
        }
    }
}
impl INSObject for NSInputStream {}
impl PNSObject for NSInputStream {}
impl INSInputStream for NSInputStream {}
pub trait INSInputStream: Sized + std::ops::Deref {
    unsafe fn read_maxLength_(&self, buffer: *mut u8, len: NSUInteger) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, read : buffer, maxLength : len)
    }
    unsafe fn getBuffer_length_(&self, buffer: *mut *mut u8, len: *mut NSUInteger) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getBuffer : buffer, length : len)
    }
    unsafe fn initWithData_(&self, data: NSData) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithData : data)
    }
    unsafe fn initWithURL_(&self, url: NSURL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithURL : url)
    }
    unsafe fn hasBytesAvailable(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hasBytesAvailable)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSOutputStream(pub id);
impl std::ops::Deref for NSOutputStream {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSOutputStream {}
impl NSOutputStream {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSOutputStream").unwrap(), alloc) })
    }
}
impl INSStream for NSOutputStream {}
impl std::convert::TryFrom<NSStream> for NSOutputStream {
    type Error = &'static str;
    fn try_from(parent: NSStream) -> Result<NSOutputStream, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSOutputStream").unwrap()) };
        if is_kind_of {
            Ok(NSOutputStream(parent.0))
        } else {
            Err("This NSStream cannot be downcasted to NSOutputStream")
        }
    }
}
impl INSObject for NSOutputStream {}
impl PNSObject for NSOutputStream {}
impl INSOutputStream for NSOutputStream {}
pub trait INSOutputStream: Sized + std::ops::Deref {
    unsafe fn write_maxLength_(&self, buffer: *const u8, len: NSUInteger) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, write : buffer, maxLength : len)
    }
    unsafe fn initToMemory(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, initToMemory)
    }
    unsafe fn initToBuffer_capacity_(&self, buffer: *mut u8, capacity: NSUInteger) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initToBuffer : buffer, capacity : capacity)
    }
    unsafe fn initWithURL_append_(&self, url: NSURL, shouldAppend: BOOL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithURL : url, append : shouldAppend)
    }
    unsafe fn hasSpaceAvailable(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hasSpaceAvailable)
    }
}
impl NSStream_NSSocketStreamCreationExtensions for NSStream {}
pub trait NSStream_NSSocketStreamCreationExtensions: Sized + std::ops::Deref {
    unsafe fn getStreamsToHostWithName_port_inputStream_outputStream_(
        hostname: NSString,
        port: NSInteger,
        inputStream: *mut NSInputStream,
        outputStream: *mut NSOutputStream,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSStream").unwrap(), getStreamsToHostWithName : hostname, port : port, inputStream : inputStream, outputStream : outputStream)
    }
    unsafe fn getStreamsToHost_port_inputStream_outputStream_(
        host: NSHost,
        port: NSInteger,
        inputStream: *mut NSInputStream,
        outputStream: *mut NSOutputStream,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSStream").unwrap(), getStreamsToHost : host, port : port, inputStream : inputStream, outputStream : outputStream)
    }
}
impl NSStream_NSStreamBoundPairCreationExtensions for NSStream {}
pub trait NSStream_NSStreamBoundPairCreationExtensions: Sized + std::ops::Deref {
    unsafe fn getBoundStreamsWithBufferSize_inputStream_outputStream_(
        bufferSize: NSUInteger,
        inputStream: *mut NSInputStream,
        outputStream: *mut NSOutputStream,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSStream").unwrap(), getBoundStreamsWithBufferSize : bufferSize, inputStream : inputStream, outputStream : outputStream)
    }
}
impl NSInputStream_NSInputStreamExtensions for NSInputStream {}
pub trait NSInputStream_NSInputStreamExtensions: Sized + std::ops::Deref {
    unsafe fn initWithFileAtPath_(&self, path: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithFileAtPath : path)
    }
    unsafe fn inputStreamWithData_(data: NSData) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSInputStream").unwrap(), inputStreamWithData : data)
    }
    unsafe fn inputStreamWithFileAtPath_(path: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSInputStream").unwrap(), inputStreamWithFileAtPath : path)
    }
    unsafe fn inputStreamWithURL_(url: NSURL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSInputStream").unwrap(), inputStreamWithURL : url)
    }
}
impl NSOutputStream_NSOutputStreamExtensions for NSOutputStream {}
pub trait NSOutputStream_NSOutputStreamExtensions: Sized + std::ops::Deref {
    unsafe fn initToFileAtPath_append_(&self, path: NSString, shouldAppend: BOOL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initToFileAtPath : path, append : shouldAppend)
    }
    unsafe fn outputStreamToMemory() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSOutputStream").unwrap(), outputStreamToMemory)
    }
    unsafe fn outputStreamToBuffer_capacity_(buffer: *mut u8, capacity: NSUInteger) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSOutputStream").unwrap(), outputStreamToBuffer : buffer, capacity : capacity)
    }
    unsafe fn outputStreamToFileAtPath_append_(path: NSString, shouldAppend: BOOL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSOutputStream").unwrap(), outputStreamToFileAtPath : path, append : shouldAppend)
    }
    unsafe fn outputStreamWithURL_append_(url: NSURL, shouldAppend: BOOL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSOutputStream").unwrap(), outputStreamWithURL : url, append : shouldAppend)
    }
}
pub trait PNSStreamDelegate: Sized + std::ops::Deref {
    unsafe fn stream_handleEvent_(&self, aStream: NSStream, eventCode: NSStreamEvent)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stream : aStream, handleEvent : eventCode)
    }
}
pub type NSStreamNetworkServiceTypeValue = NSString;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSThread(pub id);
impl std::ops::Deref for NSThread {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSThread {}
impl NSThread {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSThread").unwrap(), alloc) })
    }
}
impl INSObject for NSThread {}
impl PNSObject for NSThread {}
impl std::convert::TryFrom<NSObject> for NSThread {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSThread, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSThread").unwrap()) };
        if is_kind_of {
            Ok(NSThread(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSThread")
        }
    }
}
impl INSThread for NSThread {}
pub trait INSThread: 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 initWithTarget_selector_object_(
        &self,
        target: id,
        selector: objc2::runtime::Sel,
        argument: id,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithTarget : target, selector : selector, object : argument)
    }
    unsafe fn initWithBlock_(&self, block: *mut ::std::os::raw::c_void) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithBlock : block)
    }
    unsafe fn cancel(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cancel)
    }
    unsafe fn start(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, start)
    }
    unsafe fn main(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, main)
    }
    unsafe fn threadDictionary(&self) -> NSMutableDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, threadDictionary)
    }
    unsafe fn threadPriority(&self) -> f64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, threadPriority)
    }
    unsafe fn setThreadPriority_(&self, threadPriority: f64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setThreadPriority : threadPriority)
    }
    unsafe fn qualityOfService(&self) -> NSQualityOfService
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, qualityOfService)
    }
    unsafe fn setQualityOfService_(&self, qualityOfService: NSQualityOfService)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setQualityOfService : qualityOfService)
    }
    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 stackSize(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stackSize)
    }
    unsafe fn setStackSize_(&self, stackSize: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStackSize : stackSize)
    }
    unsafe fn isMainThread(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isMainThread)
    }
    unsafe fn isExecuting(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isExecuting)
    }
    unsafe fn isFinished(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isFinished)
    }
    unsafe fn isCancelled(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isCancelled)
    }
    unsafe fn detachNewThreadWithBlock_(block: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSThread").unwrap(), detachNewThreadWithBlock : block)
    }
    unsafe fn detachNewThreadSelector_toTarget_withObject_(
        selector: objc2::runtime::Sel,
        target: id,
        argument: id,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSThread").unwrap(), detachNewThreadSelector : selector, toTarget : target, withObject : argument)
    }
    unsafe fn isMultiThreaded() -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSThread").unwrap(), isMultiThreaded)
    }
    unsafe fn sleepUntilDate_(date: NSDate)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSThread").unwrap(), sleepUntilDate : date)
    }
    unsafe fn sleepForTimeInterval_(ti: NSTimeInterval)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSThread").unwrap(), sleepForTimeInterval : ti)
    }
    unsafe fn exit()
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSThread").unwrap(), exit)
    }
    unsafe fn class_threadPriority() -> f64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSThread").unwrap(), threadPriority)
    }
    unsafe fn class_setThreadPriority_(p: f64) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSThread").unwrap(), setThreadPriority : p)
    }
    unsafe fn currentThread() -> NSThread
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSThread").unwrap(), currentThread)
    }
    unsafe fn callStackReturnAddresses() -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSThread").unwrap(), callStackReturnAddresses)
    }
    unsafe fn callStackSymbols() -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSThread").unwrap(), callStackSymbols)
    }
    unsafe fn class_isMainThread() -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSThread").unwrap(), isMainThread)
    }
    unsafe fn mainThread() -> NSThread
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSThread").unwrap(), mainThread)
    }
}
pub trait NSObject_NSThreadPerformAdditions: Sized + std::ops::Deref {
    unsafe fn performSelectorOnMainThread_withObject_waitUntilDone_modes_(
        &self,
        aSelector: objc2::runtime::Sel,
        arg: id,
        wait: BOOL,
        array: NSArray,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, performSelectorOnMainThread : aSelector, withObject : arg, waitUntilDone : wait, modes : array)
    }
    unsafe fn performSelectorOnMainThread_withObject_waitUntilDone_(
        &self,
        aSelector: objc2::runtime::Sel,
        arg: id,
        wait: BOOL,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, performSelectorOnMainThread : aSelector, withObject : arg, waitUntilDone : wait)
    }
    unsafe fn performSelector_onThread_withObject_waitUntilDone_modes_(
        &self,
        aSelector: objc2::runtime::Sel,
        thr: NSThread,
        arg: id,
        wait: BOOL,
        array: NSArray,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, performSelector : aSelector, onThread : thr, withObject : arg, waitUntilDone : wait, modes : array)
    }
    unsafe fn performSelector_onThread_withObject_waitUntilDone_(
        &self,
        aSelector: objc2::runtime::Sel,
        thr: NSThread,
        arg: id,
        wait: BOOL,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, performSelector : aSelector, onThread : thr, withObject : arg, waitUntilDone : wait)
    }
    unsafe fn performSelectorInBackground_withObject_(&self, aSelector: objc2::runtime::Sel, arg: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, performSelectorInBackground : aSelector, withObject : arg)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSTimeZone(pub id);
impl std::ops::Deref for NSTimeZone {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSTimeZone {}
impl NSTimeZone {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSTimeZone").unwrap(), alloc) })
    }
}
impl PNSCopying for NSTimeZone {}
impl PNSSecureCoding for NSTimeZone {}
impl INSObject for NSTimeZone {}
impl PNSObject for NSTimeZone {}
impl std::convert::TryFrom<NSObject> for NSTimeZone {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSTimeZone, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSTimeZone").unwrap()) };
        if is_kind_of {
            Ok(NSTimeZone(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSTimeZone")
        }
    }
}
impl INSTimeZone for NSTimeZone {}
pub trait INSTimeZone: Sized + std::ops::Deref {
    unsafe fn secondsFromGMTForDate_(&self, aDate: NSDate) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, secondsFromGMTForDate : aDate)
    }
    unsafe fn abbreviationForDate_(&self, aDate: NSDate) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, abbreviationForDate : aDate)
    }
    unsafe fn isDaylightSavingTimeForDate_(&self, aDate: NSDate) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isDaylightSavingTimeForDate : aDate)
    }
    unsafe fn daylightSavingTimeOffsetForDate_(&self, aDate: NSDate) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, daylightSavingTimeOffsetForDate : aDate)
    }
    unsafe fn nextDaylightSavingTimeTransitionAfterDate_(&self, aDate: NSDate) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, nextDaylightSavingTimeTransitionAfterDate : aDate)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn data(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
}
impl NSTimeZone_NSExtendedTimeZone for NSTimeZone {}
pub trait NSTimeZone_NSExtendedTimeZone: Sized + std::ops::Deref {
    unsafe fn isEqualToTimeZone_(&self, aTimeZone: NSTimeZone) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isEqualToTimeZone : aTimeZone)
    }
    unsafe fn localizedName_locale_(&self, style: NSTimeZoneNameStyle, locale: NSLocale) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, localizedName : style, locale : locale)
    }
    unsafe fn secondsFromGMT(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, secondsFromGMT)
    }
    unsafe fn abbreviation(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, abbreviation)
    }
    unsafe fn isDaylightSavingTime(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isDaylightSavingTime)
    }
    unsafe fn daylightSavingTimeOffset(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, daylightSavingTimeOffset)
    }
    unsafe fn nextDaylightSavingTimeTransition(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nextDaylightSavingTimeTransition)
    }
    unsafe fn description(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, description)
    }
    unsafe fn resetSystemTimeZone()
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTimeZone").unwrap(), resetSystemTimeZone)
    }
    unsafe fn abbreviationDictionary() -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTimeZone").unwrap(), abbreviationDictionary)
    }
    unsafe fn systemTimeZone() -> NSTimeZone
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTimeZone").unwrap(), systemTimeZone)
    }
    unsafe fn defaultTimeZone() -> NSTimeZone
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTimeZone").unwrap(), defaultTimeZone)
    }
    unsafe fn setDefaultTimeZone_(defaultTimeZone: NSTimeZone)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTimeZone").unwrap(), setDefaultTimeZone : defaultTimeZone)
    }
    unsafe fn localTimeZone() -> NSTimeZone
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTimeZone").unwrap(), localTimeZone)
    }
    unsafe fn knownTimeZoneNames() -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTimeZone").unwrap(), knownTimeZoneNames)
    }
    unsafe fn setAbbreviationDictionary_(abbreviationDictionary: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTimeZone").unwrap(), setAbbreviationDictionary : abbreviationDictionary)
    }
    unsafe fn timeZoneDataVersion() -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTimeZone").unwrap(), timeZoneDataVersion)
    }
}
pub type NSTimeZoneNameStyle = NSInteger;
impl NSTimeZone_NSTimeZoneCreation for NSTimeZone {}
pub trait NSTimeZone_NSTimeZoneCreation: Sized + std::ops::Deref {
    unsafe fn initWithName_(&self, tzName: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithName : tzName)
    }
    unsafe fn initWithName_data_(&self, tzName: NSString, aData: NSData) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithName : tzName, data : aData)
    }
    unsafe fn timeZoneWithName_(tzName: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTimeZone").unwrap(), timeZoneWithName : tzName)
    }
    unsafe fn timeZoneWithName_data_(tzName: NSString, aData: NSData) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTimeZone").unwrap(), timeZoneWithName : tzName, data : aData)
    }
    unsafe fn timeZoneForSecondsFromGMT_(seconds: NSInteger) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTimeZone").unwrap(), timeZoneForSecondsFromGMT : seconds)
    }
    unsafe fn timeZoneWithAbbreviation_(abbreviation: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTimeZone").unwrap(), timeZoneWithAbbreviation : abbreviation)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSTimer(pub id);
impl std::ops::Deref for NSTimer {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSTimer {}
impl NSTimer {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSTimer").unwrap(), alloc) })
    }
}
impl INSObject for NSTimer {}
impl PNSObject for NSTimer {}
impl std::convert::TryFrom<NSObject> for NSTimer {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSTimer, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSTimer").unwrap()) };
        if is_kind_of {
            Ok(NSTimer(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSTimer")
        }
    }
}
impl INSTimer for NSTimer {}
pub trait INSTimer: Sized + std::ops::Deref {
    unsafe fn initWithFireDate_interval_repeats_block_(
        &self,
        date: NSDate,
        interval: NSTimeInterval,
        repeats: BOOL,
        block: *mut ::std::os::raw::c_void,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithFireDate : date, interval : interval, repeats : repeats, block : block)
    }
    unsafe fn initWithFireDate_interval_target_selector_userInfo_repeats_(
        &self,
        date: NSDate,
        ti: NSTimeInterval,
        t: id,
        s: objc2::runtime::Sel,
        ui: id,
        rep: BOOL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithFireDate : date, interval : ti, target : t, selector : s, userInfo : ui, repeats : rep)
    }
    unsafe fn fire(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fire)
    }
    unsafe fn invalidate(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invalidate)
    }
    unsafe fn fireDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fireDate)
    }
    unsafe fn setFireDate_(&self, fireDate: NSDate)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFireDate : fireDate)
    }
    unsafe fn timeInterval(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeInterval)
    }
    unsafe fn tolerance(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tolerance)
    }
    unsafe fn setTolerance_(&self, tolerance: NSTimeInterval)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTolerance : tolerance)
    }
    unsafe fn isValid(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isValid)
    }
    unsafe fn userInfo(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userInfo)
    }
    unsafe fn timerWithTimeInterval_invocation_repeats_(
        ti: NSTimeInterval,
        invocation: NSInvocation,
        yesOrNo: BOOL,
    ) -> NSTimer
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTimer").unwrap(), timerWithTimeInterval : ti, invocation : invocation, repeats : yesOrNo)
    }
    unsafe fn scheduledTimerWithTimeInterval_invocation_repeats_(
        ti: NSTimeInterval,
        invocation: NSInvocation,
        yesOrNo: BOOL,
    ) -> NSTimer
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTimer").unwrap(), scheduledTimerWithTimeInterval : ti, invocation : invocation, repeats : yesOrNo)
    }
    unsafe fn timerWithTimeInterval_target_selector_userInfo_repeats_(
        ti: NSTimeInterval,
        aTarget: id,
        aSelector: objc2::runtime::Sel,
        userInfo: id,
        yesOrNo: BOOL,
    ) -> NSTimer
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTimer").unwrap(), timerWithTimeInterval : ti, target : aTarget, selector : aSelector, userInfo : userInfo, repeats : yesOrNo)
    }
    unsafe fn scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_(
        ti: NSTimeInterval,
        aTarget: id,
        aSelector: objc2::runtime::Sel,
        userInfo: id,
        yesOrNo: BOOL,
    ) -> NSTimer
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTimer").unwrap(), scheduledTimerWithTimeInterval : ti, target : aTarget, selector : aSelector, userInfo : userInfo, repeats : yesOrNo)
    }
    unsafe fn timerWithTimeInterval_repeats_block_(
        interval: NSTimeInterval,
        repeats: BOOL,
        block: *mut ::std::os::raw::c_void,
    ) -> NSTimer
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTimer").unwrap(), timerWithTimeInterval : interval, repeats : repeats, block : block)
    }
    unsafe fn scheduledTimerWithTimeInterval_repeats_block_(
        interval: NSTimeInterval,
        repeats: BOOL,
        block: *mut ::std::os::raw::c_void,
    ) -> NSTimer
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTimer").unwrap(), scheduledTimerWithTimeInterval : interval, repeats : repeats, block : block)
    }
}
pub trait PNSURLAuthenticationChallengeSender: Sized + std::ops::Deref {
    unsafe fn useCredential_forAuthenticationChallenge_(
        &self,
        credential: NSURLCredential,
        challenge: NSURLAuthenticationChallenge,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, useCredential : credential, forAuthenticationChallenge : challenge)
    }
    unsafe fn continueWithoutCredentialForAuthenticationChallenge_(
        &self,
        challenge: NSURLAuthenticationChallenge,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, continueWithoutCredentialForAuthenticationChallenge : challenge)
    }
    unsafe fn cancelAuthenticationChallenge_(&self, challenge: NSURLAuthenticationChallenge)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelAuthenticationChallenge : challenge)
    }
    unsafe fn performDefaultHandlingForAuthenticationChallenge_(
        &self,
        challenge: NSURLAuthenticationChallenge,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, performDefaultHandlingForAuthenticationChallenge : challenge)
    }
    unsafe fn rejectProtectionSpaceAndContinueWithChallenge_(
        &self,
        challenge: NSURLAuthenticationChallenge,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rejectProtectionSpaceAndContinueWithChallenge : challenge)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLAuthenticationChallenge(pub id);
impl std::ops::Deref for NSURLAuthenticationChallenge {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLAuthenticationChallenge {}
impl NSURLAuthenticationChallenge {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLAuthenticationChallenge").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSURLAuthenticationChallenge {}
impl INSObject for NSURLAuthenticationChallenge {}
impl PNSObject for NSURLAuthenticationChallenge {}
impl std::convert::TryFrom<NSObject> for NSURLAuthenticationChallenge {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSURLAuthenticationChallenge, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLAuthenticationChallenge").unwrap()) };
        if is_kind_of {
            Ok(NSURLAuthenticationChallenge(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSURLAuthenticationChallenge")
        }
    }
}
impl INSURLAuthenticationChallenge for NSURLAuthenticationChallenge {}
pub trait INSURLAuthenticationChallenge: Sized + std::ops::Deref {
    unsafe fn initWithProtectionSpace_proposedCredential_previousFailureCount_failureResponse_error_sender_(
        &self,
        space: NSURLProtectionSpace,
        credential: NSURLCredential,
        previousFailureCount: NSInteger,
        response: NSURLResponse,
        error: NSError,
        sender: *mut u64,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithProtectionSpace : space, proposedCredential : credential, previousFailureCount : previousFailureCount, failureResponse : response, error : error, sender : sender)
    }
    unsafe fn initWithAuthenticationChallenge_sender_(
        &self,
        challenge: NSURLAuthenticationChallenge,
        sender: *mut u64,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithAuthenticationChallenge : challenge, sender : sender)
    }
    unsafe fn protectionSpace(&self) -> NSURLProtectionSpace
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, protectionSpace)
    }
    unsafe fn proposedCredential(&self) -> NSURLCredential
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, proposedCredential)
    }
    unsafe fn previousFailureCount(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previousFailureCount)
    }
    unsafe fn failureResponse(&self) -> NSURLResponse
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, failureResponse)
    }
    unsafe fn error(&self) -> NSError
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, error)
    }
    unsafe fn sender(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sender)
    }
}
pub type NSURLCacheStoragePolicy = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSCachedURLResponse(pub id);
impl std::ops::Deref for NSCachedURLResponse {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSCachedURLResponse {}
impl NSCachedURLResponse {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSCachedURLResponse").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSCachedURLResponse {}
impl PNSCopying for NSCachedURLResponse {}
impl INSObject for NSCachedURLResponse {}
impl PNSObject for NSCachedURLResponse {}
impl std::convert::TryFrom<NSObject> for NSCachedURLResponse {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSCachedURLResponse, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSCachedURLResponse").unwrap()) };
        if is_kind_of {
            Ok(NSCachedURLResponse(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSCachedURLResponse")
        }
    }
}
impl INSCachedURLResponse for NSCachedURLResponse {}
pub trait INSCachedURLResponse: Sized + std::ops::Deref {
    unsafe fn initWithResponse_data_(&self, response: NSURLResponse, data: NSData) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponse : response, data : data)
    }
    unsafe fn initWithResponse_data_userInfo_storagePolicy_(
        &self,
        response: NSURLResponse,
        data: NSData,
        userInfo: NSDictionary,
        storagePolicy: NSURLCacheStoragePolicy,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResponse : response, data : data, userInfo : userInfo, storagePolicy : storagePolicy)
    }
    unsafe fn response(&self) -> NSURLResponse
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, response)
    }
    unsafe fn data(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
    unsafe fn userInfo(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userInfo)
    }
    unsafe fn storagePolicy(&self) -> NSURLCacheStoragePolicy
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, storagePolicy)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLCache(pub id);
impl std::ops::Deref for NSURLCache {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLCache {}
impl NSURLCache {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLCache").unwrap(), alloc) })
    }
}
impl INSObject for NSURLCache {}
impl PNSObject for NSURLCache {}
impl std::convert::TryFrom<NSObject> for NSURLCache {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSURLCache, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLCache").unwrap()) };
        if is_kind_of {
            Ok(NSURLCache(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSURLCache")
        }
    }
}
impl INSURLCache for NSURLCache {}
pub trait INSURLCache: Sized + std::ops::Deref {
    unsafe fn initWithMemoryCapacity_diskCapacity_diskPath_(
        &self,
        memoryCapacity: NSUInteger,
        diskCapacity: NSUInteger,
        path: NSString,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithMemoryCapacity : memoryCapacity, diskCapacity : diskCapacity, diskPath : path)
    }
    unsafe fn initWithMemoryCapacity_diskCapacity_directoryURL_(
        &self,
        memoryCapacity: NSUInteger,
        diskCapacity: NSUInteger,
        directoryURL: NSURL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithMemoryCapacity : memoryCapacity, diskCapacity : diskCapacity, directoryURL : directoryURL)
    }
    unsafe fn cachedResponseForRequest_(&self, request: NSURLRequest) -> NSCachedURLResponse
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cachedResponseForRequest : request)
    }
    unsafe fn storeCachedResponse_forRequest_(
        &self,
        cachedResponse: NSCachedURLResponse,
        request: NSURLRequest,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, storeCachedResponse : cachedResponse, forRequest : request)
    }
    unsafe fn removeCachedResponseForRequest_(&self, request: NSURLRequest)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeCachedResponseForRequest : request)
    }
    unsafe fn removeAllCachedResponses(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, removeAllCachedResponses)
    }
    unsafe fn removeCachedResponsesSinceDate_(&self, date: NSDate)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeCachedResponsesSinceDate : date)
    }
    unsafe fn memoryCapacity(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, memoryCapacity)
    }
    unsafe fn setMemoryCapacity_(&self, memoryCapacity: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMemoryCapacity : memoryCapacity)
    }
    unsafe fn diskCapacity(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, diskCapacity)
    }
    unsafe fn setDiskCapacity_(&self, diskCapacity: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDiskCapacity : diskCapacity)
    }
    unsafe fn currentMemoryUsage(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentMemoryUsage)
    }
    unsafe fn currentDiskUsage(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentDiskUsage)
    }
    unsafe fn sharedURLCache() -> NSURLCache
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLCache").unwrap(), sharedURLCache)
    }
    unsafe fn setSharedURLCache_(sharedURLCache: NSURLCache)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLCache").unwrap(), setSharedURLCache : sharedURLCache)
    }
}
impl NSURLCache_NSURLSessionTaskAdditions for NSURLCache {}
pub trait NSURLCache_NSURLSessionTaskAdditions: Sized + std::ops::Deref {
    unsafe fn storeCachedResponse_forDataTask_(
        &self,
        cachedResponse: NSCachedURLResponse,
        dataTask: NSURLSessionDataTask,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, storeCachedResponse : cachedResponse, forDataTask : dataTask)
    }
    unsafe fn getCachedResponseForDataTask_completionHandler_(
        &self,
        dataTask: NSURLSessionDataTask,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getCachedResponseForDataTask : dataTask, completionHandler : completionHandler)
    }
    unsafe fn removeCachedResponseForDataTask_(&self, dataTask: NSURLSessionDataTask)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeCachedResponseForDataTask : dataTask)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLConnection(pub id);
impl std::ops::Deref for NSURLConnection {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLConnection {}
impl NSURLConnection {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLConnection").unwrap(), alloc) })
    }
}
impl INSObject for NSURLConnection {}
impl PNSObject for NSURLConnection {}
impl std::convert::TryFrom<NSObject> for NSURLConnection {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSURLConnection, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLConnection").unwrap()) };
        if is_kind_of {
            Ok(NSURLConnection(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSURLConnection")
        }
    }
}
impl INSURLConnection for NSURLConnection {}
pub trait INSURLConnection: Sized + std::ops::Deref {
    unsafe fn initWithRequest_delegate_startImmediately_(
        &self,
        request: NSURLRequest,
        delegate: id,
        startImmediately: BOOL,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithRequest : request, delegate : delegate, startImmediately : startImmediately)
    }
    unsafe fn initWithRequest_delegate_(&self, request: NSURLRequest, delegate: id) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithRequest : request, delegate : delegate)
    }
    unsafe fn start(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, start)
    }
    unsafe fn cancel(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cancel)
    }
    unsafe fn scheduleInRunLoop_forMode_(&self, aRunLoop: NSRunLoop, mode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scheduleInRunLoop : aRunLoop, forMode : mode)
    }
    unsafe fn unscheduleFromRunLoop_forMode_(&self, aRunLoop: NSRunLoop, mode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, unscheduleFromRunLoop : aRunLoop, forMode : mode)
    }
    unsafe fn setDelegateQueue_(&self, queue: NSOperationQueue)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelegateQueue : queue)
    }
    unsafe fn originalRequest(&self) -> NSURLRequest
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, originalRequest)
    }
    unsafe fn currentRequest(&self) -> NSURLRequest
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentRequest)
    }
    unsafe fn connectionWithRequest_delegate_(
        request: NSURLRequest,
        delegate: id,
    ) -> NSURLConnection
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLConnection").unwrap(), connectionWithRequest : request, delegate : delegate)
    }
    unsafe fn canHandleRequest_(request: NSURLRequest) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLConnection").unwrap(), canHandleRequest : request)
    }
}
pub trait PNSURLConnectionDelegate: Sized + std::ops::Deref {
    unsafe fn connection_didFailWithError_(&self, connection: NSURLConnection, error: NSError)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, connection : connection, didFailWithError : error)
    }
    unsafe fn connectionShouldUseCredentialStorage_(&self, connection: NSURLConnection) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, connectionShouldUseCredentialStorage : connection)
    }
    unsafe fn connection_willSendRequestForAuthenticationChallenge_(
        &self,
        connection: NSURLConnection,
        challenge: NSURLAuthenticationChallenge,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, connection : connection, willSendRequestForAuthenticationChallenge : challenge)
    }
    unsafe fn connection_canAuthenticateAgainstProtectionSpace_(
        &self,
        connection: NSURLConnection,
        protectionSpace: NSURLProtectionSpace,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, connection : connection, canAuthenticateAgainstProtectionSpace : protectionSpace)
    }
    unsafe fn connection_didReceiveAuthenticationChallenge_(
        &self,
        connection: NSURLConnection,
        challenge: NSURLAuthenticationChallenge,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, connection : connection, didReceiveAuthenticationChallenge : challenge)
    }
    unsafe fn connection_didCancelAuthenticationChallenge_(
        &self,
        connection: NSURLConnection,
        challenge: NSURLAuthenticationChallenge,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, connection : connection, didCancelAuthenticationChallenge : challenge)
    }
}
pub trait PNSURLConnectionDataDelegate: Sized + std::ops::Deref {
    unsafe fn connection_willSendRequest_redirectResponse_(
        &self,
        connection: NSURLConnection,
        request: NSURLRequest,
        response: NSURLResponse,
    ) -> NSURLRequest
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, connection : connection, willSendRequest : request, redirectResponse : response)
    }
    unsafe fn connection_didReceiveResponse_(
        &self,
        connection: NSURLConnection,
        response: NSURLResponse,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, connection : connection, didReceiveResponse : response)
    }
    unsafe fn connection_didReceiveData_(&self, connection: NSURLConnection, data: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, connection : connection, didReceiveData : data)
    }
    unsafe fn connection_needNewBodyStream_(
        &self,
        connection: NSURLConnection,
        request: NSURLRequest,
    ) -> NSInputStream
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, connection : connection, needNewBodyStream : request)
    }
    unsafe fn connection_didSendBodyData_totalBytesWritten_totalBytesExpectedToWrite_(
        &self,
        connection: NSURLConnection,
        bytesWritten: NSInteger,
        totalBytesWritten: NSInteger,
        totalBytesExpectedToWrite: NSInteger,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, connection : connection, didSendBodyData : bytesWritten, totalBytesWritten : totalBytesWritten, totalBytesExpectedToWrite : totalBytesExpectedToWrite)
    }
    unsafe fn connection_willCacheResponse_(
        &self,
        connection: NSURLConnection,
        cachedResponse: NSCachedURLResponse,
    ) -> NSCachedURLResponse
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, connection : connection, willCacheResponse : cachedResponse)
    }
    unsafe fn connectionDidFinishLoading_(&self, connection: NSURLConnection)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, connectionDidFinishLoading : connection)
    }
}
pub trait PNSURLConnectionDownloadDelegate: Sized + std::ops::Deref {
    unsafe fn connection_didWriteData_totalBytesWritten_expectedTotalBytes_(
        &self,
        connection: NSURLConnection,
        bytesWritten: ::std::os::raw::c_longlong,
        totalBytesWritten: ::std::os::raw::c_longlong,
        expectedTotalBytes: ::std::os::raw::c_longlong,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, connection : connection, didWriteData : bytesWritten, totalBytesWritten : totalBytesWritten, expectedTotalBytes : expectedTotalBytes)
    }
    unsafe fn connectionDidResumeDownloading_totalBytesWritten_expectedTotalBytes_(
        &self,
        connection: NSURLConnection,
        totalBytesWritten: ::std::os::raw::c_longlong,
        expectedTotalBytes: ::std::os::raw::c_longlong,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, connectionDidResumeDownloading : connection, totalBytesWritten : totalBytesWritten, expectedTotalBytes : expectedTotalBytes)
    }
    unsafe fn connectionDidFinishDownloading_destinationURL_(
        &self,
        connection: NSURLConnection,
        destinationURL: NSURL,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, connectionDidFinishDownloading : connection, destinationURL : destinationURL)
    }
}
impl NSURLConnection_NSURLConnectionSynchronousLoading for NSURLConnection {}
pub trait NSURLConnection_NSURLConnectionSynchronousLoading: Sized + std::ops::Deref {
    unsafe fn sendSynchronousRequest_returningResponse_error_(
        request: NSURLRequest,
        response: *mut NSURLResponse,
        error: *mut NSError,
    ) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLConnection").unwrap(), sendSynchronousRequest : request, returningResponse : response, error : error)
    }
}
impl NSURLConnection_NSURLConnectionQueuedLoading for NSURLConnection {}
pub trait NSURLConnection_NSURLConnectionQueuedLoading: Sized + std::ops::Deref {
    unsafe fn sendAsynchronousRequest_queue_completionHandler_(
        request: NSURLRequest,
        queue: NSOperationQueue,
        handler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLConnection").unwrap(), sendAsynchronousRequest : request, queue : queue, completionHandler : handler)
    }
}
pub type NSURLCredentialPersistence = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLCredential(pub id);
impl std::ops::Deref for NSURLCredential {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLCredential {}
impl NSURLCredential {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLCredential").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSURLCredential {}
impl PNSCopying for NSURLCredential {}
impl INSObject for NSURLCredential {}
impl PNSObject for NSURLCredential {}
impl std::convert::TryFrom<NSObject> for NSURLCredential {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSURLCredential, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLCredential").unwrap()) };
        if is_kind_of {
            Ok(NSURLCredential(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSURLCredential")
        }
    }
}
impl INSURLCredential for NSURLCredential {}
pub trait INSURLCredential: Sized + std::ops::Deref {
    unsafe fn persistence(&self) -> NSURLCredentialPersistence
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, persistence)
    }
}
impl NSURLCredential_NSInternetPassword for NSURLCredential {}
pub trait NSURLCredential_NSInternetPassword: Sized + std::ops::Deref {
    unsafe fn initWithUser_password_persistence_(
        &self,
        user: NSString,
        password: NSString,
        persistence: NSURLCredentialPersistence,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithUser : user, password : password, persistence : persistence)
    }
    unsafe fn user(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, user)
    }
    unsafe fn password(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, password)
    }
    unsafe fn hasPassword(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hasPassword)
    }
    unsafe fn credentialWithUser_password_persistence_(
        user: NSString,
        password: NSString,
        persistence: NSURLCredentialPersistence,
    ) -> NSURLCredential
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLCredential").unwrap(), credentialWithUser : user, password : password, persistence : persistence)
    }
}
impl NSURLCredential_NSClientCertificate for NSURLCredential {}
pub trait NSURLCredential_NSClientCertificate: Sized + std::ops::Deref {
    unsafe fn initWithIdentity_certificates_persistence_(
        &self,
        identity: SecIdentityRef,
        certArray: NSArray,
        persistence: NSURLCredentialPersistence,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithIdentity : identity, certificates : certArray, persistence : persistence)
    }
    unsafe fn identity(&self) -> SecIdentityRef
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, identity)
    }
    unsafe fn certificates(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, certificates)
    }
    unsafe fn credentialWithIdentity_certificates_persistence_(
        identity: SecIdentityRef,
        certArray: NSArray,
        persistence: NSURLCredentialPersistence,
    ) -> NSURLCredential
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLCredential").unwrap(), credentialWithIdentity : identity, certificates : certArray, persistence : persistence)
    }
}
impl NSURLCredential_NSServerTrust for NSURLCredential {}
pub trait NSURLCredential_NSServerTrust: Sized + std::ops::Deref {
    unsafe fn initWithTrust_(&self, trust: SecTrustRef) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithTrust : trust)
    }
    unsafe fn credentialForTrust_(trust: SecTrustRef) -> NSURLCredential
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLCredential").unwrap(), credentialForTrust : trust)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLProtectionSpace(pub id);
impl std::ops::Deref for NSURLProtectionSpace {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLProtectionSpace {}
impl NSURLProtectionSpace {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLProtectionSpace").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSURLProtectionSpace {}
impl PNSCopying for NSURLProtectionSpace {}
impl INSObject for NSURLProtectionSpace {}
impl PNSObject for NSURLProtectionSpace {}
impl std::convert::TryFrom<NSObject> for NSURLProtectionSpace {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSURLProtectionSpace, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLProtectionSpace").unwrap()) };
        if is_kind_of {
            Ok(NSURLProtectionSpace(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSURLProtectionSpace")
        }
    }
}
impl INSURLProtectionSpace for NSURLProtectionSpace {}
pub trait INSURLProtectionSpace: Sized + std::ops::Deref {
    unsafe fn initWithHost_port_protocol_realm_authenticationMethod_(
        &self,
        host: NSString,
        port: NSInteger,
        protocol: NSString,
        realm: NSString,
        authenticationMethod: NSString,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithHost : host, port : port, protocol : protocol, realm : realm, authenticationMethod : authenticationMethod)
    }
    unsafe fn initWithProxyHost_port_type_realm_authenticationMethod_(
        &self,
        host: NSString,
        port: NSInteger,
        type_: NSString,
        realm: NSString,
        authenticationMethod: NSString,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithProxyHost : host, port : port, r#type : type_, realm : realm, authenticationMethod : authenticationMethod)
    }
    unsafe fn realm(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, realm)
    }
    unsafe fn receivesCredentialSecurely(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, receivesCredentialSecurely)
    }
    unsafe fn isProxy(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isProxy)
    }
    unsafe fn host(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, host)
    }
    unsafe fn port(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, port)
    }
    unsafe fn proxyType(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, proxyType)
    }
    unsafe fn protocol(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, protocol)
    }
    unsafe fn authenticationMethod(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, authenticationMethod)
    }
}
impl NSURLProtectionSpace_NSClientCertificateSpace for NSURLProtectionSpace {}
pub trait NSURLProtectionSpace_NSClientCertificateSpace: Sized + std::ops::Deref {
    unsafe fn distinguishedNames(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, distinguishedNames)
    }
}
impl NSURLProtectionSpace_NSServerTrustValidationSpace for NSURLProtectionSpace {}
pub trait NSURLProtectionSpace_NSServerTrustValidationSpace: Sized + std::ops::Deref {
    unsafe fn serverTrust(&self) -> SecTrustRef
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serverTrust)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLCredentialStorage(pub id);
impl std::ops::Deref for NSURLCredentialStorage {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLCredentialStorage {}
impl NSURLCredentialStorage {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLCredentialStorage").unwrap(), alloc) })
    }
}
impl INSObject for NSURLCredentialStorage {}
impl PNSObject for NSURLCredentialStorage {}
impl std::convert::TryFrom<NSObject> for NSURLCredentialStorage {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSURLCredentialStorage, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLCredentialStorage").unwrap()) };
        if is_kind_of {
            Ok(NSURLCredentialStorage(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSURLCredentialStorage")
        }
    }
}
impl INSURLCredentialStorage for NSURLCredentialStorage {}
pub trait INSURLCredentialStorage: Sized + std::ops::Deref {
    unsafe fn credentialsForProtectionSpace_(&self, space: NSURLProtectionSpace) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, credentialsForProtectionSpace : space)
    }
    unsafe fn setCredential_forProtectionSpace_(
        &self,
        credential: NSURLCredential,
        space: NSURLProtectionSpace,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredential : credential, forProtectionSpace : space)
    }
    unsafe fn removeCredential_forProtectionSpace_(
        &self,
        credential: NSURLCredential,
        space: NSURLProtectionSpace,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeCredential : credential, forProtectionSpace : space)
    }
    unsafe fn removeCredential_forProtectionSpace_options_(
        &self,
        credential: NSURLCredential,
        space: NSURLProtectionSpace,
        options: NSDictionary,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeCredential : credential, forProtectionSpace : space, options : options)
    }
    unsafe fn defaultCredentialForProtectionSpace_(
        &self,
        space: NSURLProtectionSpace,
    ) -> NSURLCredential
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, defaultCredentialForProtectionSpace : space)
    }
    unsafe fn setDefaultCredential_forProtectionSpace_(
        &self,
        credential: NSURLCredential,
        space: NSURLProtectionSpace,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDefaultCredential : credential, forProtectionSpace : space)
    }
    unsafe fn allCredentials(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allCredentials)
    }
    unsafe fn sharedCredentialStorage() -> NSURLCredentialStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLCredentialStorage").unwrap(), sharedCredentialStorage)
    }
}
impl NSURLCredentialStorage_NSURLSessionTaskAdditions for NSURLCredentialStorage {}
pub trait NSURLCredentialStorage_NSURLSessionTaskAdditions: Sized + std::ops::Deref {
    unsafe fn getCredentialsForProtectionSpace_task_completionHandler_(
        &self,
        protectionSpace: NSURLProtectionSpace,
        task: NSURLSessionTask,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getCredentialsForProtectionSpace : protectionSpace, task : task, completionHandler : completionHandler)
    }
    unsafe fn setCredential_forProtectionSpace_task_(
        &self,
        credential: NSURLCredential,
        protectionSpace: NSURLProtectionSpace,
        task: NSURLSessionTask,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCredential : credential, forProtectionSpace : protectionSpace, task : task)
    }
    unsafe fn removeCredential_forProtectionSpace_options_task_(
        &self,
        credential: NSURLCredential,
        protectionSpace: NSURLProtectionSpace,
        options: NSDictionary,
        task: NSURLSessionTask,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeCredential : credential, forProtectionSpace : protectionSpace, options : options, task : task)
    }
    unsafe fn getDefaultCredentialForProtectionSpace_task_completionHandler_(
        &self,
        space: NSURLProtectionSpace,
        task: NSURLSessionTask,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getDefaultCredentialForProtectionSpace : space, task : task, completionHandler : completionHandler)
    }
    unsafe fn setDefaultCredential_forProtectionSpace_task_(
        &self,
        credential: NSURLCredential,
        protectionSpace: NSURLProtectionSpace,
        task: NSURLSessionTask,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDefaultCredential : credential, forProtectionSpace : protectionSpace, task : task)
    }
}
pub type NSURLErrorNetworkUnavailableReason = NSInteger;
pub trait PNSURLProtocolClient: Sized + std::ops::Deref {
    unsafe fn URLProtocol_wasRedirectedToRequest_redirectResponse_(
        &self,
        protocol: NSURLProtocol,
        request: NSURLRequest,
        redirectResponse: NSURLResponse,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLProtocol : protocol, wasRedirectedToRequest : request, redirectResponse : redirectResponse)
    }
    unsafe fn URLProtocol_cachedResponseIsValid_(
        &self,
        protocol: NSURLProtocol,
        cachedResponse: NSCachedURLResponse,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLProtocol : protocol, cachedResponseIsValid : cachedResponse)
    }
    unsafe fn URLProtocol_didReceiveResponse_cacheStoragePolicy_(
        &self,
        protocol: NSURLProtocol,
        response: NSURLResponse,
        policy: NSURLCacheStoragePolicy,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLProtocol : protocol, didReceiveResponse : response, cacheStoragePolicy : policy)
    }
    unsafe fn URLProtocol_didLoadData_(&self, protocol: NSURLProtocol, data: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLProtocol : protocol, didLoadData : data)
    }
    unsafe fn URLProtocolDidFinishLoading_(&self, protocol: NSURLProtocol)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLProtocolDidFinishLoading : protocol)
    }
    unsafe fn URLProtocol_didFailWithError_(&self, protocol: NSURLProtocol, error: NSError)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLProtocol : protocol, didFailWithError : error)
    }
    unsafe fn URLProtocol_didReceiveAuthenticationChallenge_(
        &self,
        protocol: NSURLProtocol,
        challenge: NSURLAuthenticationChallenge,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLProtocol : protocol, didReceiveAuthenticationChallenge : challenge)
    }
    unsafe fn URLProtocol_didCancelAuthenticationChallenge_(
        &self,
        protocol: NSURLProtocol,
        challenge: NSURLAuthenticationChallenge,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLProtocol : protocol, didCancelAuthenticationChallenge : challenge)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLProtocol(pub id);
impl std::ops::Deref for NSURLProtocol {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLProtocol {}
impl NSURLProtocol {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLProtocol").unwrap(), alloc) })
    }
}
impl INSObject for NSURLProtocol {}
impl PNSObject for NSURLProtocol {}
impl std::convert::TryFrom<NSObject> for NSURLProtocol {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSURLProtocol, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLProtocol").unwrap()) };
        if is_kind_of {
            Ok(NSURLProtocol(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSURLProtocol")
        }
    }
}
impl INSURLProtocol for NSURLProtocol {}
pub trait INSURLProtocol: Sized + std::ops::Deref {
    unsafe fn initWithRequest_cachedResponse_client_(
        &self,
        request: NSURLRequest,
        cachedResponse: NSCachedURLResponse,
        client: *mut u64,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithRequest : request, cachedResponse : cachedResponse, client : client)
    }
    unsafe fn startLoading(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startLoading)
    }
    unsafe fn stopLoading(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stopLoading)
    }
    unsafe fn client(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, client)
    }
    unsafe fn request(&self) -> NSURLRequest
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, request)
    }
    unsafe fn cachedResponse(&self) -> NSCachedURLResponse
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cachedResponse)
    }
    unsafe fn canInitWithRequest_(request: NSURLRequest) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLProtocol").unwrap(), canInitWithRequest : request)
    }
    unsafe fn canonicalRequestForRequest_(request: NSURLRequest) -> NSURLRequest
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLProtocol").unwrap(), canonicalRequestForRequest : request)
    }
    unsafe fn requestIsCacheEquivalent_toRequest_(a: NSURLRequest, b: NSURLRequest) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLProtocol").unwrap(), requestIsCacheEquivalent : a, toRequest : b)
    }
    unsafe fn propertyForKey_inRequest_(key: NSString, request: NSURLRequest) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLProtocol").unwrap(), propertyForKey : key, inRequest : request)
    }
    unsafe fn setProperty_forKey_inRequest_(value: id, key: NSString, request: NSMutableURLRequest)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLProtocol").unwrap(), setProperty : value, forKey : key, inRequest : request)
    }
    unsafe fn removePropertyForKey_inRequest_(key: NSString, request: NSMutableURLRequest)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLProtocol").unwrap(), removePropertyForKey : key, inRequest : request)
    }
    unsafe fn registerClass_(protocolClass: Class) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLProtocol").unwrap(), registerClass : protocolClass)
    }
    unsafe fn unregisterClass_(protocolClass: Class)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLProtocol").unwrap(), unregisterClass : protocolClass)
    }
}
impl NSURLProtocol_NSURLSessionTaskAdditions for NSURLProtocol {}
pub trait NSURLProtocol_NSURLSessionTaskAdditions: Sized + std::ops::Deref {
    unsafe fn initWithTask_cachedResponse_client_(
        &self,
        task: NSURLSessionTask,
        cachedResponse: NSCachedURLResponse,
        client: *mut u64,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithTask : task, cachedResponse : cachedResponse, client : client)
    }
    unsafe fn task(&self) -> NSURLSessionTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, task)
    }
    unsafe fn canInitWithTask_(task: NSURLSessionTask) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLProtocol").unwrap(), canInitWithTask : task)
    }
}
pub type NSURLRequestCachePolicy = NSUInteger;
pub type NSURLRequestNetworkServiceType = NSUInteger;
pub type NSURLRequestAttribution = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLRequest(pub id);
impl std::ops::Deref for NSURLRequest {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLRequest {}
impl NSURLRequest {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLRequest").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSURLRequest {}
impl PNSCopying for NSURLRequest {}
impl PNSMutableCopying for NSURLRequest {}
impl INSObject for NSURLRequest {}
impl PNSObject for NSURLRequest {}
impl std::convert::TryFrom<NSObject> for NSURLRequest {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSURLRequest, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLRequest").unwrap()) };
        if is_kind_of {
            Ok(NSURLRequest(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSURLRequest")
        }
    }
}
impl INSURLRequest for NSURLRequest {}
pub trait INSURLRequest: Sized + std::ops::Deref {
    unsafe fn initWithURL_(&self, URL: NSURL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithURL : URL)
    }
    unsafe fn initWithURL_cachePolicy_timeoutInterval_(
        &self,
        URL: NSURL,
        cachePolicy: NSURLRequestCachePolicy,
        timeoutInterval: NSTimeInterval,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithURL : URL, cachePolicy : cachePolicy, timeoutInterval : timeoutInterval)
    }
    unsafe fn URL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, URL)
    }
    unsafe fn cachePolicy(&self) -> NSURLRequestCachePolicy
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cachePolicy)
    }
    unsafe fn timeoutInterval(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeoutInterval)
    }
    unsafe fn mainDocumentURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mainDocumentURL)
    }
    unsafe fn networkServiceType(&self) -> NSURLRequestNetworkServiceType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, networkServiceType)
    }
    unsafe fn allowsCellularAccess(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowsCellularAccess)
    }
    unsafe fn allowsExpensiveNetworkAccess(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowsExpensiveNetworkAccess)
    }
    unsafe fn allowsConstrainedNetworkAccess(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowsConstrainedNetworkAccess)
    }
    unsafe fn allowsUltraConstrainedNetworkAccess(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowsUltraConstrainedNetworkAccess)
    }
    unsafe fn assumesHTTP3Capable(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, assumesHTTP3Capable)
    }
    unsafe fn attribution(&self) -> NSURLRequestAttribution
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attribution)
    }
    unsafe fn requiresDNSSECValidation(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requiresDNSSECValidation)
    }
    unsafe fn allowsPersistentDNS(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowsPersistentDNS)
    }
    unsafe fn cookiePartitionIdentifier(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cookiePartitionIdentifier)
    }
    unsafe fn requestWithURL_(URL: NSURL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLRequest").unwrap(), requestWithURL : URL)
    }
    unsafe fn requestWithURL_cachePolicy_timeoutInterval_(
        URL: NSURL,
        cachePolicy: NSURLRequestCachePolicy,
        timeoutInterval: NSTimeInterval,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLRequest").unwrap(), requestWithURL : URL, cachePolicy : cachePolicy, timeoutInterval : timeoutInterval)
    }
    unsafe fn supportsSecureCoding() -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLRequest").unwrap(), supportsSecureCoding)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMutableURLRequest(pub id);
impl std::ops::Deref for NSMutableURLRequest {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMutableURLRequest {}
impl NSMutableURLRequest {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMutableURLRequest").unwrap(), alloc) })
    }
}
impl INSURLRequest for NSMutableURLRequest {}
impl PNSSecureCoding for NSMutableURLRequest {}
impl PNSCopying for NSMutableURLRequest {}
impl PNSMutableCopying for NSMutableURLRequest {}
impl From<NSMutableURLRequest> for NSURLRequest {
    fn from(child: NSMutableURLRequest) -> NSURLRequest {
        NSURLRequest(child.0)
    }
}
impl std::convert::TryFrom<NSURLRequest> for NSMutableURLRequest {
    type Error = &'static str;
    fn try_from(parent: NSURLRequest) -> Result<NSMutableURLRequest, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMutableURLRequest").unwrap()) };
        if is_kind_of {
            Ok(NSMutableURLRequest(parent.0))
        } else {
            Err("This NSURLRequest cannot be downcasted to NSMutableURLRequest")
        }
    }
}
impl INSObject for NSMutableURLRequest {}
impl PNSObject for NSMutableURLRequest {}
impl INSMutableURLRequest for NSMutableURLRequest {}
pub trait INSMutableURLRequest: Sized + std::ops::Deref {
    unsafe fn URL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, URL)
    }
    unsafe fn setURL_(&self, URL: NSURL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setURL : URL)
    }
    unsafe fn cachePolicy(&self) -> NSURLRequestCachePolicy
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cachePolicy)
    }
    unsafe fn setCachePolicy_(&self, cachePolicy: NSURLRequestCachePolicy)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCachePolicy : cachePolicy)
    }
    unsafe fn timeoutInterval(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeoutInterval)
    }
    unsafe fn setTimeoutInterval_(&self, timeoutInterval: NSTimeInterval)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeoutInterval : timeoutInterval)
    }
    unsafe fn mainDocumentURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, mainDocumentURL)
    }
    unsafe fn setMainDocumentURL_(&self, mainDocumentURL: NSURL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMainDocumentURL : mainDocumentURL)
    }
    unsafe fn networkServiceType(&self) -> NSURLRequestNetworkServiceType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, networkServiceType)
    }
    unsafe fn setNetworkServiceType_(&self, networkServiceType: NSURLRequestNetworkServiceType)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNetworkServiceType : networkServiceType)
    }
    unsafe fn allowsCellularAccess(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowsCellularAccess)
    }
    unsafe fn setAllowsCellularAccess_(&self, allowsCellularAccess: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAllowsCellularAccess : allowsCellularAccess)
    }
    unsafe fn allowsExpensiveNetworkAccess(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowsExpensiveNetworkAccess)
    }
    unsafe fn setAllowsExpensiveNetworkAccess_(&self, allowsExpensiveNetworkAccess: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAllowsExpensiveNetworkAccess : allowsExpensiveNetworkAccess)
    }
    unsafe fn allowsConstrainedNetworkAccess(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowsConstrainedNetworkAccess)
    }
    unsafe fn setAllowsConstrainedNetworkAccess_(&self, allowsConstrainedNetworkAccess: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAllowsConstrainedNetworkAccess : allowsConstrainedNetworkAccess)
    }
    unsafe fn allowsUltraConstrainedNetworkAccess(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowsUltraConstrainedNetworkAccess)
    }
    unsafe fn setAllowsUltraConstrainedNetworkAccess_(
        &self,
        allowsUltraConstrainedNetworkAccess: BOOL,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAllowsUltraConstrainedNetworkAccess : allowsUltraConstrainedNetworkAccess)
    }
    unsafe fn assumesHTTP3Capable(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, assumesHTTP3Capable)
    }
    unsafe fn setAssumesHTTP3Capable_(&self, assumesHTTP3Capable: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAssumesHTTP3Capable : assumesHTTP3Capable)
    }
    unsafe fn attribution(&self) -> NSURLRequestAttribution
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attribution)
    }
    unsafe fn setAttribution_(&self, attribution: NSURLRequestAttribution)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttribution : attribution)
    }
    unsafe fn requiresDNSSECValidation(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requiresDNSSECValidation)
    }
    unsafe fn setRequiresDNSSECValidation_(&self, requiresDNSSECValidation: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRequiresDNSSECValidation : requiresDNSSECValidation)
    }
    unsafe fn allowsPersistentDNS(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowsPersistentDNS)
    }
    unsafe fn setAllowsPersistentDNS_(&self, allowsPersistentDNS: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAllowsPersistentDNS : allowsPersistentDNS)
    }
    unsafe fn cookiePartitionIdentifier(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cookiePartitionIdentifier)
    }
    unsafe fn setCookiePartitionIdentifier_(&self, cookiePartitionIdentifier: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCookiePartitionIdentifier : cookiePartitionIdentifier)
    }
}
impl NSURLRequest_NSHTTPURLRequest for NSURLRequest {}
pub trait NSURLRequest_NSHTTPURLRequest: Sized + std::ops::Deref {
    unsafe fn valueForHTTPHeaderField_(&self, field: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, valueForHTTPHeaderField : field)
    }
    unsafe fn HTTPMethod(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, HTTPMethod)
    }
    unsafe fn allHTTPHeaderFields(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allHTTPHeaderFields)
    }
    unsafe fn HTTPBody(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, HTTPBody)
    }
    unsafe fn HTTPBodyStream(&self) -> NSInputStream
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, HTTPBodyStream)
    }
    unsafe fn HTTPShouldHandleCookies(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, HTTPShouldHandleCookies)
    }
    unsafe fn HTTPShouldUsePipelining(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, HTTPShouldUsePipelining)
    }
}
impl NSMutableURLRequest_NSMutableHTTPURLRequest for NSMutableURLRequest {}
pub trait NSMutableURLRequest_NSMutableHTTPURLRequest: Sized + std::ops::Deref {
    unsafe fn setValue_forHTTPHeaderField_(&self, value: NSString, field: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValue : value, forHTTPHeaderField : field)
    }
    unsafe fn addValue_forHTTPHeaderField_(&self, value: NSString, field: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addValue : value, forHTTPHeaderField : field)
    }
    unsafe fn HTTPMethod(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, HTTPMethod)
    }
    unsafe fn setHTTPMethod_(&self, HTTPMethod: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHTTPMethod : HTTPMethod)
    }
    unsafe fn allHTTPHeaderFields(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allHTTPHeaderFields)
    }
    unsafe fn setAllHTTPHeaderFields_(&self, allHTTPHeaderFields: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAllHTTPHeaderFields : allHTTPHeaderFields)
    }
    unsafe fn HTTPBody(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, HTTPBody)
    }
    unsafe fn setHTTPBody_(&self, HTTPBody: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHTTPBody : HTTPBody)
    }
    unsafe fn HTTPBodyStream(&self) -> NSInputStream
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, HTTPBodyStream)
    }
    unsafe fn setHTTPBodyStream_(&self, HTTPBodyStream: NSInputStream)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHTTPBodyStream : HTTPBodyStream)
    }
    unsafe fn HTTPShouldHandleCookies(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, HTTPShouldHandleCookies)
    }
    unsafe fn setHTTPShouldHandleCookies_(&self, HTTPShouldHandleCookies: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHTTPShouldHandleCookies : HTTPShouldHandleCookies)
    }
    unsafe fn HTTPShouldUsePipelining(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, HTTPShouldUsePipelining)
    }
    unsafe fn setHTTPShouldUsePipelining_(&self, HTTPShouldUsePipelining: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHTTPShouldUsePipelining : HTTPShouldUsePipelining)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLResponse(pub id);
impl std::ops::Deref for NSURLResponse {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLResponse {}
impl NSURLResponse {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLResponse").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSURLResponse {}
impl PNSCopying for NSURLResponse {}
impl INSObject for NSURLResponse {}
impl PNSObject for NSURLResponse {}
impl std::convert::TryFrom<NSObject> for NSURLResponse {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSURLResponse, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLResponse").unwrap()) };
        if is_kind_of {
            Ok(NSURLResponse(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSURLResponse")
        }
    }
}
impl INSURLResponse for NSURLResponse {}
pub trait INSURLResponse: Sized + std::ops::Deref {
    unsafe fn initWithURL_MIMEType_expectedContentLength_textEncodingName_(
        &self,
        URL: NSURL,
        MIMEType: NSString,
        length: NSInteger,
        name: NSString,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithURL : URL, MIMEType : MIMEType, expectedContentLength : length, textEncodingName : name)
    }
    unsafe fn URL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, URL)
    }
    unsafe fn MIMEType(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, MIMEType)
    }
    unsafe fn expectedContentLength(&self) -> ::std::os::raw::c_longlong
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, expectedContentLength)
    }
    unsafe fn textEncodingName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, textEncodingName)
    }
    unsafe fn suggestedFilename(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, suggestedFilename)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSHTTPURLResponse(pub id);
impl std::ops::Deref for NSHTTPURLResponse {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSHTTPURLResponse {}
impl NSHTTPURLResponse {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSHTTPURLResponse").unwrap(), alloc) })
    }
}
impl INSURLResponse for NSHTTPURLResponse {}
impl PNSSecureCoding for NSHTTPURLResponse {}
impl PNSCopying for NSHTTPURLResponse {}
impl From<NSHTTPURLResponse> for NSURLResponse {
    fn from(child: NSHTTPURLResponse) -> NSURLResponse {
        NSURLResponse(child.0)
    }
}
impl std::convert::TryFrom<NSURLResponse> for NSHTTPURLResponse {
    type Error = &'static str;
    fn try_from(parent: NSURLResponse) -> Result<NSHTTPURLResponse, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSHTTPURLResponse").unwrap()) };
        if is_kind_of {
            Ok(NSHTTPURLResponse(parent.0))
        } else {
            Err("This NSURLResponse cannot be downcasted to NSHTTPURLResponse")
        }
    }
}
impl INSObject for NSHTTPURLResponse {}
impl PNSObject for NSHTTPURLResponse {}
impl INSHTTPURLResponse for NSHTTPURLResponse {}
pub trait INSHTTPURLResponse: Sized + std::ops::Deref {
    unsafe fn initWithURL_statusCode_HTTPVersion_headerFields_(
        &self,
        url: NSURL,
        statusCode: NSInteger,
        HTTPVersion: NSString,
        headerFields: NSDictionary,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithURL : url, statusCode : statusCode, HTTPVersion : HTTPVersion, headerFields : headerFields)
    }
    unsafe fn valueForHTTPHeaderField_(&self, field: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, valueForHTTPHeaderField : field)
    }
    unsafe fn statusCode(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statusCode)
    }
    unsafe fn allHeaderFields(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allHeaderFields)
    }
    unsafe fn localizedStringForStatusCode_(statusCode: NSInteger) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSHTTPURLResponse").unwrap(), localizedStringForStatusCode : statusCode)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUserDefaults(pub id);
impl std::ops::Deref for NSUserDefaults {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUserDefaults {}
impl NSUserDefaults {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUserDefaults").unwrap(), alloc) })
    }
}
impl INSObject for NSUserDefaults {}
impl PNSObject for NSUserDefaults {}
impl std::convert::TryFrom<NSObject> for NSUserDefaults {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSUserDefaults, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUserDefaults").unwrap()) };
        if is_kind_of {
            Ok(NSUserDefaults(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSUserDefaults")
        }
    }
}
impl INSUserDefaults for NSUserDefaults {}
pub trait INSUserDefaults: 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 initWithSuiteName_(&self, suitename: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithSuiteName : suitename)
    }
    unsafe fn initWithUser_(&self, username: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithUser : username)
    }
    unsafe fn objectForKey_(&self, defaultName: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectForKey : defaultName)
    }
    unsafe fn setObject_forKey_(&self, value: id, defaultName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setObject : value, forKey : defaultName)
    }
    unsafe fn removeObjectForKey_(&self, defaultName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObjectForKey : defaultName)
    }
    unsafe fn stringForKey_(&self, defaultName: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringForKey : defaultName)
    }
    unsafe fn arrayForKey_(&self, defaultName: NSString) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, arrayForKey : defaultName)
    }
    unsafe fn dictionaryForKey_(&self, defaultName: NSString) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dictionaryForKey : defaultName)
    }
    unsafe fn dataForKey_(&self, defaultName: NSString) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dataForKey : defaultName)
    }
    unsafe fn stringArrayForKey_(&self, defaultName: NSString) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringArrayForKey : defaultName)
    }
    unsafe fn integerForKey_(&self, defaultName: NSString) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, integerForKey : defaultName)
    }
    unsafe fn floatForKey_(&self, defaultName: NSString) -> f32
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, floatForKey : defaultName)
    }
    unsafe fn doubleForKey_(&self, defaultName: NSString) -> f64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, doubleForKey : defaultName)
    }
    unsafe fn boolForKey_(&self, defaultName: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, boolForKey : defaultName)
    }
    unsafe fn URLForKey_(&self, defaultName: NSString) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLForKey : defaultName)
    }
    unsafe fn setInteger_forKey_(&self, value: NSInteger, defaultName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInteger : value, forKey : defaultName)
    }
    unsafe fn setFloat_forKey_(&self, value: f32, defaultName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFloat : value, forKey : defaultName)
    }
    unsafe fn setDouble_forKey_(&self, value: f64, defaultName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDouble : value, forKey : defaultName)
    }
    unsafe fn setBool_forKey_(&self, value: BOOL, defaultName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBool : value, forKey : defaultName)
    }
    unsafe fn setURL_forKey_(&self, url: NSURL, defaultName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setURL : url, forKey : defaultName)
    }
    unsafe fn registerDefaults_(&self, registrationDictionary: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, registerDefaults : registrationDictionary)
    }
    unsafe fn addSuiteNamed_(&self, suiteName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addSuiteNamed : suiteName)
    }
    unsafe fn removeSuiteNamed_(&self, suiteName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeSuiteNamed : suiteName)
    }
    unsafe fn dictionaryRepresentation(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dictionaryRepresentation)
    }
    unsafe fn volatileDomainForName_(&self, domainName: NSString) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, volatileDomainForName : domainName)
    }
    unsafe fn setVolatileDomain_forName_(&self, domain: NSDictionary, domainName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVolatileDomain : domain, forName : domainName)
    }
    unsafe fn removeVolatileDomainForName_(&self, domainName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeVolatileDomainForName : domainName)
    }
    unsafe fn persistentDomainNames(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, persistentDomainNames)
    }
    unsafe fn persistentDomainForName_(&self, domainName: NSString) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, persistentDomainForName : domainName)
    }
    unsafe fn setPersistentDomain_forName_(&self, domain: NSDictionary, domainName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPersistentDomain : domain, forName : domainName)
    }
    unsafe fn removePersistentDomainForName_(&self, domainName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removePersistentDomainForName : domainName)
    }
    unsafe fn synchronize(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, synchronize)
    }
    unsafe fn objectIsForcedForKey_(&self, key: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectIsForcedForKey : key)
    }
    unsafe fn objectIsForcedForKey_inDomain_(&self, key: NSString, domain: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectIsForcedForKey : key, inDomain : domain)
    }
    unsafe fn volatileDomainNames(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, volatileDomainNames)
    }
    unsafe fn resetStandardUserDefaults()
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUserDefaults").unwrap(), resetStandardUserDefaults)
    }
    unsafe fn standardUserDefaults() -> NSUserDefaults
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUserDefaults").unwrap(), standardUserDefaults)
    }
}
pub type NSValueTransformerName = NSString;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSValueTransformer(pub id);
impl std::ops::Deref for NSValueTransformer {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSValueTransformer {}
impl NSValueTransformer {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSValueTransformer").unwrap(), alloc) })
    }
}
impl INSObject for NSValueTransformer {}
impl PNSObject for NSValueTransformer {}
impl std::convert::TryFrom<NSObject> for NSValueTransformer {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSValueTransformer, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSValueTransformer").unwrap()) };
        if is_kind_of {
            Ok(NSValueTransformer(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSValueTransformer")
        }
    }
}
impl INSValueTransformer for NSValueTransformer {}
pub trait INSValueTransformer: Sized + std::ops::Deref {
    unsafe fn transformedValue_(&self, value: id) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, transformedValue : value)
    }
    unsafe fn reverseTransformedValue_(&self, value: id) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, reverseTransformedValue : value)
    }
    unsafe fn setValueTransformer_forName_(transformer: NSValueTransformer, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSValueTransformer").unwrap(), setValueTransformer : transformer, forName : name)
    }
    unsafe fn valueTransformerForName_(name: NSString) -> NSValueTransformer
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSValueTransformer").unwrap(), valueTransformerForName : name)
    }
    unsafe fn valueTransformerNames() -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSValueTransformer").unwrap(), valueTransformerNames)
    }
    unsafe fn transformedValueClass() -> Class
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSValueTransformer").unwrap(), transformedValueClass)
    }
    unsafe fn allowsReverseTransformation() -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSValueTransformer").unwrap(), allowsReverseTransformation)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSSecureUnarchiveFromDataTransformer(pub id);
impl std::ops::Deref for NSSecureUnarchiveFromDataTransformer {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSSecureUnarchiveFromDataTransformer {}
impl NSSecureUnarchiveFromDataTransformer {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSSecureUnarchiveFromDataTransformer").unwrap(), alloc) })
    }
}
impl INSValueTransformer for NSSecureUnarchiveFromDataTransformer {}
impl From<NSSecureUnarchiveFromDataTransformer> for NSValueTransformer {
    fn from(child: NSSecureUnarchiveFromDataTransformer) -> NSValueTransformer {
        NSValueTransformer(child.0)
    }
}
impl std::convert::TryFrom<NSValueTransformer> for NSSecureUnarchiveFromDataTransformer {
    type Error = &'static str;
    fn try_from(
        parent: NSValueTransformer,
    ) -> Result<NSSecureUnarchiveFromDataTransformer, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSSecureUnarchiveFromDataTransformer").unwrap())
        };
        if is_kind_of {
            Ok(NSSecureUnarchiveFromDataTransformer(parent.0))
        } else {
            Err ("This NSValueTransformer cannot be downcasted to NSSecureUnarchiveFromDataTransformer" ,)
        }
    }
}
impl INSObject for NSSecureUnarchiveFromDataTransformer {}
impl PNSObject for NSSecureUnarchiveFromDataTransformer {}
impl INSSecureUnarchiveFromDataTransformer for NSSecureUnarchiveFromDataTransformer {}
pub trait INSSecureUnarchiveFromDataTransformer: Sized + std::ops::Deref {
    unsafe fn allowedTopLevelClasses() -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSSecureUnarchiveFromDataTransformer").unwrap(), allowedTopLevelClasses)
    }
}
pub type NSXMLParserExternalEntityResolvingPolicy = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSXMLParser(pub id);
impl std::ops::Deref for NSXMLParser {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSXMLParser {}
impl NSXMLParser {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLParser").unwrap(), alloc) })
    }
}
impl INSObject for NSXMLParser {}
impl PNSObject for NSXMLParser {}
impl std::convert::TryFrom<NSObject> for NSXMLParser {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSXMLParser, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSXMLParser").unwrap()) };
        if is_kind_of {
            Ok(NSXMLParser(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSXMLParser")
        }
    }
}
impl INSXMLParser for NSXMLParser {}
pub trait INSXMLParser: Sized + std::ops::Deref {
    unsafe fn initWithContentsOfURL_(&self, url: NSURL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfURL : url)
    }
    unsafe fn initWithData_(&self, data: NSData) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithData : data)
    }
    unsafe fn initWithStream_(&self, stream: NSInputStream) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithStream : stream)
    }
    unsafe fn parse(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, parse)
    }
    unsafe fn abortParsing(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, abortParsing)
    }
    unsafe fn delegate(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delegate)
    }
    unsafe fn setDelegate_(&self, delegate: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelegate : delegate)
    }
    unsafe fn shouldProcessNamespaces(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shouldProcessNamespaces)
    }
    unsafe fn setShouldProcessNamespaces_(&self, shouldProcessNamespaces: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setShouldProcessNamespaces : shouldProcessNamespaces)
    }
    unsafe fn shouldReportNamespacePrefixes(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shouldReportNamespacePrefixes)
    }
    unsafe fn setShouldReportNamespacePrefixes_(&self, shouldReportNamespacePrefixes: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setShouldReportNamespacePrefixes : shouldReportNamespacePrefixes)
    }
    unsafe fn externalEntityResolvingPolicy(&self) -> NSXMLParserExternalEntityResolvingPolicy
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, externalEntityResolvingPolicy)
    }
    unsafe fn setExternalEntityResolvingPolicy_(
        &self,
        externalEntityResolvingPolicy: NSXMLParserExternalEntityResolvingPolicy,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExternalEntityResolvingPolicy : externalEntityResolvingPolicy)
    }
    unsafe fn allowedExternalEntityURLs(&self) -> NSSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowedExternalEntityURLs)
    }
    unsafe fn setAllowedExternalEntityURLs_(&self, allowedExternalEntityURLs: NSSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAllowedExternalEntityURLs : allowedExternalEntityURLs)
    }
    unsafe fn parserError(&self) -> NSError
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, parserError)
    }
    unsafe fn shouldResolveExternalEntities(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shouldResolveExternalEntities)
    }
    unsafe fn setShouldResolveExternalEntities_(&self, shouldResolveExternalEntities: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setShouldResolveExternalEntities : shouldResolveExternalEntities)
    }
}
impl NSXMLParser_NSXMLParserLocatorAdditions for NSXMLParser {}
pub trait NSXMLParser_NSXMLParserLocatorAdditions: Sized + std::ops::Deref {
    unsafe fn publicID(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, publicID)
    }
    unsafe fn systemID(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, systemID)
    }
    unsafe fn lineNumber(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lineNumber)
    }
    unsafe fn columnNumber(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, columnNumber)
    }
}
pub trait PNSXMLParserDelegate: Sized + std::ops::Deref {
    unsafe fn parserDidStartDocument_(&self, parser: NSXMLParser)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, parserDidStartDocument : parser)
    }
    unsafe fn parserDidEndDocument_(&self, parser: NSXMLParser)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, parserDidEndDocument : parser)
    }
    unsafe fn parser_foundNotationDeclarationWithName_publicID_systemID_(
        &self,
        parser: NSXMLParser,
        name: NSString,
        publicID: NSString,
        systemID: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, parser : parser, foundNotationDeclarationWithName : name, publicID : publicID, systemID : systemID)
    }
    unsafe fn parser_foundUnparsedEntityDeclarationWithName_publicID_systemID_notationName_(
        &self,
        parser: NSXMLParser,
        name: NSString,
        publicID: NSString,
        systemID: NSString,
        notationName: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, parser : parser, foundUnparsedEntityDeclarationWithName : name, publicID : publicID, systemID : systemID, notationName : notationName)
    }
    unsafe fn parser_foundAttributeDeclarationWithName_forElement_type_defaultValue_(
        &self,
        parser: NSXMLParser,
        attributeName: NSString,
        elementName: NSString,
        type_: NSString,
        defaultValue: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, parser : parser, foundAttributeDeclarationWithName : attributeName, forElement : elementName, r#type : type_, defaultValue : defaultValue)
    }
    unsafe fn parser_foundElementDeclarationWithName_model_(
        &self,
        parser: NSXMLParser,
        elementName: NSString,
        model: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, parser : parser, foundElementDeclarationWithName : elementName, model : model)
    }
    unsafe fn parser_foundInternalEntityDeclarationWithName_value_(
        &self,
        parser: NSXMLParser,
        name: NSString,
        value: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, parser : parser, foundInternalEntityDeclarationWithName : name, value : value)
    }
    unsafe fn parser_foundExternalEntityDeclarationWithName_publicID_systemID_(
        &self,
        parser: NSXMLParser,
        name: NSString,
        publicID: NSString,
        systemID: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, parser : parser, foundExternalEntityDeclarationWithName : name, publicID : publicID, systemID : systemID)
    }
    unsafe fn parser_didStartElement_namespaceURI_qualifiedName_attributes_(
        &self,
        parser: NSXMLParser,
        elementName: NSString,
        namespaceURI: NSString,
        qName: NSString,
        attributeDict: NSDictionary,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, parser : parser, didStartElement : elementName, namespaceURI : namespaceURI, qualifiedName : qName, attributes : attributeDict)
    }
    unsafe fn parser_didEndElement_namespaceURI_qualifiedName_(
        &self,
        parser: NSXMLParser,
        elementName: NSString,
        namespaceURI: NSString,
        qName: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, parser : parser, didEndElement : elementName, namespaceURI : namespaceURI, qualifiedName : qName)
    }
    unsafe fn parser_didStartMappingPrefix_toURI_(
        &self,
        parser: NSXMLParser,
        prefix: NSString,
        namespaceURI: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, parser : parser, didStartMappingPrefix : prefix, toURI : namespaceURI)
    }
    unsafe fn parser_didEndMappingPrefix_(&self, parser: NSXMLParser, prefix: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, parser : parser, didEndMappingPrefix : prefix)
    }
    unsafe fn parser_foundCharacters_(&self, parser: NSXMLParser, string: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, parser : parser, foundCharacters : string)
    }
    unsafe fn parser_foundIgnorableWhitespace_(
        &self,
        parser: NSXMLParser,
        whitespaceString: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, parser : parser, foundIgnorableWhitespace : whitespaceString)
    }
    unsafe fn parser_foundProcessingInstructionWithTarget_data_(
        &self,
        parser: NSXMLParser,
        target: NSString,
        data: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, parser : parser, foundProcessingInstructionWithTarget : target, data : data)
    }
    unsafe fn parser_foundComment_(&self, parser: NSXMLParser, comment: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, parser : parser, foundComment : comment)
    }
    unsafe fn parser_foundCDATA_(&self, parser: NSXMLParser, CDATABlock: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, parser : parser, foundCDATA : CDATABlock)
    }
    unsafe fn parser_resolveExternalEntityName_systemID_(
        &self,
        parser: NSXMLParser,
        name: NSString,
        systemID: NSString,
    ) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, parser : parser, resolveExternalEntityName : name, systemID : systemID)
    }
    unsafe fn parser_parseErrorOccurred_(&self, parser: NSXMLParser, parseError: NSError)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, parser : parser, parseErrorOccurred : parseError)
    }
    unsafe fn parser_validationErrorOccurred_(&self, parser: NSXMLParser, validationError: NSError)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, parser : parser, validationErrorOccurred : validationError)
    }
}
pub type NSXMLParserError = NSInteger;
pub trait PNSXPCProxyCreating: Sized + std::ops::Deref {
    unsafe fn remoteObjectProxy(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, remoteObjectProxy)
    }
    unsafe fn remoteObjectProxyWithErrorHandler_(&self, handler: *mut ::std::os::raw::c_void) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, remoteObjectProxyWithErrorHandler : handler)
    }
    unsafe fn synchronousRemoteObjectProxyWithErrorHandler_(
        &self,
        handler: *mut ::std::os::raw::c_void,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, synchronousRemoteObjectProxyWithErrorHandler : handler)
    }
}
pub type NSXPCConnectionOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSXPCConnection(pub id);
impl std::ops::Deref for NSXPCConnection {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSXPCConnection {}
impl NSXPCConnection {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSXPCConnection").unwrap(), alloc) })
    }
}
impl PNSXPCProxyCreating for NSXPCConnection {}
impl INSObject for NSXPCConnection {}
impl PNSObject for NSXPCConnection {}
impl std::convert::TryFrom<NSObject> for NSXPCConnection {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSXPCConnection, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSXPCConnection").unwrap()) };
        if is_kind_of {
            Ok(NSXPCConnection(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSXPCConnection")
        }
    }
}
impl INSXPCConnection for NSXPCConnection {}
pub trait INSXPCConnection: Sized + std::ops::Deref {
    unsafe fn initWithServiceName_(&self, serviceName: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithServiceName : serviceName)
    }
    unsafe fn initWithMachServiceName_options_(
        &self,
        name: NSString,
        options: NSXPCConnectionOptions,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithMachServiceName : name, options : options)
    }
    unsafe fn initWithListenerEndpoint_(&self, endpoint: NSXPCListenerEndpoint) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithListenerEndpoint : endpoint)
    }
    unsafe fn remoteObjectProxyWithErrorHandler_(&self, handler: *mut ::std::os::raw::c_void) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, remoteObjectProxyWithErrorHandler : handler)
    }
    unsafe fn synchronousRemoteObjectProxyWithErrorHandler_(
        &self,
        handler: *mut ::std::os::raw::c_void,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, synchronousRemoteObjectProxyWithErrorHandler : handler)
    }
    unsafe fn resume(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, resume)
    }
    unsafe fn suspend(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, suspend)
    }
    unsafe fn activate(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, activate)
    }
    unsafe fn invalidate(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invalidate)
    }
    unsafe fn scheduleSendBarrierBlock_(&self, block: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scheduleSendBarrierBlock : block)
    }
    unsafe fn setCodeSigningRequirement_(&self, requirement: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCodeSigningRequirement : requirement)
    }
    unsafe fn serviceName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serviceName)
    }
    unsafe fn endpoint(&self) -> NSXPCListenerEndpoint
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoint)
    }
    unsafe fn exportedInterface(&self) -> NSXPCInterface
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, exportedInterface)
    }
    unsafe fn setExportedInterface_(&self, exportedInterface: NSXPCInterface)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExportedInterface : exportedInterface)
    }
    unsafe fn exportedObject(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, exportedObject)
    }
    unsafe fn setExportedObject_(&self, exportedObject: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExportedObject : exportedObject)
    }
    unsafe fn remoteObjectInterface(&self) -> NSXPCInterface
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, remoteObjectInterface)
    }
    unsafe fn setRemoteObjectInterface_(&self, remoteObjectInterface: NSXPCInterface)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRemoteObjectInterface : remoteObjectInterface)
    }
    unsafe fn remoteObjectProxy(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, remoteObjectProxy)
    }
    unsafe fn interruptionHandler(&self) -> *mut ::std::os::raw::c_void
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, interruptionHandler)
    }
    unsafe fn setInterruptionHandler_(&self, interruptionHandler: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInterruptionHandler : interruptionHandler)
    }
    unsafe fn invalidationHandler(&self) -> *mut ::std::os::raw::c_void
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invalidationHandler)
    }
    unsafe fn setInvalidationHandler_(&self, invalidationHandler: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInvalidationHandler : invalidationHandler)
    }
    unsafe fn auditSessionIdentifier(&self) -> au_asid_t
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, auditSessionIdentifier)
    }
    unsafe fn processIdentifier(&self) -> pid_t
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, processIdentifier)
    }
    unsafe fn effectiveUserIdentifier(&self) -> uid_t
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, effectiveUserIdentifier)
    }
    unsafe fn effectiveGroupIdentifier(&self) -> gid_t
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, effectiveGroupIdentifier)
    }
    unsafe fn currentConnection() -> NSXPCConnection
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSXPCConnection").unwrap(), currentConnection)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSXPCListener(pub id);
impl std::ops::Deref for NSXPCListener {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSXPCListener {}
impl NSXPCListener {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSXPCListener").unwrap(), alloc) })
    }
}
impl INSObject for NSXPCListener {}
impl PNSObject for NSXPCListener {}
impl std::convert::TryFrom<NSObject> for NSXPCListener {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSXPCListener, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSXPCListener").unwrap()) };
        if is_kind_of {
            Ok(NSXPCListener(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSXPCListener")
        }
    }
}
impl INSXPCListener for NSXPCListener {}
pub trait INSXPCListener: Sized + std::ops::Deref {
    unsafe fn initWithMachServiceName_(&self, name: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithMachServiceName : name)
    }
    unsafe fn resume(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, resume)
    }
    unsafe fn suspend(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, suspend)
    }
    unsafe fn activate(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, activate)
    }
    unsafe fn invalidate(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invalidate)
    }
    unsafe fn setConnectionCodeSigningRequirement_(&self, requirement: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setConnectionCodeSigningRequirement : requirement)
    }
    unsafe fn delegate(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delegate)
    }
    unsafe fn setDelegate_(&self, delegate: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelegate : delegate)
    }
    unsafe fn endpoint(&self) -> NSXPCListenerEndpoint
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endpoint)
    }
    unsafe fn serviceListener() -> NSXPCListener
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSXPCListener").unwrap(), serviceListener)
    }
    unsafe fn anonymousListener() -> NSXPCListener
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSXPCListener").unwrap(), anonymousListener)
    }
}
pub trait PNSXPCListenerDelegate: Sized + std::ops::Deref {
    unsafe fn listener_shouldAcceptNewConnection_(
        &self,
        listener: NSXPCListener,
        newConnection: NSXPCConnection,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, listener : listener, shouldAcceptNewConnection : newConnection)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSXPCInterface(pub id);
impl std::ops::Deref for NSXPCInterface {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSXPCInterface {}
impl NSXPCInterface {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSXPCInterface").unwrap(), alloc) })
    }
}
impl INSObject for NSXPCInterface {}
impl PNSObject for NSXPCInterface {}
impl std::convert::TryFrom<NSObject> for NSXPCInterface {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSXPCInterface, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSXPCInterface").unwrap()) };
        if is_kind_of {
            Ok(NSXPCInterface(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSXPCInterface")
        }
    }
}
impl INSXPCInterface for NSXPCInterface {}
pub trait INSXPCInterface: Sized + std::ops::Deref {
    unsafe fn setClasses_forSelector_argumentIndex_ofReply_(
        &self,
        classes: NSSet,
        sel: objc2::runtime::Sel,
        arg: NSUInteger,
        ofReply: BOOL,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setClasses : classes, forSelector : sel, argumentIndex : arg, ofReply : ofReply)
    }
    unsafe fn classesForSelector_argumentIndex_ofReply_(
        &self,
        sel: objc2::runtime::Sel,
        arg: NSUInteger,
        ofReply: BOOL,
    ) -> NSSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, classesForSelector : sel, argumentIndex : arg, ofReply : ofReply)
    }
    unsafe fn setInterface_forSelector_argumentIndex_ofReply_(
        &self,
        ifc: NSXPCInterface,
        sel: objc2::runtime::Sel,
        arg: NSUInteger,
        ofReply: BOOL,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInterface : ifc, forSelector : sel, argumentIndex : arg, ofReply : ofReply)
    }
    unsafe fn interfaceForSelector_argumentIndex_ofReply_(
        &self,
        sel: objc2::runtime::Sel,
        arg: NSUInteger,
        ofReply: BOOL,
    ) -> NSXPCInterface
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, interfaceForSelector : sel, argumentIndex : arg, ofReply : ofReply)
    }
    unsafe fn setXPCType_forSelector_argumentIndex_ofReply_(
        &self,
        type_: xpc_type_t,
        sel: objc2::runtime::Sel,
        arg: NSUInteger,
        ofReply: BOOL,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setXPCType : type_, forSelector : sel, argumentIndex : arg, ofReply : ofReply)
    }
    unsafe fn XPCTypeForSelector_argumentIndex_ofReply_(
        &self,
        sel: objc2::runtime::Sel,
        arg: NSUInteger,
        ofReply: BOOL,
    ) -> xpc_type_t
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, XPCTypeForSelector : sel, argumentIndex : arg, ofReply : ofReply)
    }
    unsafe fn protocol(&self) -> Protocol
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, protocol)
    }
    unsafe fn setProtocol_(&self, protocol: Protocol)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProtocol : protocol)
    }
    unsafe fn interfaceWithProtocol_(protocol: Protocol) -> NSXPCInterface
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSXPCInterface").unwrap(), interfaceWithProtocol : protocol)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSXPCListenerEndpoint(pub id);
impl std::ops::Deref for NSXPCListenerEndpoint {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSXPCListenerEndpoint {}
impl NSXPCListenerEndpoint {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSXPCListenerEndpoint").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSXPCListenerEndpoint {}
impl INSObject for NSXPCListenerEndpoint {}
impl PNSObject for NSXPCListenerEndpoint {}
impl std::convert::TryFrom<NSObject> for NSXPCListenerEndpoint {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSXPCListenerEndpoint, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSXPCListenerEndpoint").unwrap()) };
        if is_kind_of {
            Ok(NSXPCListenerEndpoint(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSXPCListenerEndpoint")
        }
    }
}
impl INSXPCListenerEndpoint for NSXPCListenerEndpoint {}
pub trait INSXPCListenerEndpoint: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSXPCCoder(pub id);
impl std::ops::Deref for NSXPCCoder {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSXPCCoder {}
impl NSXPCCoder {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSXPCCoder").unwrap(), alloc) })
    }
}
impl INSCoder for NSXPCCoder {}
impl std::convert::TryFrom<NSCoder> for NSXPCCoder {
    type Error = &'static str;
    fn try_from(parent: NSCoder) -> Result<NSXPCCoder, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSXPCCoder").unwrap()) };
        if is_kind_of {
            Ok(NSXPCCoder(parent.0))
        } else {
            Err("This NSCoder cannot be downcasted to NSXPCCoder")
        }
    }
}
impl INSObject for NSXPCCoder {}
impl PNSObject for NSXPCCoder {}
impl INSXPCCoder for NSXPCCoder {}
pub trait INSXPCCoder: Sized + std::ops::Deref {
    unsafe fn encodeXPCObject_forKey_(&self, xpcObject: NSObject, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeXPCObject : xpcObject, forKey : key)
    }
    unsafe fn decodeXPCObjectOfType_forKey_(&self, type_: xpc_type_t, key: NSString) -> xpc_object_t
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeXPCObjectOfType : type_, forKey : key)
    }
    unsafe fn userInfo(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userInfo)
    }
    unsafe fn setUserInfo_(&self, userInfo: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserInfo : userInfo)
    }
    unsafe fn connection(&self) -> NSXPCConnection
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, connection)
    }
}
pub type NSByteCountFormatterUnits = NSUInteger;
pub type NSByteCountFormatterCountStyle = NSInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSByteCountFormatter(pub id);
impl std::ops::Deref for NSByteCountFormatter {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSByteCountFormatter {}
impl NSByteCountFormatter {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSByteCountFormatter").unwrap(), alloc) })
    }
}
impl INSFormatter for NSByteCountFormatter {}
impl PNSCopying for NSByteCountFormatter {}
impl PNSCoding for NSByteCountFormatter {}
impl std::convert::TryFrom<NSFormatter> for NSByteCountFormatter {
    type Error = &'static str;
    fn try_from(parent: NSFormatter) -> Result<NSByteCountFormatter, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSByteCountFormatter").unwrap()) };
        if is_kind_of {
            Ok(NSByteCountFormatter(parent.0))
        } else {
            Err("This NSFormatter cannot be downcasted to NSByteCountFormatter")
        }
    }
}
impl INSObject for NSByteCountFormatter {}
impl PNSObject for NSByteCountFormatter {}
impl INSByteCountFormatter for NSByteCountFormatter {}
pub trait INSByteCountFormatter: Sized + std::ops::Deref {
    unsafe fn stringFromByteCount_(&self, byteCount: ::std::os::raw::c_longlong) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringFromByteCount : byteCount)
    }
    unsafe fn stringFromMeasurement_(&self, measurement: NSMeasurement) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringFromMeasurement : measurement)
    }
    unsafe fn stringForObjectValue_(&self, obj: id) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringForObjectValue : obj)
    }
    unsafe fn allowedUnits(&self) -> NSByteCountFormatterUnits
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowedUnits)
    }
    unsafe fn setAllowedUnits_(&self, allowedUnits: NSByteCountFormatterUnits)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAllowedUnits : allowedUnits)
    }
    unsafe fn countStyle(&self) -> NSByteCountFormatterCountStyle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, countStyle)
    }
    unsafe fn setCountStyle_(&self, countStyle: NSByteCountFormatterCountStyle)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCountStyle : countStyle)
    }
    unsafe fn allowsNonnumericFormatting(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowsNonnumericFormatting)
    }
    unsafe fn setAllowsNonnumericFormatting_(&self, allowsNonnumericFormatting: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAllowsNonnumericFormatting : allowsNonnumericFormatting)
    }
    unsafe fn includesUnit(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, includesUnit)
    }
    unsafe fn setIncludesUnit_(&self, includesUnit: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIncludesUnit : includesUnit)
    }
    unsafe fn includesCount(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, includesCount)
    }
    unsafe fn setIncludesCount_(&self, includesCount: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIncludesCount : includesCount)
    }
    unsafe fn includesActualByteCount(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, includesActualByteCount)
    }
    unsafe fn setIncludesActualByteCount_(&self, includesActualByteCount: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIncludesActualByteCount : includesActualByteCount)
    }
    unsafe fn isAdaptive(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isAdaptive)
    }
    unsafe fn setAdaptive_(&self, adaptive: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAdaptive : adaptive)
    }
    unsafe fn zeroPadsFractionDigits(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, zeroPadsFractionDigits)
    }
    unsafe fn setZeroPadsFractionDigits_(&self, zeroPadsFractionDigits: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setZeroPadsFractionDigits : zeroPadsFractionDigits)
    }
    unsafe fn formattingContext(&self) -> NSFormattingContext
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, formattingContext)
    }
    unsafe fn setFormattingContext_(&self, formattingContext: NSFormattingContext)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFormattingContext : formattingContext)
    }
    unsafe fn stringFromByteCount_countStyle_(
        byteCount: ::std::os::raw::c_longlong,
        countStyle: NSByteCountFormatterCountStyle,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSByteCountFormatter").unwrap(), stringFromByteCount : byteCount, countStyle : countStyle)
    }
    unsafe fn stringFromMeasurement_countStyle_(
        measurement: NSMeasurement,
        countStyle: NSByteCountFormatterCountStyle,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSByteCountFormatter").unwrap(), stringFromMeasurement : measurement, countStyle : countStyle)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSCache(pub id);
impl std::ops::Deref for NSCache {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSCache {}
impl NSCache {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSCache").unwrap(), alloc) })
    }
}
impl INSObject for NSCache {}
impl PNSObject for NSCache {}
impl std::convert::TryFrom<NSObject> for NSCache {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSCache, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSCache").unwrap()) };
        if is_kind_of {
            Ok(NSCache(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSCache")
        }
    }
}
impl<KeyType: 'static, ObjectType: 'static> INSCache<KeyType, ObjectType> for NSCache {}
pub trait INSCache<KeyType: 'static, ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn objectForKey_(&self, key: id) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectForKey : key)
    }
    unsafe fn setObject_forKey_(&self, obj: id, key: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setObject : obj, forKey : key)
    }
    unsafe fn setObject_forKey_cost_(&self, obj: id, key: id, g: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setObject : obj, forKey : key, cost : g)
    }
    unsafe fn removeObjectForKey_(&self, key: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObjectForKey : key)
    }
    unsafe fn removeAllObjects(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, removeAllObjects)
    }
    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 delegate(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delegate)
    }
    unsafe fn setDelegate_(&self, delegate: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelegate : delegate)
    }
    unsafe fn totalCostLimit(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, totalCostLimit)
    }
    unsafe fn setTotalCostLimit_(&self, totalCostLimit: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTotalCostLimit : totalCostLimit)
    }
    unsafe fn countLimit(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, countLimit)
    }
    unsafe fn setCountLimit_(&self, countLimit: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCountLimit : countLimit)
    }
    unsafe fn evictsObjectsWithDiscardedContent(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, evictsObjectsWithDiscardedContent)
    }
    unsafe fn setEvictsObjectsWithDiscardedContent_(&self, evictsObjectsWithDiscardedContent: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEvictsObjectsWithDiscardedContent : evictsObjectsWithDiscardedContent)
    }
}
pub trait PNSCacheDelegate: Sized + std::ops::Deref {
    unsafe fn cache_willEvictObject_(&self, cache: NSCache, obj: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cache : cache, willEvictObject : obj)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSPredicate(pub id);
impl std::ops::Deref for NSPredicate {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSPredicate {}
impl NSPredicate {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSPredicate").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSPredicate {}
impl PNSCopying for NSPredicate {}
impl INSObject for NSPredicate {}
impl PNSObject for NSPredicate {}
impl std::convert::TryFrom<NSObject> for NSPredicate {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSPredicate, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSPredicate").unwrap()) };
        if is_kind_of {
            Ok(NSPredicate(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSPredicate")
        }
    }
}
impl INSPredicate for NSPredicate {}
pub trait INSPredicate: Sized + std::ops::Deref {
    unsafe fn predicateWithSubstitutionVariables_(&self, variables: NSDictionary) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, predicateWithSubstitutionVariables : variables)
    }
    unsafe fn evaluateWithObject_(&self, object: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, evaluateWithObject : object)
    }
    unsafe fn evaluateWithObject_substitutionVariables_(
        &self,
        object: id,
        bindings: NSDictionary,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, evaluateWithObject : object, substitutionVariables : bindings)
    }
    unsafe fn allowEvaluation(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowEvaluation)
    }
    unsafe fn predicateFormat(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, predicateFormat)
    }
    unsafe fn predicateWithFormat_argumentArray_(
        predicateFormat: NSString,
        arguments: NSArray,
    ) -> NSPredicate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPredicate").unwrap(), predicateWithFormat : predicateFormat, argumentArray : arguments)
    }
    unsafe fn predicateWithFormat_(predicateFormat: NSString) -> NSPredicate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPredicate").unwrap(), predicateWithFormat : predicateFormat)
    }
    unsafe fn predicateWithFormat_arguments_(
        predicateFormat: NSString,
        argList: va_list,
    ) -> NSPredicate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPredicate").unwrap(), predicateWithFormat : predicateFormat, arguments : argList)
    }
    unsafe fn predicateFromMetadataQueryString_(queryString: NSString) -> NSPredicate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPredicate").unwrap(), predicateFromMetadataQueryString : queryString)
    }
    unsafe fn predicateWithValue_(value: BOOL) -> NSPredicate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPredicate").unwrap(), predicateWithValue : value)
    }
    unsafe fn predicateWithBlock_(block: *mut ::std::os::raw::c_void) -> NSPredicate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPredicate").unwrap(), predicateWithBlock : block)
    }
}
impl<ObjectType: 'static> NSArray_NSPredicateSupport<ObjectType> for NSArray {}
pub trait NSArray_NSPredicateSupport<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn filteredArrayUsingPredicate_(&self, predicate: NSPredicate) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, filteredArrayUsingPredicate : predicate)
    }
}
impl<ObjectType: 'static> NSMutableArray_NSPredicateSupport<ObjectType> for NSMutableArray {}
pub trait NSMutableArray_NSPredicateSupport<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn filterUsingPredicate_(&self, predicate: NSPredicate)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, filterUsingPredicate : predicate)
    }
}
impl<ObjectType: 'static> NSSet_NSPredicateSupport<ObjectType> for NSSet {}
pub trait NSSet_NSPredicateSupport<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn filteredSetUsingPredicate_(&self, predicate: NSPredicate) -> NSSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, filteredSetUsingPredicate : predicate)
    }
}
impl<ObjectType: 'static> NSMutableSet_NSPredicateSupport<ObjectType> for NSMutableSet {}
pub trait NSMutableSet_NSPredicateSupport<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn filterUsingPredicate_(&self, predicate: NSPredicate)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, filterUsingPredicate : predicate)
    }
}
impl<ObjectType: 'static> NSOrderedSet_NSPredicateSupport<ObjectType> for NSOrderedSet {}
pub trait NSOrderedSet_NSPredicateSupport<ObjectType: 'static>: Sized + std::ops::Deref {
    unsafe fn filteredOrderedSetUsingPredicate_(&self, p: NSPredicate) -> NSOrderedSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, filteredOrderedSetUsingPredicate : p)
    }
}
impl<ObjectType: 'static> NSMutableOrderedSet_NSPredicateSupport<ObjectType>
    for NSMutableOrderedSet
{
}
pub trait NSMutableOrderedSet_NSPredicateSupport<ObjectType: 'static>:
    Sized + std::ops::Deref
{
    unsafe fn filterUsingPredicate_(&self, p: NSPredicate)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, filterUsingPredicate : p)
    }
}
pub type NSComparisonPredicateOptions = NSUInteger;
pub type NSComparisonPredicateModifier = NSUInteger;
pub type NSPredicateOperatorType = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSComparisonPredicate(pub id);
impl std::ops::Deref for NSComparisonPredicate {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSComparisonPredicate {}
impl NSComparisonPredicate {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSComparisonPredicate").unwrap(), alloc) })
    }
}
impl INSPredicate for NSComparisonPredicate {}
impl PNSSecureCoding for NSComparisonPredicate {}
impl PNSCopying for NSComparisonPredicate {}
impl From<NSComparisonPredicate> for NSPredicate {
    fn from(child: NSComparisonPredicate) -> NSPredicate {
        NSPredicate(child.0)
    }
}
impl std::convert::TryFrom<NSPredicate> for NSComparisonPredicate {
    type Error = &'static str;
    fn try_from(parent: NSPredicate) -> Result<NSComparisonPredicate, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSComparisonPredicate").unwrap()) };
        if is_kind_of {
            Ok(NSComparisonPredicate(parent.0))
        } else {
            Err("This NSPredicate cannot be downcasted to NSComparisonPredicate")
        }
    }
}
impl INSObject for NSComparisonPredicate {}
impl PNSObject for NSComparisonPredicate {}
impl INSComparisonPredicate for NSComparisonPredicate {}
pub trait INSComparisonPredicate: Sized + std::ops::Deref {
    unsafe fn initWithLeftExpression_rightExpression_modifier_type_options_(
        &self,
        lhs: NSExpression,
        rhs: NSExpression,
        modifier: NSComparisonPredicateModifier,
        type_: NSPredicateOperatorType,
        options: NSComparisonPredicateOptions,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithLeftExpression : lhs, rightExpression : rhs, modifier : modifier, r#type : type_, options : options)
    }
    unsafe fn initWithLeftExpression_rightExpression_customSelector_(
        &self,
        lhs: NSExpression,
        rhs: NSExpression,
        selector: objc2::runtime::Sel,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithLeftExpression : lhs, rightExpression : rhs, customSelector : selector)
    }
    unsafe fn initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
    unsafe fn predicateOperatorType(&self) -> NSPredicateOperatorType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, predicateOperatorType)
    }
    unsafe fn comparisonPredicateModifier(&self) -> NSComparisonPredicateModifier
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, comparisonPredicateModifier)
    }
    unsafe fn leftExpression(&self) -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, leftExpression)
    }
    unsafe fn rightExpression(&self) -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rightExpression)
    }
    unsafe fn customSelector(&self) -> objc2::runtime::Sel
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, customSelector)
    }
    unsafe fn options(&self) -> NSComparisonPredicateOptions
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, options)
    }
    unsafe fn predicateWithLeftExpression_rightExpression_modifier_type_options_(
        lhs: NSExpression,
        rhs: NSExpression,
        modifier: NSComparisonPredicateModifier,
        type_: NSPredicateOperatorType,
        options: NSComparisonPredicateOptions,
    ) -> NSComparisonPredicate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSComparisonPredicate").unwrap(), predicateWithLeftExpression : lhs, rightExpression : rhs, modifier : modifier, r#type : type_, options : options)
    }
    unsafe fn predicateWithLeftExpression_rightExpression_customSelector_(
        lhs: NSExpression,
        rhs: NSExpression,
        selector: objc2::runtime::Sel,
    ) -> NSComparisonPredicate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSComparisonPredicate").unwrap(), predicateWithLeftExpression : lhs, rightExpression : rhs, customSelector : selector)
    }
}
pub type NSCompoundPredicateType = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSCompoundPredicate(pub id);
impl std::ops::Deref for NSCompoundPredicate {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSCompoundPredicate {}
impl NSCompoundPredicate {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSCompoundPredicate").unwrap(), alloc) })
    }
}
impl INSPredicate for NSCompoundPredicate {}
impl PNSSecureCoding for NSCompoundPredicate {}
impl PNSCopying for NSCompoundPredicate {}
impl std::convert::TryFrom<NSPredicate> for NSCompoundPredicate {
    type Error = &'static str;
    fn try_from(parent: NSPredicate) -> Result<NSCompoundPredicate, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSCompoundPredicate").unwrap()) };
        if is_kind_of {
            Ok(NSCompoundPredicate(parent.0))
        } else {
            Err("This NSPredicate cannot be downcasted to NSCompoundPredicate")
        }
    }
}
impl INSObject for NSCompoundPredicate {}
impl PNSObject for NSCompoundPredicate {}
impl INSCompoundPredicate for NSCompoundPredicate {}
pub trait INSCompoundPredicate: Sized + std::ops::Deref {
    unsafe fn initWithType_subpredicates_(
        &self,
        type_: NSCompoundPredicateType,
        subpredicates: NSArray,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithType : type_, subpredicates : subpredicates)
    }
    unsafe fn initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
    unsafe fn compoundPredicateType(&self) -> NSCompoundPredicateType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, compoundPredicateType)
    }
    unsafe fn subpredicates(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, subpredicates)
    }
    unsafe fn andPredicateWithSubpredicates_(subpredicates: NSArray) -> NSCompoundPredicate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCompoundPredicate").unwrap(), andPredicateWithSubpredicates : subpredicates)
    }
    unsafe fn orPredicateWithSubpredicates_(subpredicates: NSArray) -> NSCompoundPredicate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCompoundPredicate").unwrap(), orPredicateWithSubpredicates : subpredicates)
    }
    unsafe fn notPredicateWithSubpredicate_(predicate: NSPredicate) -> NSCompoundPredicate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCompoundPredicate").unwrap(), notPredicateWithSubpredicate : predicate)
    }
}
pub type NSDateComponentsFormatterUnitsStyle = NSInteger;
pub type NSDateComponentsFormatterZeroFormattingBehavior = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSDateComponentsFormatter(pub id);
impl std::ops::Deref for NSDateComponentsFormatter {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSDateComponentsFormatter {}
impl NSDateComponentsFormatter {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSDateComponentsFormatter").unwrap(), alloc) })
    }
}
impl INSFormatter for NSDateComponentsFormatter {}
impl PNSCopying for NSDateComponentsFormatter {}
impl PNSCoding for NSDateComponentsFormatter {}
impl std::convert::TryFrom<NSFormatter> for NSDateComponentsFormatter {
    type Error = &'static str;
    fn try_from(parent: NSFormatter) -> Result<NSDateComponentsFormatter, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSDateComponentsFormatter").unwrap()) };
        if is_kind_of {
            Ok(NSDateComponentsFormatter(parent.0))
        } else {
            Err("This NSFormatter cannot be downcasted to NSDateComponentsFormatter")
        }
    }
}
impl INSObject for NSDateComponentsFormatter {}
impl PNSObject for NSDateComponentsFormatter {}
impl INSDateComponentsFormatter for NSDateComponentsFormatter {}
pub trait INSDateComponentsFormatter: Sized + std::ops::Deref {
    unsafe fn stringForObjectValue_(&self, obj: id) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringForObjectValue : obj)
    }
    unsafe fn stringFromDateComponents_(&self, components: NSDateComponents) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringFromDateComponents : components)
    }
    unsafe fn stringFromDate_toDate_(&self, startDate: NSDate, endDate: NSDate) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringFromDate : startDate, toDate : endDate)
    }
    unsafe fn stringFromTimeInterval_(&self, ti: NSTimeInterval) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringFromTimeInterval : ti)
    }
    unsafe fn getObjectValue_forString_errorDescription_(
        &self,
        obj: *mut id,
        string: NSString,
        error: *mut NSString,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getObjectValue : obj, forString : string, errorDescription : error)
    }
    unsafe fn unitsStyle(&self) -> NSDateComponentsFormatterUnitsStyle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, unitsStyle)
    }
    unsafe fn setUnitsStyle_(&self, unitsStyle: NSDateComponentsFormatterUnitsStyle)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUnitsStyle : unitsStyle)
    }
    unsafe fn allowedUnits(&self) -> NSCalendarUnit
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowedUnits)
    }
    unsafe fn setAllowedUnits_(&self, allowedUnits: NSCalendarUnit)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAllowedUnits : allowedUnits)
    }
    unsafe fn zeroFormattingBehavior(&self) -> NSDateComponentsFormatterZeroFormattingBehavior
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, zeroFormattingBehavior)
    }
    unsafe fn setZeroFormattingBehavior_(
        &self,
        zeroFormattingBehavior: NSDateComponentsFormatterZeroFormattingBehavior,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setZeroFormattingBehavior : zeroFormattingBehavior)
    }
    unsafe fn calendar(&self) -> NSCalendar
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, calendar)
    }
    unsafe fn setCalendar_(&self, calendar: NSCalendar)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCalendar : calendar)
    }
    unsafe fn referenceDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, referenceDate)
    }
    unsafe fn setReferenceDate_(&self, referenceDate: NSDate)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReferenceDate : referenceDate)
    }
    unsafe fn allowsFractionalUnits(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowsFractionalUnits)
    }
    unsafe fn setAllowsFractionalUnits_(&self, allowsFractionalUnits: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAllowsFractionalUnits : allowsFractionalUnits)
    }
    unsafe fn maximumUnitCount(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maximumUnitCount)
    }
    unsafe fn setMaximumUnitCount_(&self, maximumUnitCount: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaximumUnitCount : maximumUnitCount)
    }
    unsafe fn collapsesLargestUnit(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, collapsesLargestUnit)
    }
    unsafe fn setCollapsesLargestUnit_(&self, collapsesLargestUnit: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCollapsesLargestUnit : collapsesLargestUnit)
    }
    unsafe fn includesApproximationPhrase(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, includesApproximationPhrase)
    }
    unsafe fn setIncludesApproximationPhrase_(&self, includesApproximationPhrase: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIncludesApproximationPhrase : includesApproximationPhrase)
    }
    unsafe fn includesTimeRemainingPhrase(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, includesTimeRemainingPhrase)
    }
    unsafe fn setIncludesTimeRemainingPhrase_(&self, includesTimeRemainingPhrase: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIncludesTimeRemainingPhrase : includesTimeRemainingPhrase)
    }
    unsafe fn formattingContext(&self) -> NSFormattingContext
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, formattingContext)
    }
    unsafe fn setFormattingContext_(&self, formattingContext: NSFormattingContext)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFormattingContext : formattingContext)
    }
    unsafe fn localizedStringFromDateComponents_unitsStyle_(
        components: NSDateComponents,
        unitsStyle: NSDateComponentsFormatterUnitsStyle,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDateComponentsFormatter").unwrap(), localizedStringFromDateComponents : components, unitsStyle : unitsStyle)
    }
}
pub type NSExpressionType = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSExpression(pub id);
impl std::ops::Deref for NSExpression {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSExpression {}
impl NSExpression {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSExpression").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSExpression {}
impl PNSCopying for NSExpression {}
impl INSObject for NSExpression {}
impl PNSObject for NSExpression {}
impl std::convert::TryFrom<NSObject> for NSExpression {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSExpression, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSExpression").unwrap()) };
        if is_kind_of {
            Ok(NSExpression(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSExpression")
        }
    }
}
impl INSExpression for NSExpression {}
pub trait INSExpression: Sized + std::ops::Deref {
    unsafe fn initWithExpressionType_(&self, type_: NSExpressionType) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithExpressionType : type_)
    }
    unsafe fn initWithCoder_(&self, coder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : coder)
    }
    unsafe fn expressionValueWithObject_context_(
        &self,
        object: id,
        context: NSMutableDictionary,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, expressionValueWithObject : object, context : context)
    }
    unsafe fn allowEvaluation(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowEvaluation)
    }
    unsafe fn expressionType(&self) -> NSExpressionType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, expressionType)
    }
    unsafe fn constantValue(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, constantValue)
    }
    unsafe fn keyPath(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, keyPath)
    }
    unsafe fn function(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, function)
    }
    unsafe fn variable(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, variable)
    }
    unsafe fn operand(&self) -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operand)
    }
    unsafe fn arguments(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arguments)
    }
    unsafe fn collection(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, collection)
    }
    unsafe fn predicate(&self) -> NSPredicate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, predicate)
    }
    unsafe fn leftExpression(&self) -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, leftExpression)
    }
    unsafe fn rightExpression(&self) -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rightExpression)
    }
    unsafe fn trueExpression(&self) -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, trueExpression)
    }
    unsafe fn falseExpression(&self) -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, falseExpression)
    }
    unsafe fn expressionBlock(&self) -> *mut ::std::os::raw::c_void
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, expressionBlock)
    }
    unsafe fn expressionWithFormat_argumentArray_(
        expressionFormat: NSString,
        arguments: NSArray,
    ) -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSExpression").unwrap(), expressionWithFormat : expressionFormat, argumentArray : arguments)
    }
    unsafe fn expressionWithFormat_(expressionFormat: NSString) -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSExpression").unwrap(), expressionWithFormat : expressionFormat)
    }
    unsafe fn expressionWithFormat_arguments_(
        expressionFormat: NSString,
        argList: va_list,
    ) -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSExpression").unwrap(), expressionWithFormat : expressionFormat, arguments : argList)
    }
    unsafe fn expressionForConstantValue_(obj: id) -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSExpression").unwrap(), expressionForConstantValue : obj)
    }
    unsafe fn expressionForEvaluatedObject() -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSExpression").unwrap(), expressionForEvaluatedObject)
    }
    unsafe fn expressionForVariable_(string: NSString) -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSExpression").unwrap(), expressionForVariable : string)
    }
    unsafe fn expressionForKeyPath_(keyPath: NSString) -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSExpression").unwrap(), expressionForKeyPath : keyPath)
    }
    unsafe fn expressionForFunction_arguments_(name: NSString, parameters: NSArray) -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSExpression").unwrap(), expressionForFunction : name, arguments : parameters)
    }
    unsafe fn expressionForAggregate_(subexpressions: NSArray) -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSExpression").unwrap(), expressionForAggregate : subexpressions)
    }
    unsafe fn expressionForUnionSet_with_(left: NSExpression, right: NSExpression) -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSExpression").unwrap(), expressionForUnionSet : left, with : right)
    }
    unsafe fn expressionForIntersectSet_with_(
        left: NSExpression,
        right: NSExpression,
    ) -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSExpression").unwrap(), expressionForIntersectSet : left, with : right)
    }
    unsafe fn expressionForMinusSet_with_(left: NSExpression, right: NSExpression) -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSExpression").unwrap(), expressionForMinusSet : left, with : right)
    }
    unsafe fn expressionForSubquery_usingIteratorVariable_predicate_(
        expression: NSExpression,
        variable: NSString,
        predicate: NSPredicate,
    ) -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSExpression").unwrap(), expressionForSubquery : expression, usingIteratorVariable : variable, predicate : predicate)
    }
    unsafe fn expressionForFunction_selectorName_arguments_(
        target: NSExpression,
        name: NSString,
        parameters: NSArray,
    ) -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSExpression").unwrap(), expressionForFunction : target, selectorName : name, arguments : parameters)
    }
    unsafe fn expressionForAnyKey() -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSExpression").unwrap(), expressionForAnyKey)
    }
    unsafe fn expressionForBlock_arguments_(
        block: *mut ::std::os::raw::c_void,
        arguments: NSArray,
    ) -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSExpression").unwrap(), expressionForBlock : block, arguments : arguments)
    }
    unsafe fn expressionForConditional_trueExpression_falseExpression_(
        predicate: NSPredicate,
        trueExpression: NSExpression,
        falseExpression: NSExpression,
    ) -> NSExpression
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSExpression").unwrap(), expressionForConditional : predicate, trueExpression : trueExpression, falseExpression : falseExpression)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSExtensionContext(pub id);
impl std::ops::Deref for NSExtensionContext {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSExtensionContext {}
impl NSExtensionContext {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSExtensionContext").unwrap(), alloc) })
    }
}
impl INSObject for NSExtensionContext {}
impl PNSObject for NSExtensionContext {}
impl std::convert::TryFrom<NSObject> for NSExtensionContext {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSExtensionContext, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSExtensionContext").unwrap()) };
        if is_kind_of {
            Ok(NSExtensionContext(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSExtensionContext")
        }
    }
}
impl INSExtensionContext for NSExtensionContext {}
pub trait INSExtensionContext: Sized + std::ops::Deref {
    unsafe fn completeRequestReturningItems_completionHandler_(
        &self,
        items: NSArray,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, completeRequestReturningItems : items, completionHandler : completionHandler)
    }
    unsafe fn cancelRequestWithError_(&self, error: NSError)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelRequestWithError : error)
    }
    unsafe fn openURL_completionHandler_(
        &self,
        URL: NSURL,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, openURL : URL, completionHandler : completionHandler)
    }
    unsafe fn inputItems(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, inputItems)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSExtensionItem(pub id);
impl std::ops::Deref for NSExtensionItem {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSExtensionItem {}
impl NSExtensionItem {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSExtensionItem").unwrap(), alloc) })
    }
}
impl PNSCopying for NSExtensionItem {}
impl PNSSecureCoding for NSExtensionItem {}
impl INSObject for NSExtensionItem {}
impl PNSObject for NSExtensionItem {}
impl std::convert::TryFrom<NSObject> for NSExtensionItem {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSExtensionItem, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSExtensionItem").unwrap()) };
        if is_kind_of {
            Ok(NSExtensionItem(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSExtensionItem")
        }
    }
}
impl INSExtensionItem for NSExtensionItem {}
pub trait INSExtensionItem: Sized + std::ops::Deref {
    unsafe fn attributedTitle(&self) -> NSAttributedString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attributedTitle)
    }
    unsafe fn setAttributedTitle_(&self, attributedTitle: NSAttributedString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttributedTitle : attributedTitle)
    }
    unsafe fn attributedContentText(&self) -> NSAttributedString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attributedContentText)
    }
    unsafe fn setAttributedContentText_(&self, attributedContentText: NSAttributedString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttributedContentText : attributedContentText)
    }
    unsafe fn attachments(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attachments)
    }
    unsafe fn setAttachments_(&self, attachments: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttachments : attachments)
    }
    unsafe fn userInfo(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userInfo)
    }
    unsafe fn setUserInfo_(&self, userInfo: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserInfo : userInfo)
    }
}
pub trait PNSExtensionRequestHandling: Sized + std::ops::Deref {
    unsafe fn beginRequestWithExtensionContext_(&self, context: NSExtensionContext)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, beginRequestWithExtensionContext : context)
    }
}
pub type NSFileCoordinatorReadingOptions = NSUInteger;
pub type NSFileCoordinatorWritingOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSFileAccessIntent(pub id);
impl std::ops::Deref for NSFileAccessIntent {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSFileAccessIntent {}
impl NSFileAccessIntent {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileAccessIntent").unwrap(), alloc) })
    }
}
impl INSObject for NSFileAccessIntent {}
impl PNSObject for NSFileAccessIntent {}
impl std::convert::TryFrom<NSObject> for NSFileAccessIntent {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSFileAccessIntent, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSFileAccessIntent").unwrap()) };
        if is_kind_of {
            Ok(NSFileAccessIntent(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSFileAccessIntent")
        }
    }
}
impl INSFileAccessIntent for NSFileAccessIntent {}
pub trait INSFileAccessIntent: Sized + std::ops::Deref {
    unsafe fn URL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, URL)
    }
    unsafe fn readingIntentWithURL_options_(
        url: NSURL,
        options: NSFileCoordinatorReadingOptions,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileAccessIntent").unwrap(), readingIntentWithURL : url, options : options)
    }
    unsafe fn writingIntentWithURL_options_(
        url: NSURL,
        options: NSFileCoordinatorWritingOptions,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileAccessIntent").unwrap(), writingIntentWithURL : url, options : options)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSFileCoordinator(pub id);
impl std::ops::Deref for NSFileCoordinator {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSFileCoordinator {}
impl NSFileCoordinator {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileCoordinator").unwrap(), alloc) })
    }
}
impl INSObject for NSFileCoordinator {}
impl PNSObject for NSFileCoordinator {}
impl std::convert::TryFrom<NSObject> for NSFileCoordinator {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSFileCoordinator, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSFileCoordinator").unwrap()) };
        if is_kind_of {
            Ok(NSFileCoordinator(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSFileCoordinator")
        }
    }
}
impl INSFileCoordinator for NSFileCoordinator {}
pub trait INSFileCoordinator: Sized + std::ops::Deref {
    unsafe fn initWithFilePresenter_(&self, filePresenterOrNil: *mut u64) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithFilePresenter : filePresenterOrNil)
    }
    unsafe fn coordinateAccessWithIntents_queue_byAccessor_(
        &self,
        intents: NSArray,
        queue: NSOperationQueue,
        accessor: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, coordinateAccessWithIntents : intents, queue : queue, byAccessor : accessor)
    }
    unsafe fn coordinateReadingItemAtURL_options_error_byAccessor_(
        &self,
        url: NSURL,
        options: NSFileCoordinatorReadingOptions,
        outError: *mut NSError,
        reader: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, coordinateReadingItemAtURL : url, options : options, error : outError, byAccessor : reader)
    }
    unsafe fn coordinateWritingItemAtURL_options_error_byAccessor_(
        &self,
        url: NSURL,
        options: NSFileCoordinatorWritingOptions,
        outError: *mut NSError,
        writer: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, coordinateWritingItemAtURL : url, options : options, error : outError, byAccessor : writer)
    }
    unsafe fn coordinateReadingItemAtURL_options_writingItemAtURL_options_error_byAccessor_(
        &self,
        readingURL: NSURL,
        readingOptions: NSFileCoordinatorReadingOptions,
        writingURL: NSURL,
        writingOptions: NSFileCoordinatorWritingOptions,
        outError: *mut NSError,
        readerWriter: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, coordinateReadingItemAtURL : readingURL, options : readingOptions, writingItemAtURL : writingURL, options : writingOptions, error : outError, byAccessor : readerWriter)
    }
    unsafe fn coordinateWritingItemAtURL_options_writingItemAtURL_options_error_byAccessor_(
        &self,
        url1: NSURL,
        options1: NSFileCoordinatorWritingOptions,
        url2: NSURL,
        options2: NSFileCoordinatorWritingOptions,
        outError: *mut NSError,
        writer: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, coordinateWritingItemAtURL : url1, options : options1, writingItemAtURL : url2, options : options2, error : outError, byAccessor : writer)
    }
    unsafe fn prepareForReadingItemsAtURLs_options_writingItemsAtURLs_options_error_byAccessor_(
        &self,
        readingURLs: NSArray,
        readingOptions: NSFileCoordinatorReadingOptions,
        writingURLs: NSArray,
        writingOptions: NSFileCoordinatorWritingOptions,
        outError: *mut NSError,
        batchAccessor: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, prepareForReadingItemsAtURLs : readingURLs, options : readingOptions, writingItemsAtURLs : writingURLs, options : writingOptions, error : outError, byAccessor : batchAccessor)
    }
    unsafe fn itemAtURL_willMoveToURL_(&self, oldURL: NSURL, newURL: NSURL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, itemAtURL : oldURL, willMoveToURL : newURL)
    }
    unsafe fn itemAtURL_didMoveToURL_(&self, oldURL: NSURL, newURL: NSURL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, itemAtURL : oldURL, didMoveToURL : newURL)
    }
    unsafe fn itemAtURL_didChangeUbiquityAttributes_(&self, url: NSURL, attributes: NSSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, itemAtURL : url, didChangeUbiquityAttributes : attributes)
    }
    unsafe fn cancel(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cancel)
    }
    unsafe fn purposeIdentifier(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, purposeIdentifier)
    }
    unsafe fn setPurposeIdentifier_(&self, purposeIdentifier: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPurposeIdentifier : purposeIdentifier)
    }
    unsafe fn addFilePresenter_(filePresenter: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileCoordinator").unwrap(), addFilePresenter : filePresenter)
    }
    unsafe fn removeFilePresenter_(filePresenter: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileCoordinator").unwrap(), removeFilePresenter : filePresenter)
    }
    unsafe fn filePresenters() -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileCoordinator").unwrap(), filePresenters)
    }
}
pub trait PNSFilePresenter: Sized + std::ops::Deref {
    unsafe fn relinquishPresentedItemToReader_(&self, reader: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, relinquishPresentedItemToReader : reader)
    }
    unsafe fn relinquishPresentedItemToWriter_(&self, writer: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, relinquishPresentedItemToWriter : writer)
    }
    unsafe fn savePresentedItemChangesWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, savePresentedItemChangesWithCompletionHandler : completionHandler)
    }
    unsafe fn accommodatePresentedItemDeletionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, accommodatePresentedItemDeletionWithCompletionHandler : completionHandler)
    }
    unsafe fn accommodatePresentedItemEvictionWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, accommodatePresentedItemEvictionWithCompletionHandler : completionHandler)
    }
    unsafe fn presentedItemDidMoveToURL_(&self, newURL: NSURL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, presentedItemDidMoveToURL : newURL)
    }
    unsafe fn presentedItemDidChange(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, presentedItemDidChange)
    }
    unsafe fn presentedItemDidChangeUbiquityAttributes_(&self, attributes: NSSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, presentedItemDidChangeUbiquityAttributes : attributes)
    }
    unsafe fn presentedItemDidGainVersion_(&self, version: NSFileVersion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, presentedItemDidGainVersion : version)
    }
    unsafe fn presentedItemDidLoseVersion_(&self, version: NSFileVersion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, presentedItemDidLoseVersion : version)
    }
    unsafe fn presentedItemDidResolveConflictVersion_(&self, version: NSFileVersion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, presentedItemDidResolveConflictVersion : version)
    }
    unsafe fn accommodatePresentedSubitemDeletionAtURL_completionHandler_(
        &self,
        url: NSURL,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, accommodatePresentedSubitemDeletionAtURL : url, completionHandler : completionHandler)
    }
    unsafe fn presentedSubitemDidAppearAtURL_(&self, url: NSURL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, presentedSubitemDidAppearAtURL : url)
    }
    unsafe fn presentedSubitemAtURL_didMoveToURL_(&self, oldURL: NSURL, newURL: NSURL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, presentedSubitemAtURL : oldURL, didMoveToURL : newURL)
    }
    unsafe fn presentedSubitemDidChangeAtURL_(&self, url: NSURL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, presentedSubitemDidChangeAtURL : url)
    }
    unsafe fn presentedSubitemAtURL_didGainVersion_(&self, url: NSURL, version: NSFileVersion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, presentedSubitemAtURL : url, didGainVersion : version)
    }
    unsafe fn presentedSubitemAtURL_didLoseVersion_(&self, url: NSURL, version: NSFileVersion)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, presentedSubitemAtURL : url, didLoseVersion : version)
    }
    unsafe fn presentedSubitemAtURL_didResolveConflictVersion_(
        &self,
        url: NSURL,
        version: NSFileVersion,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, presentedSubitemAtURL : url, didResolveConflictVersion : version)
    }
    unsafe fn presentedItemURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, presentedItemURL)
    }
    unsafe fn presentedItemOperationQueue(&self) -> NSOperationQueue
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, presentedItemOperationQueue)
    }
    unsafe fn primaryPresentedItemURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, primaryPresentedItemURL)
    }
    unsafe fn observedPresentedItemUbiquityAttributes(&self) -> NSSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, observedPresentedItemUbiquityAttributes)
    }
}
pub type NSFileVersionAddingOptions = NSUInteger;
pub type NSFileVersionReplacingOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSFileVersion(pub id);
impl std::ops::Deref for NSFileVersion {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSFileVersion {}
impl NSFileVersion {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileVersion").unwrap(), alloc) })
    }
}
impl INSObject for NSFileVersion {}
impl PNSObject for NSFileVersion {}
impl std::convert::TryFrom<NSObject> for NSFileVersion {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSFileVersion, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSFileVersion").unwrap()) };
        if is_kind_of {
            Ok(NSFileVersion(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSFileVersion")
        }
    }
}
impl INSFileVersion for NSFileVersion {}
pub trait INSFileVersion: Sized + std::ops::Deref {
    unsafe fn replaceItemAtURL_options_error_(
        &self,
        url: NSURL,
        options: NSFileVersionReplacingOptions,
        error: *mut NSError,
    ) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replaceItemAtURL : url, options : options, error : error)
    }
    unsafe fn removeAndReturnError_(&self, outError: *mut NSError) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeAndReturnError : outError)
    }
    unsafe fn URL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, URL)
    }
    unsafe fn localizedName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localizedName)
    }
    unsafe fn localizedNameOfSavingComputer(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localizedNameOfSavingComputer)
    }
    unsafe fn originatorNameComponents(&self) -> NSPersonNameComponents
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, originatorNameComponents)
    }
    unsafe fn modificationDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, modificationDate)
    }
    unsafe fn persistentIdentifier(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, persistentIdentifier)
    }
    unsafe fn isConflict(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isConflict)
    }
    unsafe fn isResolved(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isResolved)
    }
    unsafe fn setResolved_(&self, resolved: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setResolved : resolved)
    }
    unsafe fn isDiscardable(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isDiscardable)
    }
    unsafe fn setDiscardable_(&self, discardable: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDiscardable : discardable)
    }
    unsafe fn hasLocalContents(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hasLocalContents)
    }
    unsafe fn hasThumbnail(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hasThumbnail)
    }
    unsafe fn currentVersionOfItemAtURL_(url: NSURL) -> NSFileVersion
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileVersion").unwrap(), currentVersionOfItemAtURL : url)
    }
    unsafe fn otherVersionsOfItemAtURL_(url: NSURL) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileVersion").unwrap(), otherVersionsOfItemAtURL : url)
    }
    unsafe fn unresolvedConflictVersionsOfItemAtURL_(url: NSURL) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileVersion").unwrap(), unresolvedConflictVersionsOfItemAtURL : url)
    }
    unsafe fn getNonlocalVersionsOfItemAtURL_completionHandler_(
        url: NSURL,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileVersion").unwrap(), getNonlocalVersionsOfItemAtURL : url, completionHandler : completionHandler)
    }
    unsafe fn versionOfItemAtURL_forPersistentIdentifier_(
        url: NSURL,
        persistentIdentifier: id,
    ) -> NSFileVersion
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileVersion").unwrap(), versionOfItemAtURL : url, forPersistentIdentifier : persistentIdentifier)
    }
    unsafe fn addVersionOfItemAtURL_withContentsOfURL_options_error_(
        url: NSURL,
        contentsURL: NSURL,
        options: NSFileVersionAddingOptions,
        outError: *mut NSError,
    ) -> NSFileVersion
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileVersion").unwrap(), addVersionOfItemAtURL : url, withContentsOfURL : contentsURL, options : options, error : outError)
    }
    unsafe fn temporaryDirectoryURLForNewVersionOfItemAtURL_(url: NSURL) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileVersion").unwrap(), temporaryDirectoryURLForNewVersionOfItemAtURL : url)
    }
    unsafe fn removeOtherVersionsOfItemAtURL_error_(url: NSURL, outError: *mut NSError) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileVersion").unwrap(), removeOtherVersionsOfItemAtURL : url, error : outError)
    }
}
pub type NSFileWrapperReadingOptions = NSUInteger;
pub type NSFileWrapperWritingOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSFileWrapper(pub id);
impl std::ops::Deref for NSFileWrapper {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSFileWrapper {}
impl NSFileWrapper {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSFileWrapper").unwrap(), alloc) })
    }
}
impl PNSSecureCoding for NSFileWrapper {}
impl INSObject for NSFileWrapper {}
impl PNSObject for NSFileWrapper {}
impl std::convert::TryFrom<NSObject> for NSFileWrapper {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSFileWrapper, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSFileWrapper").unwrap()) };
        if is_kind_of {
            Ok(NSFileWrapper(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSFileWrapper")
        }
    }
}
impl INSFileWrapper for NSFileWrapper {}
pub trait INSFileWrapper: Sized + std::ops::Deref {
    unsafe fn initWithURL_options_error_(
        &self,
        url: NSURL,
        options: NSFileWrapperReadingOptions,
        outError: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithURL : url, options : options, error : outError)
    }
    unsafe fn initDirectoryWithFileWrappers_(
        &self,
        childrenByPreferredName: NSDictionary,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initDirectoryWithFileWrappers : childrenByPreferredName)
    }
    unsafe fn initRegularFileWithContents_(&self, contents: NSData) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initRegularFileWithContents : contents)
    }
    unsafe fn initSymbolicLinkWithDestinationURL_(&self, url: NSURL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initSymbolicLinkWithDestinationURL : url)
    }
    unsafe fn initWithSerializedRepresentation_(
        &self,
        serializeRepresentation: NSData,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithSerializedRepresentation : serializeRepresentation)
    }
    unsafe fn initWithCoder_(&self, inCoder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : inCoder)
    }
    unsafe fn matchesContentsOfURL_(&self, url: NSURL) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, matchesContentsOfURL : url)
    }
    unsafe fn readFromURL_options_error_(
        &self,
        url: NSURL,
        options: NSFileWrapperReadingOptions,
        outError: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readFromURL : url, options : options, error : outError)
    }
    unsafe fn writeToURL_options_originalContentsURL_error_(
        &self,
        url: NSURL,
        options: NSFileWrapperWritingOptions,
        originalContentsURL: NSURL,
        outError: *mut NSError,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeToURL : url, options : options, originalContentsURL : originalContentsURL, error : outError)
    }
    unsafe fn addFileWrapper_(&self, child: NSFileWrapper) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addFileWrapper : child)
    }
    unsafe fn addRegularFileWithContents_preferredFilename_(
        &self,
        data: NSData,
        fileName: NSString,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addRegularFileWithContents : data, preferredFilename : fileName)
    }
    unsafe fn removeFileWrapper_(&self, child: NSFileWrapper)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeFileWrapper : child)
    }
    unsafe fn keyForFileWrapper_(&self, child: NSFileWrapper) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keyForFileWrapper : child)
    }
    unsafe fn isDirectory(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isDirectory)
    }
    unsafe fn isRegularFile(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isRegularFile)
    }
    unsafe fn isSymbolicLink(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isSymbolicLink)
    }
    unsafe fn preferredFilename(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, preferredFilename)
    }
    unsafe fn setPreferredFilename_(&self, preferredFilename: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPreferredFilename : preferredFilename)
    }
    unsafe fn filename(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, filename)
    }
    unsafe fn setFilename_(&self, filename: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFilename : filename)
    }
    unsafe fn fileAttributes(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileAttributes)
    }
    unsafe fn setFileAttributes_(&self, fileAttributes: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setFileAttributes : fileAttributes)
    }
    unsafe fn serializedRepresentation(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, serializedRepresentation)
    }
    unsafe fn fileWrappers(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileWrappers)
    }
    unsafe fn regularFileContents(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, regularFileContents)
    }
    unsafe fn symbolicLinkDestinationURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, symbolicLinkDestinationURL)
    }
}
impl NSFileWrapper_NSDeprecated for NSFileWrapper {}
pub trait NSFileWrapper_NSDeprecated: Sized + std::ops::Deref {
    unsafe fn initWithPath_(&self, path: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithPath : path)
    }
    unsafe fn initSymbolicLinkWithDestination_(&self, path: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initSymbolicLinkWithDestination : path)
    }
    unsafe fn needsToBeUpdatedFromPath_(&self, path: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, needsToBeUpdatedFromPath : path)
    }
    unsafe fn updateFromPath_(&self, path: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, updateFromPath : path)
    }
    unsafe fn writeToFile_atomically_updateFilenames_(
        &self,
        path: NSString,
        atomicFlag: BOOL,
        updateFilenamesFlag: BOOL,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeToFile : path, atomically : atomicFlag, updateFilenames : updateFilenamesFlag)
    }
    unsafe fn addFileWithPath_(&self, path: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addFileWithPath : path)
    }
    unsafe fn addSymbolicLinkWithDestination_preferredFilename_(
        &self,
        path: NSString,
        filename: NSString,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addSymbolicLinkWithDestination : path, preferredFilename : filename)
    }
    unsafe fn symbolicLinkDestination(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, symbolicLinkDestination)
    }
}
pub type NSLinguisticTagScheme = NSString;
pub type NSLinguisticTag = NSString;
pub type NSLinguisticTaggerUnit = NSInteger;
pub type NSLinguisticTaggerOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSLinguisticTagger(pub id);
impl std::ops::Deref for NSLinguisticTagger {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSLinguisticTagger {}
impl NSLinguisticTagger {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSLinguisticTagger").unwrap(), alloc) })
    }
}
impl INSObject for NSLinguisticTagger {}
impl PNSObject for NSLinguisticTagger {}
impl std::convert::TryFrom<NSObject> for NSLinguisticTagger {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSLinguisticTagger, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSLinguisticTagger").unwrap()) };
        if is_kind_of {
            Ok(NSLinguisticTagger(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSLinguisticTagger")
        }
    }
}
impl INSLinguisticTagger for NSLinguisticTagger {}
pub trait INSLinguisticTagger: Sized + std::ops::Deref {
    unsafe fn initWithTagSchemes_options_(
        &self,
        tagSchemes: NSArray,
        opts: NSUInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithTagSchemes : tagSchemes, options : opts)
    }
    unsafe fn setOrthography_range_(&self, orthography: NSOrthography, range: NSRange)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOrthography : orthography, range : range)
    }
    unsafe fn orthographyAtIndex_effectiveRange_(
        &self,
        charIndex: NSUInteger,
        effectiveRange: NSRangePointer,
    ) -> NSOrthography
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, orthographyAtIndex : charIndex, effectiveRange : effectiveRange)
    }
    unsafe fn stringEditedInRange_changeInLength_(&self, newRange: NSRange, delta: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringEditedInRange : newRange, changeInLength : delta)
    }
    unsafe fn tokenRangeAtIndex_unit_(
        &self,
        charIndex: NSUInteger,
        unit: NSLinguisticTaggerUnit,
    ) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, tokenRangeAtIndex : charIndex, unit : unit)
    }
    unsafe fn sentenceRangeForRange_(&self, range: NSRange) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sentenceRangeForRange : range)
    }
    unsafe fn enumerateTagsInRange_unit_scheme_options_usingBlock_(
        &self,
        range: NSRange,
        unit: NSLinguisticTaggerUnit,
        scheme: NSString,
        options: NSLinguisticTaggerOptions,
        block: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateTagsInRange : range, unit : unit, scheme : scheme, options : options, usingBlock : block)
    }
    unsafe fn tagAtIndex_unit_scheme_tokenRange_(
        &self,
        charIndex: NSUInteger,
        unit: NSLinguisticTaggerUnit,
        scheme: NSString,
        tokenRange: NSRangePointer,
    ) -> NSLinguisticTag
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, tagAtIndex : charIndex, unit : unit, scheme : scheme, tokenRange : tokenRange)
    }
    unsafe fn tagsInRange_unit_scheme_options_tokenRanges_(
        &self,
        range: NSRange,
        unit: NSLinguisticTaggerUnit,
        scheme: NSString,
        options: NSLinguisticTaggerOptions,
        tokenRanges: *mut NSArray,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, tagsInRange : range, unit : unit, scheme : scheme, options : options, tokenRanges : tokenRanges)
    }
    unsafe fn enumerateTagsInRange_scheme_options_usingBlock_(
        &self,
        range: NSRange,
        tagScheme: NSString,
        opts: NSLinguisticTaggerOptions,
        block: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateTagsInRange : range, scheme : tagScheme, options : opts, usingBlock : block)
    }
    unsafe fn tagAtIndex_scheme_tokenRange_sentenceRange_(
        &self,
        charIndex: NSUInteger,
        scheme: NSString,
        tokenRange: NSRangePointer,
        sentenceRange: NSRangePointer,
    ) -> NSLinguisticTag
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, tagAtIndex : charIndex, scheme : scheme, tokenRange : tokenRange, sentenceRange : sentenceRange)
    }
    unsafe fn tagsInRange_scheme_options_tokenRanges_(
        &self,
        range: NSRange,
        tagScheme: NSString,
        opts: NSLinguisticTaggerOptions,
        tokenRanges: *mut NSArray,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, tagsInRange : range, scheme : tagScheme, options : opts, tokenRanges : tokenRanges)
    }
    unsafe fn possibleTagsAtIndex_scheme_tokenRange_sentenceRange_scores_(
        &self,
        charIndex: NSUInteger,
        tagScheme: NSString,
        tokenRange: NSRangePointer,
        sentenceRange: NSRangePointer,
        scores: *mut NSArray,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, possibleTagsAtIndex : charIndex, scheme : tagScheme, tokenRange : tokenRange, sentenceRange : sentenceRange, scores : scores)
    }
    unsafe fn tagSchemes(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tagSchemes)
    }
    unsafe fn string(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, string)
    }
    unsafe fn setString_(&self, string: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setString : string)
    }
    unsafe fn dominantLanguage(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dominantLanguage)
    }
    unsafe fn availableTagSchemesForUnit_language_(
        unit: NSLinguisticTaggerUnit,
        language: NSString,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLinguisticTagger").unwrap(), availableTagSchemesForUnit : unit, language : language)
    }
    unsafe fn availableTagSchemesForLanguage_(language: NSString) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLinguisticTagger").unwrap(), availableTagSchemesForLanguage : language)
    }
    unsafe fn dominantLanguageForString_(string: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLinguisticTagger").unwrap(), dominantLanguageForString : string)
    }
    unsafe fn tagForString_atIndex_unit_scheme_orthography_tokenRange_(
        string: NSString,
        charIndex: NSUInteger,
        unit: NSLinguisticTaggerUnit,
        scheme: NSString,
        orthography: NSOrthography,
        tokenRange: NSRangePointer,
    ) -> NSLinguisticTag
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLinguisticTagger").unwrap(), tagForString : string, atIndex : charIndex, unit : unit, scheme : scheme, orthography : orthography, tokenRange : tokenRange)
    }
    unsafe fn tagsForString_range_unit_scheme_options_orthography_tokenRanges_(
        string: NSString,
        range: NSRange,
        unit: NSLinguisticTaggerUnit,
        scheme: NSString,
        options: NSLinguisticTaggerOptions,
        orthography: NSOrthography,
        tokenRanges: *mut NSArray,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLinguisticTagger").unwrap(), tagsForString : string, range : range, unit : unit, scheme : scheme, options : options, orthography : orthography, tokenRanges : tokenRanges)
    }
    unsafe fn enumerateTagsForString_range_unit_scheme_options_orthography_usingBlock_(
        string: NSString,
        range: NSRange,
        unit: NSLinguisticTaggerUnit,
        scheme: NSString,
        options: NSLinguisticTaggerOptions,
        orthography: NSOrthography,
        block: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSLinguisticTagger").unwrap(), enumerateTagsForString : string, range : range, unit : unit, scheme : scheme, options : options, orthography : orthography, usingBlock : block)
    }
}
impl NSString_NSLinguisticAnalysis for NSString {}
pub trait NSString_NSLinguisticAnalysis: Sized + std::ops::Deref {
    unsafe fn linguisticTagsInRange_scheme_options_orthography_tokenRanges_(
        &self,
        range: NSRange,
        scheme: NSString,
        options: NSLinguisticTaggerOptions,
        orthography: NSOrthography,
        tokenRanges: *mut NSArray,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, linguisticTagsInRange : range, scheme : scheme, options : options, orthography : orthography, tokenRanges : tokenRanges)
    }
    unsafe fn enumerateLinguisticTagsInRange_scheme_options_orthography_usingBlock_(
        &self,
        range: NSRange,
        scheme: NSString,
        options: NSLinguisticTaggerOptions,
        orthography: NSOrthography,
        block: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateLinguisticTagsInRange : range, scheme : scheme, options : options, orthography : orthography, usingBlock : block)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMetadataQuery(pub id);
impl std::ops::Deref for NSMetadataQuery {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMetadataQuery {}
impl NSMetadataQuery {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMetadataQuery").unwrap(), alloc) })
    }
}
impl INSObject for NSMetadataQuery {}
impl PNSObject for NSMetadataQuery {}
impl std::convert::TryFrom<NSObject> for NSMetadataQuery {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSMetadataQuery, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMetadataQuery").unwrap()) };
        if is_kind_of {
            Ok(NSMetadataQuery(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSMetadataQuery")
        }
    }
}
impl INSMetadataQuery for NSMetadataQuery {}
pub trait INSMetadataQuery: Sized + std::ops::Deref {
    unsafe fn startQuery(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startQuery)
    }
    unsafe fn stopQuery(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stopQuery)
    }
    unsafe fn disableUpdates(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, disableUpdates)
    }
    unsafe fn enableUpdates(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, enableUpdates)
    }
    unsafe fn resultAtIndex_(&self, idx: NSUInteger) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resultAtIndex : idx)
    }
    unsafe fn enumerateResultsUsingBlock_(&self, block: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateResultsUsingBlock : block)
    }
    unsafe fn enumerateResultsWithOptions_usingBlock_(
        &self,
        opts: NSEnumerationOptions,
        block: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enumerateResultsWithOptions : opts, usingBlock : block)
    }
    unsafe fn indexOfResult_(&self, result: id) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indexOfResult : result)
    }
    unsafe fn valueOfAttribute_forResultAtIndex_(&self, attrName: NSString, idx: NSUInteger) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, valueOfAttribute : attrName, forResultAtIndex : idx)
    }
    unsafe fn delegate(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delegate)
    }
    unsafe fn setDelegate_(&self, delegate: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelegate : delegate)
    }
    unsafe fn predicate(&self) -> NSPredicate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, predicate)
    }
    unsafe fn setPredicate_(&self, predicate: NSPredicate)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPredicate : predicate)
    }
    unsafe fn sortDescriptors(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sortDescriptors)
    }
    unsafe fn setSortDescriptors_(&self, sortDescriptors: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSortDescriptors : sortDescriptors)
    }
    unsafe fn valueListAttributes(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, valueListAttributes)
    }
    unsafe fn setValueListAttributes_(&self, valueListAttributes: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setValueListAttributes : valueListAttributes)
    }
    unsafe fn groupingAttributes(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupingAttributes)
    }
    unsafe fn setGroupingAttributes_(&self, groupingAttributes: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupingAttributes : groupingAttributes)
    }
    unsafe fn notificationBatchingInterval(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, notificationBatchingInterval)
    }
    unsafe fn setNotificationBatchingInterval_(&self, notificationBatchingInterval: NSTimeInterval)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNotificationBatchingInterval : notificationBatchingInterval)
    }
    unsafe fn searchScopes(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, searchScopes)
    }
    unsafe fn setSearchScopes_(&self, searchScopes: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSearchScopes : searchScopes)
    }
    unsafe fn searchItems(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, searchItems)
    }
    unsafe fn setSearchItems_(&self, searchItems: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSearchItems : searchItems)
    }
    unsafe fn operationQueue(&self) -> NSOperationQueue
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, operationQueue)
    }
    unsafe fn setOperationQueue_(&self, operationQueue: NSOperationQueue)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOperationQueue : operationQueue)
    }
    unsafe fn isStarted(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isStarted)
    }
    unsafe fn isGathering(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isGathering)
    }
    unsafe fn isStopped(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isStopped)
    }
    unsafe fn resultCount(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, resultCount)
    }
    unsafe fn results(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, results)
    }
    unsafe fn valueLists(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, valueLists)
    }
    unsafe fn groupedResults(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupedResults)
    }
}
pub trait PNSMetadataQueryDelegate: Sized + std::ops::Deref {
    unsafe fn metadataQuery_replacementObjectForResultObject_(
        &self,
        query: NSMetadataQuery,
        result: NSMetadataItem,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, metadataQuery : query, replacementObjectForResultObject : result)
    }
    unsafe fn metadataQuery_replacementValueForAttribute_value_(
        &self,
        query: NSMetadataQuery,
        attrName: NSString,
        attrValue: id,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, metadataQuery : query, replacementValueForAttribute : attrName, value : attrValue)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMetadataItem(pub id);
impl std::ops::Deref for NSMetadataItem {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMetadataItem {}
impl NSMetadataItem {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMetadataItem").unwrap(), alloc) })
    }
}
impl INSObject for NSMetadataItem {}
impl PNSObject for NSMetadataItem {}
impl std::convert::TryFrom<NSObject> for NSMetadataItem {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSMetadataItem, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMetadataItem").unwrap()) };
        if is_kind_of {
            Ok(NSMetadataItem(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSMetadataItem")
        }
    }
}
impl INSMetadataItem for NSMetadataItem {}
pub trait INSMetadataItem: Sized + std::ops::Deref {
    unsafe fn initWithURL_(&self, url: NSURL) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithURL : url)
    }
    unsafe fn valueForAttribute_(&self, key: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, valueForAttribute : key)
    }
    unsafe fn valuesForAttributes_(&self, keys: NSArray) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, valuesForAttributes : keys)
    }
    unsafe fn attributes(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attributes)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMetadataQueryAttributeValueTuple(pub id);
impl std::ops::Deref for NSMetadataQueryAttributeValueTuple {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMetadataQueryAttributeValueTuple {}
impl NSMetadataQueryAttributeValueTuple {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMetadataQueryAttributeValueTuple").unwrap(), alloc) })
    }
}
impl INSObject for NSMetadataQueryAttributeValueTuple {}
impl PNSObject for NSMetadataQueryAttributeValueTuple {}
impl std::convert::TryFrom<NSObject> for NSMetadataQueryAttributeValueTuple {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSMetadataQueryAttributeValueTuple, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMetadataQueryAttributeValueTuple").unwrap())
        };
        if is_kind_of {
            Ok(NSMetadataQueryAttributeValueTuple(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSMetadataQueryAttributeValueTuple")
        }
    }
}
impl INSMetadataQueryAttributeValueTuple for NSMetadataQueryAttributeValueTuple {}
pub trait INSMetadataQueryAttributeValueTuple: Sized + std::ops::Deref {
    unsafe fn attribute(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attribute)
    }
    unsafe fn value(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn count(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, count)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMetadataQueryResultGroup(pub id);
impl std::ops::Deref for NSMetadataQueryResultGroup {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMetadataQueryResultGroup {}
impl NSMetadataQueryResultGroup {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMetadataQueryResultGroup").unwrap(), alloc) })
    }
}
impl INSObject for NSMetadataQueryResultGroup {}
impl PNSObject for NSMetadataQueryResultGroup {}
impl std::convert::TryFrom<NSObject> for NSMetadataQueryResultGroup {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSMetadataQueryResultGroup, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMetadataQueryResultGroup").unwrap()) };
        if is_kind_of {
            Ok(NSMetadataQueryResultGroup(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSMetadataQueryResultGroup")
        }
    }
}
impl INSMetadataQueryResultGroup for NSMetadataQueryResultGroup {}
pub trait INSMetadataQueryResultGroup: Sized + std::ops::Deref {
    unsafe fn resultAtIndex_(&self, idx: NSUInteger) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resultAtIndex : idx)
    }
    unsafe fn attribute(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attribute)
    }
    unsafe fn value(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, value)
    }
    unsafe fn subgroups(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, subgroups)
    }
    unsafe fn resultCount(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, resultCount)
    }
    unsafe fn results(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, results)
    }
}
pub type NSNetServicesError = NSInteger;
pub type NSNetServiceOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSNetService(pub id);
impl std::ops::Deref for NSNetService {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSNetService {}
impl NSNetService {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSNetService").unwrap(), alloc) })
    }
}
impl INSObject for NSNetService {}
impl PNSObject for NSNetService {}
impl std::convert::TryFrom<NSObject> for NSNetService {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSNetService, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSNetService").unwrap()) };
        if is_kind_of {
            Ok(NSNetService(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSNetService")
        }
    }
}
impl INSNetService for NSNetService {}
pub trait INSNetService: Sized + std::ops::Deref {
    unsafe fn initWithDomain_type_name_port_(
        &self,
        domain: NSString,
        type_: NSString,
        name: NSString,
        port: ::std::os::raw::c_int,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDomain : domain, r#type : type_, name : name, port : port)
    }
    unsafe fn initWithDomain_type_name_(
        &self,
        domain: NSString,
        type_: NSString,
        name: NSString,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDomain : domain, r#type : type_, name : name)
    }
    unsafe fn scheduleInRunLoop_forMode_(&self, aRunLoop: NSRunLoop, mode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scheduleInRunLoop : aRunLoop, forMode : mode)
    }
    unsafe fn removeFromRunLoop_forMode_(&self, aRunLoop: NSRunLoop, mode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeFromRunLoop : aRunLoop, forMode : mode)
    }
    unsafe fn publish(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, publish)
    }
    unsafe fn publishWithOptions_(&self, options: NSNetServiceOptions)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, publishWithOptions : options)
    }
    unsafe fn resolve(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, resolve)
    }
    unsafe fn stop(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stop)
    }
    unsafe fn resolveWithTimeout_(&self, timeout: NSTimeInterval)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resolveWithTimeout : timeout)
    }
    unsafe fn getInputStream_outputStream_(
        &self,
        inputStream: *mut NSInputStream,
        outputStream: *mut NSOutputStream,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getInputStream : inputStream, outputStream : outputStream)
    }
    unsafe fn setTXTRecordData_(&self, recordData: NSData) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTXTRecordData : recordData)
    }
    unsafe fn TXTRecordData(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, TXTRecordData)
    }
    unsafe fn startMonitoring(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startMonitoring)
    }
    unsafe fn stopMonitoring(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stopMonitoring)
    }
    unsafe fn delegate(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delegate)
    }
    unsafe fn setDelegate_(&self, delegate: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelegate : delegate)
    }
    unsafe fn includesPeerToPeer(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, includesPeerToPeer)
    }
    unsafe fn setIncludesPeerToPeer_(&self, includesPeerToPeer: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIncludesPeerToPeer : includesPeerToPeer)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn type_(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, type)
    }
    unsafe fn domain(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, domain)
    }
    unsafe fn hostName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hostName)
    }
    unsafe fn addresses(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, addresses)
    }
    unsafe fn port(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, port)
    }
    unsafe fn dictionaryFromTXTRecordData_(txtData: NSData) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNetService").unwrap(), dictionaryFromTXTRecordData : txtData)
    }
    unsafe fn dataFromTXTRecordDictionary_(txtDictionary: NSDictionary) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSNetService").unwrap(), dataFromTXTRecordDictionary : txtDictionary)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSNetServiceBrowser(pub id);
impl std::ops::Deref for NSNetServiceBrowser {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSNetServiceBrowser {}
impl NSNetServiceBrowser {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSNetServiceBrowser").unwrap(), alloc) })
    }
}
impl INSObject for NSNetServiceBrowser {}
impl PNSObject for NSNetServiceBrowser {}
impl std::convert::TryFrom<NSObject> for NSNetServiceBrowser {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSNetServiceBrowser, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSNetServiceBrowser").unwrap()) };
        if is_kind_of {
            Ok(NSNetServiceBrowser(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSNetServiceBrowser")
        }
    }
}
impl INSNetServiceBrowser for NSNetServiceBrowser {}
pub trait INSNetServiceBrowser: 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 scheduleInRunLoop_forMode_(&self, aRunLoop: NSRunLoop, mode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scheduleInRunLoop : aRunLoop, forMode : mode)
    }
    unsafe fn removeFromRunLoop_forMode_(&self, aRunLoop: NSRunLoop, mode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeFromRunLoop : aRunLoop, forMode : mode)
    }
    unsafe fn searchForBrowsableDomains(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, searchForBrowsableDomains)
    }
    unsafe fn searchForRegistrationDomains(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, searchForRegistrationDomains)
    }
    unsafe fn searchForServicesOfType_inDomain_(&self, type_: NSString, domainString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, searchForServicesOfType : type_, inDomain : domainString)
    }
    unsafe fn stop(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stop)
    }
    unsafe fn delegate(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delegate)
    }
    unsafe fn setDelegate_(&self, delegate: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelegate : delegate)
    }
    unsafe fn includesPeerToPeer(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, includesPeerToPeer)
    }
    unsafe fn setIncludesPeerToPeer_(&self, includesPeerToPeer: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIncludesPeerToPeer : includesPeerToPeer)
    }
}
pub trait PNSNetServiceDelegate: Sized + std::ops::Deref {
    unsafe fn netServiceWillPublish_(&self, sender: NSNetService)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, netServiceWillPublish : sender)
    }
    unsafe fn netServiceDidPublish_(&self, sender: NSNetService)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, netServiceDidPublish : sender)
    }
    unsafe fn netService_didNotPublish_(&self, sender: NSNetService, errorDict: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, netService : sender, didNotPublish : errorDict)
    }
    unsafe fn netServiceWillResolve_(&self, sender: NSNetService)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, netServiceWillResolve : sender)
    }
    unsafe fn netServiceDidResolveAddress_(&self, sender: NSNetService)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, netServiceDidResolveAddress : sender)
    }
    unsafe fn netService_didNotResolve_(&self, sender: NSNetService, errorDict: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, netService : sender, didNotResolve : errorDict)
    }
    unsafe fn netServiceDidStop_(&self, sender: NSNetService)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, netServiceDidStop : sender)
    }
    unsafe fn netService_didUpdateTXTRecordData_(&self, sender: NSNetService, data: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, netService : sender, didUpdateTXTRecordData : data)
    }
    unsafe fn netService_didAcceptConnectionWithInputStream_outputStream_(
        &self,
        sender: NSNetService,
        inputStream: NSInputStream,
        outputStream: NSOutputStream,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, netService : sender, didAcceptConnectionWithInputStream : inputStream, outputStream : outputStream)
    }
}
pub trait PNSNetServiceBrowserDelegate: Sized + std::ops::Deref {
    unsafe fn netServiceBrowserWillSearch_(&self, browser: NSNetServiceBrowser)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, netServiceBrowserWillSearch : browser)
    }
    unsafe fn netServiceBrowserDidStopSearch_(&self, browser: NSNetServiceBrowser)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, netServiceBrowserDidStopSearch : browser)
    }
    unsafe fn netServiceBrowser_didNotSearch_(
        &self,
        browser: NSNetServiceBrowser,
        errorDict: NSDictionary,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, netServiceBrowser : browser, didNotSearch : errorDict)
    }
    unsafe fn netServiceBrowser_didFindDomain_moreComing_(
        &self,
        browser: NSNetServiceBrowser,
        domainString: NSString,
        moreComing: BOOL,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, netServiceBrowser : browser, didFindDomain : domainString, moreComing : moreComing)
    }
    unsafe fn netServiceBrowser_didFindService_moreComing_(
        &self,
        browser: NSNetServiceBrowser,
        service: NSNetService,
        moreComing: BOOL,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, netServiceBrowser : browser, didFindService : service, moreComing : moreComing)
    }
    unsafe fn netServiceBrowser_didRemoveDomain_moreComing_(
        &self,
        browser: NSNetServiceBrowser,
        domainString: NSString,
        moreComing: BOOL,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, netServiceBrowser : browser, didRemoveDomain : domainString, moreComing : moreComing)
    }
    unsafe fn netServiceBrowser_didRemoveService_moreComing_(
        &self,
        browser: NSNetServiceBrowser,
        service: NSNetService,
        moreComing: BOOL,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, netServiceBrowser : browser, didRemoveService : service, moreComing : moreComing)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUbiquitousKeyValueStore(pub id);
impl std::ops::Deref for NSUbiquitousKeyValueStore {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUbiquitousKeyValueStore {}
impl NSUbiquitousKeyValueStore {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUbiquitousKeyValueStore").unwrap(), alloc) })
    }
}
impl INSObject for NSUbiquitousKeyValueStore {}
impl PNSObject for NSUbiquitousKeyValueStore {}
impl std::convert::TryFrom<NSObject> for NSUbiquitousKeyValueStore {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSUbiquitousKeyValueStore, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUbiquitousKeyValueStore").unwrap()) };
        if is_kind_of {
            Ok(NSUbiquitousKeyValueStore(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSUbiquitousKeyValueStore")
        }
    }
}
impl INSUbiquitousKeyValueStore for NSUbiquitousKeyValueStore {}
pub trait INSUbiquitousKeyValueStore: Sized + std::ops::Deref {
    unsafe fn objectForKey_(&self, aKey: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectForKey : aKey)
    }
    unsafe fn setObject_forKey_(&self, anObject: id, aKey: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setObject : anObject, forKey : aKey)
    }
    unsafe fn removeObjectForKey_(&self, aKey: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObjectForKey : aKey)
    }
    unsafe fn stringForKey_(&self, aKey: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, stringForKey : aKey)
    }
    unsafe fn arrayForKey_(&self, aKey: NSString) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, arrayForKey : aKey)
    }
    unsafe fn dictionaryForKey_(&self, aKey: NSString) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dictionaryForKey : aKey)
    }
    unsafe fn dataForKey_(&self, aKey: NSString) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dataForKey : aKey)
    }
    unsafe fn longLongForKey_(&self, aKey: NSString) -> ::std::os::raw::c_longlong
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, longLongForKey : aKey)
    }
    unsafe fn doubleForKey_(&self, aKey: NSString) -> f64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, doubleForKey : aKey)
    }
    unsafe fn boolForKey_(&self, aKey: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, boolForKey : aKey)
    }
    unsafe fn setString_forKey_(&self, aString: NSString, aKey: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setString : aString, forKey : aKey)
    }
    unsafe fn setData_forKey_(&self, aData: NSData, aKey: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setData : aData, forKey : aKey)
    }
    unsafe fn setArray_forKey_(&self, anArray: NSArray, aKey: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArray : anArray, forKey : aKey)
    }
    unsafe fn setDictionary_forKey_(&self, aDictionary: NSDictionary, aKey: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDictionary : aDictionary, forKey : aKey)
    }
    unsafe fn setLongLong_forKey_(&self, value: ::std::os::raw::c_longlong, aKey: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLongLong : value, forKey : aKey)
    }
    unsafe fn setDouble_forKey_(&self, value: f64, aKey: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDouble : value, forKey : aKey)
    }
    unsafe fn setBool_forKey_(&self, value: BOOL, aKey: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBool : value, forKey : aKey)
    }
    unsafe fn synchronize(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, synchronize)
    }
    unsafe fn dictionaryRepresentation(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dictionaryRepresentation)
    }
    unsafe fn defaultStore() -> NSUbiquitousKeyValueStore
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUbiquitousKeyValueStore").unwrap(), defaultStore)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUndoManager(pub id);
impl std::ops::Deref for NSUndoManager {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUndoManager {}
impl NSUndoManager {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUndoManager").unwrap(), alloc) })
    }
}
impl INSObject for NSUndoManager {}
impl PNSObject for NSUndoManager {}
impl std::convert::TryFrom<NSObject> for NSUndoManager {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSUndoManager, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUndoManager").unwrap()) };
        if is_kind_of {
            Ok(NSUndoManager(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSUndoManager")
        }
    }
}
impl INSUndoManager for NSUndoManager {}
pub trait INSUndoManager: Sized + std::ops::Deref {
    unsafe fn beginUndoGrouping(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, beginUndoGrouping)
    }
    unsafe fn endUndoGrouping(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endUndoGrouping)
    }
    unsafe fn disableUndoRegistration(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, disableUndoRegistration)
    }
    unsafe fn enableUndoRegistration(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, enableUndoRegistration)
    }
    unsafe fn undo(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, undo)
    }
    unsafe fn redo(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, redo)
    }
    unsafe fn undoNestedGroup(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, undoNestedGroup)
    }
    unsafe fn removeAllActions(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, removeAllActions)
    }
    unsafe fn removeAllActionsWithTarget_(&self, target: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeAllActionsWithTarget : target)
    }
    unsafe fn registerUndoWithTarget_selector_object_(
        &self,
        target: id,
        selector: objc2::runtime::Sel,
        object: id,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, registerUndoWithTarget : target, selector : selector, object : object)
    }
    unsafe fn prepareWithInvocationTarget_(&self, target: id) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, prepareWithInvocationTarget : target)
    }
    unsafe fn registerUndoWithTarget_handler_(
        &self,
        target: id,
        undoHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, registerUndoWithTarget : target, handler : undoHandler)
    }
    unsafe fn setActionIsDiscardable_(&self, discardable: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActionIsDiscardable : discardable)
    }
    unsafe fn setActionName_(&self, actionName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActionName : actionName)
    }
    unsafe fn undoActionUserInfoValueForKey_(&self, key: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, undoActionUserInfoValueForKey : key)
    }
    unsafe fn redoActionUserInfoValueForKey_(&self, key: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, redoActionUserInfoValueForKey : key)
    }
    unsafe fn setActionUserInfoValue_forKey_(&self, info: id, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActionUserInfoValue : info, forKey : key)
    }
    unsafe fn undoMenuTitleForUndoActionName_(&self, actionName: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, undoMenuTitleForUndoActionName : actionName)
    }
    unsafe fn redoMenuTitleForUndoActionName_(&self, actionName: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, redoMenuTitleForUndoActionName : actionName)
    }
    unsafe fn groupingLevel(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupingLevel)
    }
    unsafe fn isUndoRegistrationEnabled(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isUndoRegistrationEnabled)
    }
    unsafe fn groupsByEvent(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, groupsByEvent)
    }
    unsafe fn setGroupsByEvent_(&self, groupsByEvent: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setGroupsByEvent : groupsByEvent)
    }
    unsafe fn levelsOfUndo(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, levelsOfUndo)
    }
    unsafe fn setLevelsOfUndo_(&self, levelsOfUndo: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLevelsOfUndo : levelsOfUndo)
    }
    unsafe fn runLoopModes(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, runLoopModes)
    }
    unsafe fn setRunLoopModes_(&self, runLoopModes: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRunLoopModes : runLoopModes)
    }
    unsafe fn canUndo(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, canUndo)
    }
    unsafe fn canRedo(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, canRedo)
    }
    unsafe fn undoCount(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, undoCount)
    }
    unsafe fn redoCount(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, redoCount)
    }
    unsafe fn isUndoing(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isUndoing)
    }
    unsafe fn isRedoing(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isRedoing)
    }
    unsafe fn undoActionIsDiscardable(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, undoActionIsDiscardable)
    }
    unsafe fn redoActionIsDiscardable(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, redoActionIsDiscardable)
    }
    unsafe fn undoActionName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, undoActionName)
    }
    unsafe fn redoActionName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, redoActionName)
    }
    unsafe fn undoMenuItemTitle(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, undoMenuItemTitle)
    }
    unsafe fn redoMenuItemTitle(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, redoMenuItemTitle)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLSession(pub id);
impl std::ops::Deref for NSURLSession {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLSession {}
impl NSURLSession {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSession").unwrap(), alloc) })
    }
}
impl INSObject for NSURLSession {}
impl PNSObject for NSURLSession {}
impl std::convert::TryFrom<NSObject> for NSURLSession {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSURLSession, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLSession").unwrap()) };
        if is_kind_of {
            Ok(NSURLSession(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSURLSession")
        }
    }
}
impl INSURLSession for NSURLSession {}
pub trait INSURLSession: Sized + std::ops::Deref {
    unsafe fn finishTasksAndInvalidate(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, finishTasksAndInvalidate)
    }
    unsafe fn invalidateAndCancel(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invalidateAndCancel)
    }
    unsafe fn resetWithCompletionHandler_(&self, completionHandler: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resetWithCompletionHandler : completionHandler)
    }
    unsafe fn flushWithCompletionHandler_(&self, completionHandler: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, flushWithCompletionHandler : completionHandler)
    }
    unsafe fn getTasksWithCompletionHandler_(&self, completionHandler: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getTasksWithCompletionHandler : completionHandler)
    }
    unsafe fn getAllTasksWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getAllTasksWithCompletionHandler : completionHandler)
    }
    unsafe fn dataTaskWithRequest_(&self, request: NSURLRequest) -> NSURLSessionDataTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dataTaskWithRequest : request)
    }
    unsafe fn dataTaskWithURL_(&self, url: NSURL) -> NSURLSessionDataTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dataTaskWithURL : url)
    }
    unsafe fn uploadTaskWithRequest_fromFile_(
        &self,
        request: NSURLRequest,
        fileURL: NSURL,
    ) -> NSURLSessionUploadTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, uploadTaskWithRequest : request, fromFile : fileURL)
    }
    unsafe fn uploadTaskWithRequest_fromData_(
        &self,
        request: NSURLRequest,
        bodyData: NSData,
    ) -> NSURLSessionUploadTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, uploadTaskWithRequest : request, fromData : bodyData)
    }
    unsafe fn uploadTaskWithResumeData_(&self, resumeData: NSData) -> NSURLSessionUploadTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, uploadTaskWithResumeData : resumeData)
    }
    unsafe fn uploadTaskWithStreamedRequest_(&self, request: NSURLRequest) -> NSURLSessionUploadTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, uploadTaskWithStreamedRequest : request)
    }
    unsafe fn downloadTaskWithRequest_(&self, request: NSURLRequest) -> NSURLSessionDownloadTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, downloadTaskWithRequest : request)
    }
    unsafe fn downloadTaskWithURL_(&self, url: NSURL) -> NSURLSessionDownloadTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, downloadTaskWithURL : url)
    }
    unsafe fn downloadTaskWithResumeData_(&self, resumeData: NSData) -> NSURLSessionDownloadTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, downloadTaskWithResumeData : resumeData)
    }
    unsafe fn streamTaskWithHostName_port_(
        &self,
        hostname: NSString,
        port: NSInteger,
    ) -> NSURLSessionStreamTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, streamTaskWithHostName : hostname, port : port)
    }
    unsafe fn streamTaskWithNetService_(&self, service: NSNetService) -> NSURLSessionStreamTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, streamTaskWithNetService : service)
    }
    unsafe fn webSocketTaskWithURL_(&self, url: NSURL) -> NSURLSessionWebSocketTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, webSocketTaskWithURL : url)
    }
    unsafe fn webSocketTaskWithURL_protocols_(
        &self,
        url: NSURL,
        protocols: NSArray,
    ) -> NSURLSessionWebSocketTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, webSocketTaskWithURL : url, protocols : protocols)
    }
    unsafe fn webSocketTaskWithRequest_(&self, request: NSURLRequest) -> NSURLSessionWebSocketTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, webSocketTaskWithRequest : request)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn delegateQueue(&self) -> NSOperationQueue
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delegateQueue)
    }
    unsafe fn delegate(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delegate)
    }
    unsafe fn configuration(&self) -> NSURLSessionConfiguration
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, configuration)
    }
    unsafe fn sessionDescription(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sessionDescription)
    }
    unsafe fn setSessionDescription_(&self, sessionDescription: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSessionDescription : sessionDescription)
    }
    unsafe fn sessionWithConfiguration_(configuration: NSURLSessionConfiguration) -> NSURLSession
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSession").unwrap(), sessionWithConfiguration : configuration)
    }
    unsafe fn sessionWithConfiguration_delegate_delegateQueue_(
        configuration: NSURLSessionConfiguration,
        delegate: *mut u64,
        queue: NSOperationQueue,
    ) -> NSURLSession
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSession").unwrap(), sessionWithConfiguration : configuration, delegate : delegate, delegateQueue : queue)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSession").unwrap(), new)
    }
    unsafe fn sharedSession() -> NSURLSession
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSession").unwrap(), sharedSession)
    }
}
impl NSURLSession_NSURLSessionAsynchronousConvenience for NSURLSession {}
pub trait NSURLSession_NSURLSessionAsynchronousConvenience: Sized + std::ops::Deref {
    unsafe fn dataTaskWithRequest_completionHandler_(
        &self,
        request: NSURLRequest,
        completionHandler: *mut ::std::os::raw::c_void,
    ) -> NSURLSessionDataTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dataTaskWithRequest : request, completionHandler : completionHandler)
    }
    unsafe fn dataTaskWithURL_completionHandler_(
        &self,
        url: NSURL,
        completionHandler: *mut ::std::os::raw::c_void,
    ) -> NSURLSessionDataTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dataTaskWithURL : url, completionHandler : completionHandler)
    }
    unsafe fn uploadTaskWithRequest_fromFile_completionHandler_(
        &self,
        request: NSURLRequest,
        fileURL: NSURL,
        completionHandler: *mut ::std::os::raw::c_void,
    ) -> NSURLSessionUploadTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, uploadTaskWithRequest : request, fromFile : fileURL, completionHandler : completionHandler)
    }
    unsafe fn uploadTaskWithRequest_fromData_completionHandler_(
        &self,
        request: NSURLRequest,
        bodyData: NSData,
        completionHandler: *mut ::std::os::raw::c_void,
    ) -> NSURLSessionUploadTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, uploadTaskWithRequest : request, fromData : bodyData, completionHandler : completionHandler)
    }
    unsafe fn uploadTaskWithResumeData_completionHandler_(
        &self,
        resumeData: NSData,
        completionHandler: *mut ::std::os::raw::c_void,
    ) -> NSURLSessionUploadTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, uploadTaskWithResumeData : resumeData, completionHandler : completionHandler)
    }
    unsafe fn downloadTaskWithRequest_completionHandler_(
        &self,
        request: NSURLRequest,
        completionHandler: *mut ::std::os::raw::c_void,
    ) -> NSURLSessionDownloadTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, downloadTaskWithRequest : request, completionHandler : completionHandler)
    }
    unsafe fn downloadTaskWithURL_completionHandler_(
        &self,
        url: NSURL,
        completionHandler: *mut ::std::os::raw::c_void,
    ) -> NSURLSessionDownloadTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, downloadTaskWithURL : url, completionHandler : completionHandler)
    }
    unsafe fn downloadTaskWithResumeData_completionHandler_(
        &self,
        resumeData: NSData,
        completionHandler: *mut ::std::os::raw::c_void,
    ) -> NSURLSessionDownloadTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, downloadTaskWithResumeData : resumeData, completionHandler : completionHandler)
    }
}
pub type NSURLSessionTaskState = NSInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLSessionTask(pub id);
impl std::ops::Deref for NSURLSessionTask {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLSessionTask {}
impl NSURLSessionTask {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSessionTask").unwrap(), alloc) })
    }
}
impl PNSCopying for NSURLSessionTask {}
impl PNSProgressReporting for NSURLSessionTask {}
impl INSObject for NSURLSessionTask {}
impl PNSObject for NSURLSessionTask {}
impl std::convert::TryFrom<NSObject> for NSURLSessionTask {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSURLSessionTask, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLSessionTask").unwrap()) };
        if is_kind_of {
            Ok(NSURLSessionTask(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSURLSessionTask")
        }
    }
}
impl INSURLSessionTask for NSURLSessionTask {}
pub trait INSURLSessionTask: Sized + std::ops::Deref {
    unsafe fn cancel(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cancel)
    }
    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 init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn taskIdentifier(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, taskIdentifier)
    }
    unsafe fn originalRequest(&self) -> NSURLRequest
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, originalRequest)
    }
    unsafe fn currentRequest(&self) -> NSURLRequest
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentRequest)
    }
    unsafe fn response(&self) -> NSURLResponse
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, response)
    }
    unsafe fn delegate(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delegate)
    }
    unsafe fn setDelegate_(&self, delegate: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelegate : delegate)
    }
    unsafe fn progress(&self) -> NSProgress
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, progress)
    }
    unsafe fn earliestBeginDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, earliestBeginDate)
    }
    unsafe fn setEarliestBeginDate_(&self, earliestBeginDate: NSDate)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEarliestBeginDate : earliestBeginDate)
    }
    unsafe fn countOfBytesClientExpectsToSend(&self) -> i64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, countOfBytesClientExpectsToSend)
    }
    unsafe fn setCountOfBytesClientExpectsToSend_(&self, countOfBytesClientExpectsToSend: i64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCountOfBytesClientExpectsToSend : countOfBytesClientExpectsToSend)
    }
    unsafe fn countOfBytesClientExpectsToReceive(&self) -> i64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, countOfBytesClientExpectsToReceive)
    }
    unsafe fn setCountOfBytesClientExpectsToReceive_(&self, countOfBytesClientExpectsToReceive: i64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCountOfBytesClientExpectsToReceive : countOfBytesClientExpectsToReceive)
    }
    unsafe fn countOfBytesSent(&self) -> i64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, countOfBytesSent)
    }
    unsafe fn countOfBytesReceived(&self) -> i64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, countOfBytesReceived)
    }
    unsafe fn countOfBytesExpectedToSend(&self) -> i64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, countOfBytesExpectedToSend)
    }
    unsafe fn countOfBytesExpectedToReceive(&self) -> i64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, countOfBytesExpectedToReceive)
    }
    unsafe fn taskDescription(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, taskDescription)
    }
    unsafe fn setTaskDescription_(&self, taskDescription: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTaskDescription : taskDescription)
    }
    unsafe fn state(&self) -> NSURLSessionTaskState
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, state)
    }
    unsafe fn error(&self) -> NSError
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, error)
    }
    unsafe fn priority(&self) -> f32
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, priority)
    }
    unsafe fn setPriority_(&self, priority: f32)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPriority : priority)
    }
    unsafe fn prefersIncrementalDelivery(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, prefersIncrementalDelivery)
    }
    unsafe fn setPrefersIncrementalDelivery_(&self, prefersIncrementalDelivery: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPrefersIncrementalDelivery : prefersIncrementalDelivery)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSessionTask").unwrap(), new)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLSessionDataTask(pub id);
impl std::ops::Deref for NSURLSessionDataTask {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLSessionDataTask {}
impl NSURLSessionDataTask {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSessionDataTask").unwrap(), alloc) })
    }
}
impl INSURLSessionTask for NSURLSessionDataTask {}
impl PNSCopying for NSURLSessionDataTask {}
impl PNSProgressReporting for NSURLSessionDataTask {}
impl From<NSURLSessionDataTask> for NSURLSessionTask {
    fn from(child: NSURLSessionDataTask) -> NSURLSessionTask {
        NSURLSessionTask(child.0)
    }
}
impl std::convert::TryFrom<NSURLSessionTask> for NSURLSessionDataTask {
    type Error = &'static str;
    fn try_from(parent: NSURLSessionTask) -> Result<NSURLSessionDataTask, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLSessionDataTask").unwrap()) };
        if is_kind_of {
            Ok(NSURLSessionDataTask(parent.0))
        } else {
            Err("This NSURLSessionTask cannot be downcasted to NSURLSessionDataTask")
        }
    }
}
impl INSObject for NSURLSessionDataTask {}
impl PNSObject for NSURLSessionDataTask {}
impl INSURLSessionDataTask for NSURLSessionDataTask {}
pub trait INSURLSessionDataTask: 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"NSURLSessionDataTask").unwrap(), new)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLSessionUploadTask(pub id);
impl std::ops::Deref for NSURLSessionUploadTask {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLSessionUploadTask {}
impl NSURLSessionUploadTask {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSessionUploadTask").unwrap(), alloc) })
    }
}
impl INSURLSessionDataTask for NSURLSessionUploadTask {}
impl From<NSURLSessionUploadTask> for NSURLSessionDataTask {
    fn from(child: NSURLSessionUploadTask) -> NSURLSessionDataTask {
        NSURLSessionDataTask(child.0)
    }
}
impl std::convert::TryFrom<NSURLSessionDataTask> for NSURLSessionUploadTask {
    type Error = &'static str;
    fn try_from(parent: NSURLSessionDataTask) -> Result<NSURLSessionUploadTask, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLSessionUploadTask").unwrap()) };
        if is_kind_of {
            Ok(NSURLSessionUploadTask(parent.0))
        } else {
            Err("This NSURLSessionDataTask cannot be downcasted to NSURLSessionUploadTask")
        }
    }
}
impl INSURLSessionTask for NSURLSessionUploadTask {}
impl PNSCopying for NSURLSessionUploadTask {}
impl PNSProgressReporting for NSURLSessionUploadTask {}
impl INSObject for NSURLSessionUploadTask {}
impl PNSObject for NSURLSessionUploadTask {}
impl INSURLSessionUploadTask for NSURLSessionUploadTask {}
pub trait INSURLSessionUploadTask: 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 cancelByProducingResumeData_(&self, completionHandler: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelByProducingResumeData : completionHandler)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSessionUploadTask").unwrap(), new)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLSessionDownloadTask(pub id);
impl std::ops::Deref for NSURLSessionDownloadTask {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLSessionDownloadTask {}
impl NSURLSessionDownloadTask {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSessionDownloadTask").unwrap(), alloc) })
    }
}
impl INSURLSessionTask for NSURLSessionDownloadTask {}
impl PNSCopying for NSURLSessionDownloadTask {}
impl PNSProgressReporting for NSURLSessionDownloadTask {}
impl std::convert::TryFrom<NSURLSessionTask> for NSURLSessionDownloadTask {
    type Error = &'static str;
    fn try_from(parent: NSURLSessionTask) -> Result<NSURLSessionDownloadTask, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLSessionDownloadTask").unwrap()) };
        if is_kind_of {
            Ok(NSURLSessionDownloadTask(parent.0))
        } else {
            Err("This NSURLSessionTask cannot be downcasted to NSURLSessionDownloadTask")
        }
    }
}
impl INSObject for NSURLSessionDownloadTask {}
impl PNSObject for NSURLSessionDownloadTask {}
impl INSURLSessionDownloadTask for NSURLSessionDownloadTask {}
pub trait INSURLSessionDownloadTask: Sized + std::ops::Deref {
    unsafe fn cancelByProducingResumeData_(&self, completionHandler: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelByProducingResumeData : completionHandler)
    }
    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"NSURLSessionDownloadTask").unwrap(), new)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLSessionStreamTask(pub id);
impl std::ops::Deref for NSURLSessionStreamTask {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLSessionStreamTask {}
impl NSURLSessionStreamTask {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSessionStreamTask").unwrap(), alloc) })
    }
}
impl INSURLSessionTask for NSURLSessionStreamTask {}
impl PNSCopying for NSURLSessionStreamTask {}
impl PNSProgressReporting for NSURLSessionStreamTask {}
impl std::convert::TryFrom<NSURLSessionTask> for NSURLSessionStreamTask {
    type Error = &'static str;
    fn try_from(parent: NSURLSessionTask) -> Result<NSURLSessionStreamTask, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLSessionStreamTask").unwrap()) };
        if is_kind_of {
            Ok(NSURLSessionStreamTask(parent.0))
        } else {
            Err("This NSURLSessionTask cannot be downcasted to NSURLSessionStreamTask")
        }
    }
}
impl INSObject for NSURLSessionStreamTask {}
impl PNSObject for NSURLSessionStreamTask {}
impl INSURLSessionStreamTask for NSURLSessionStreamTask {}
pub trait INSURLSessionStreamTask: Sized + std::ops::Deref {
    unsafe fn readDataOfMinLength_maxLength_timeout_completionHandler_(
        &self,
        minBytes: NSUInteger,
        maxBytes: NSUInteger,
        timeout: NSTimeInterval,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, readDataOfMinLength : minBytes, maxLength : maxBytes, timeout : timeout, completionHandler : completionHandler)
    }
    unsafe fn writeData_timeout_completionHandler_(
        &self,
        data: NSData,
        timeout: NSTimeInterval,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, writeData : data, timeout : timeout, completionHandler : completionHandler)
    }
    unsafe fn captureStreams(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, captureStreams)
    }
    unsafe fn closeWrite(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, closeWrite)
    }
    unsafe fn closeRead(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, closeRead)
    }
    unsafe fn startSecureConnection(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startSecureConnection)
    }
    unsafe fn stopSecureConnection(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stopSecureConnection)
    }
    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"NSURLSessionStreamTask").unwrap(), new)
    }
}
pub type NSURLSessionWebSocketMessageType = NSInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLSessionWebSocketMessage(pub id);
impl std::ops::Deref for NSURLSessionWebSocketMessage {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLSessionWebSocketMessage {}
impl NSURLSessionWebSocketMessage {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSessionWebSocketMessage").unwrap(), alloc) })
    }
}
impl INSObject for NSURLSessionWebSocketMessage {}
impl PNSObject for NSURLSessionWebSocketMessage {}
impl std::convert::TryFrom<NSObject> for NSURLSessionWebSocketMessage {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSURLSessionWebSocketMessage, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLSessionWebSocketMessage").unwrap()) };
        if is_kind_of {
            Ok(NSURLSessionWebSocketMessage(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSURLSessionWebSocketMessage")
        }
    }
}
impl INSURLSessionWebSocketMessage for NSURLSessionWebSocketMessage {}
pub trait INSURLSessionWebSocketMessage: 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 initWithString_(&self, string: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithString : string)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn type_(&self) -> NSURLSessionWebSocketMessageType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, type)
    }
    unsafe fn data(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
    unsafe fn string(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, string)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSessionWebSocketMessage").unwrap(), new)
    }
}
pub type NSURLSessionWebSocketCloseCode = NSInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLSessionWebSocketTask(pub id);
impl std::ops::Deref for NSURLSessionWebSocketTask {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLSessionWebSocketTask {}
impl NSURLSessionWebSocketTask {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSessionWebSocketTask").unwrap(), alloc) })
    }
}
impl INSURLSessionTask for NSURLSessionWebSocketTask {}
impl PNSCopying for NSURLSessionWebSocketTask {}
impl PNSProgressReporting for NSURLSessionWebSocketTask {}
impl std::convert::TryFrom<NSURLSessionTask> for NSURLSessionWebSocketTask {
    type Error = &'static str;
    fn try_from(parent: NSURLSessionTask) -> Result<NSURLSessionWebSocketTask, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLSessionWebSocketTask").unwrap()) };
        if is_kind_of {
            Ok(NSURLSessionWebSocketTask(parent.0))
        } else {
            Err("This NSURLSessionTask cannot be downcasted to NSURLSessionWebSocketTask")
        }
    }
}
impl INSObject for NSURLSessionWebSocketTask {}
impl PNSObject for NSURLSessionWebSocketTask {}
impl INSURLSessionWebSocketTask for NSURLSessionWebSocketTask {}
pub trait INSURLSessionWebSocketTask: Sized + std::ops::Deref {
    unsafe fn sendMessage_completionHandler_(
        &self,
        message: NSURLSessionWebSocketMessage,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sendMessage : message, completionHandler : completionHandler)
    }
    unsafe fn receiveMessageWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, receiveMessageWithCompletionHandler : completionHandler)
    }
    unsafe fn sendPingWithPongReceiveHandler_(
        &self,
        pongReceiveHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sendPingWithPongReceiveHandler : pongReceiveHandler)
    }
    unsafe fn cancelWithCloseCode_reason_(
        &self,
        closeCode: NSURLSessionWebSocketCloseCode,
        reason: NSData,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, cancelWithCloseCode : closeCode, reason : reason)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn maximumMessageSize(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, maximumMessageSize)
    }
    unsafe fn setMaximumMessageSize_(&self, maximumMessageSize: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMaximumMessageSize : maximumMessageSize)
    }
    unsafe fn closeCode(&self) -> NSURLSessionWebSocketCloseCode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, closeCode)
    }
    unsafe fn closeReason(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, closeReason)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSessionWebSocketTask").unwrap(), new)
    }
}
pub type NSURLSessionMultipathServiceType = NSInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLSessionConfiguration(pub id);
impl std::ops::Deref for NSURLSessionConfiguration {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLSessionConfiguration {}
impl NSURLSessionConfiguration {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSessionConfiguration").unwrap(), alloc) })
    }
}
impl PNSCopying for NSURLSessionConfiguration {}
impl INSObject for NSURLSessionConfiguration {}
impl PNSObject for NSURLSessionConfiguration {}
impl std::convert::TryFrom<NSObject> for NSURLSessionConfiguration {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSURLSessionConfiguration, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLSessionConfiguration").unwrap()) };
        if is_kind_of {
            Ok(NSURLSessionConfiguration(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSURLSessionConfiguration")
        }
    }
}
impl INSURLSessionConfiguration for NSURLSessionConfiguration {}
pub trait INSURLSessionConfiguration: 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 identifier(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, identifier)
    }
    unsafe fn requestCachePolicy(&self) -> NSURLRequestCachePolicy
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requestCachePolicy)
    }
    unsafe fn setRequestCachePolicy_(&self, requestCachePolicy: NSURLRequestCachePolicy)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRequestCachePolicy : requestCachePolicy)
    }
    unsafe fn timeoutIntervalForRequest(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeoutIntervalForRequest)
    }
    unsafe fn setTimeoutIntervalForRequest_(&self, timeoutIntervalForRequest: NSTimeInterval)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeoutIntervalForRequest : timeoutIntervalForRequest)
    }
    unsafe fn timeoutIntervalForResource(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeoutIntervalForResource)
    }
    unsafe fn setTimeoutIntervalForResource_(&self, timeoutIntervalForResource: NSTimeInterval)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeoutIntervalForResource : timeoutIntervalForResource)
    }
    unsafe fn networkServiceType(&self) -> NSURLRequestNetworkServiceType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, networkServiceType)
    }
    unsafe fn setNetworkServiceType_(&self, networkServiceType: NSURLRequestNetworkServiceType)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNetworkServiceType : networkServiceType)
    }
    unsafe fn allowsCellularAccess(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowsCellularAccess)
    }
    unsafe fn setAllowsCellularAccess_(&self, allowsCellularAccess: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAllowsCellularAccess : allowsCellularAccess)
    }
    unsafe fn allowsExpensiveNetworkAccess(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowsExpensiveNetworkAccess)
    }
    unsafe fn setAllowsExpensiveNetworkAccess_(&self, allowsExpensiveNetworkAccess: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAllowsExpensiveNetworkAccess : allowsExpensiveNetworkAccess)
    }
    unsafe fn allowsConstrainedNetworkAccess(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowsConstrainedNetworkAccess)
    }
    unsafe fn setAllowsConstrainedNetworkAccess_(&self, allowsConstrainedNetworkAccess: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAllowsConstrainedNetworkAccess : allowsConstrainedNetworkAccess)
    }
    unsafe fn allowsUltraConstrainedNetworkAccess(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, allowsUltraConstrainedNetworkAccess)
    }
    unsafe fn setAllowsUltraConstrainedNetworkAccess_(
        &self,
        allowsUltraConstrainedNetworkAccess: BOOL,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAllowsUltraConstrainedNetworkAccess : allowsUltraConstrainedNetworkAccess)
    }
    unsafe fn requiresDNSSECValidation(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requiresDNSSECValidation)
    }
    unsafe fn setRequiresDNSSECValidation_(&self, requiresDNSSECValidation: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRequiresDNSSECValidation : requiresDNSSECValidation)
    }
    unsafe fn waitsForConnectivity(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, waitsForConnectivity)
    }
    unsafe fn setWaitsForConnectivity_(&self, waitsForConnectivity: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWaitsForConnectivity : waitsForConnectivity)
    }
    unsafe fn isDiscretionary(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isDiscretionary)
    }
    unsafe fn setDiscretionary_(&self, discretionary: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDiscretionary : discretionary)
    }
    unsafe fn sharedContainerIdentifier(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sharedContainerIdentifier)
    }
    unsafe fn setSharedContainerIdentifier_(&self, sharedContainerIdentifier: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSharedContainerIdentifier : sharedContainerIdentifier)
    }
    unsafe fn sessionSendsLaunchEvents(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sessionSendsLaunchEvents)
    }
    unsafe fn setSessionSendsLaunchEvents_(&self, sessionSendsLaunchEvents: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSessionSendsLaunchEvents : sessionSendsLaunchEvents)
    }
    unsafe fn connectionProxyDictionary(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, connectionProxyDictionary)
    }
    unsafe fn setConnectionProxyDictionary_(&self, connectionProxyDictionary: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setConnectionProxyDictionary : connectionProxyDictionary)
    }
    unsafe fn TLSMinimumSupportedProtocol(&self) -> SSLProtocol
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, TLSMinimumSupportedProtocol)
    }
    unsafe fn setTLSMinimumSupportedProtocol_(&self, TLSMinimumSupportedProtocol: SSLProtocol)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTLSMinimumSupportedProtocol : TLSMinimumSupportedProtocol)
    }
    unsafe fn TLSMaximumSupportedProtocol(&self) -> SSLProtocol
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, TLSMaximumSupportedProtocol)
    }
    unsafe fn setTLSMaximumSupportedProtocol_(&self, TLSMaximumSupportedProtocol: SSLProtocol)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTLSMaximumSupportedProtocol : TLSMaximumSupportedProtocol)
    }
    unsafe fn TLSMinimumSupportedProtocolVersion(&self) -> tls_protocol_version_t
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, TLSMinimumSupportedProtocolVersion)
    }
    unsafe fn setTLSMinimumSupportedProtocolVersion_(
        &self,
        TLSMinimumSupportedProtocolVersion: tls_protocol_version_t,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTLSMinimumSupportedProtocolVersion : TLSMinimumSupportedProtocolVersion)
    }
    unsafe fn TLSMaximumSupportedProtocolVersion(&self) -> tls_protocol_version_t
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, TLSMaximumSupportedProtocolVersion)
    }
    unsafe fn setTLSMaximumSupportedProtocolVersion_(
        &self,
        TLSMaximumSupportedProtocolVersion: tls_protocol_version_t,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTLSMaximumSupportedProtocolVersion : TLSMaximumSupportedProtocolVersion)
    }
    unsafe fn HTTPShouldUsePipelining(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, HTTPShouldUsePipelining)
    }
    unsafe fn setHTTPShouldUsePipelining_(&self, HTTPShouldUsePipelining: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHTTPShouldUsePipelining : HTTPShouldUsePipelining)
    }
    unsafe fn HTTPShouldSetCookies(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, HTTPShouldSetCookies)
    }
    unsafe fn setHTTPShouldSetCookies_(&self, HTTPShouldSetCookies: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHTTPShouldSetCookies : HTTPShouldSetCookies)
    }
    unsafe fn HTTPCookieAcceptPolicy(&self) -> NSHTTPCookieAcceptPolicy
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, HTTPCookieAcceptPolicy)
    }
    unsafe fn setHTTPCookieAcceptPolicy_(&self, HTTPCookieAcceptPolicy: NSHTTPCookieAcceptPolicy)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHTTPCookieAcceptPolicy : HTTPCookieAcceptPolicy)
    }
    unsafe fn HTTPAdditionalHeaders(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, HTTPAdditionalHeaders)
    }
    unsafe fn setHTTPAdditionalHeaders_(&self, HTTPAdditionalHeaders: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHTTPAdditionalHeaders : HTTPAdditionalHeaders)
    }
    unsafe fn HTTPMaximumConnectionsPerHost(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, HTTPMaximumConnectionsPerHost)
    }
    unsafe fn setHTTPMaximumConnectionsPerHost_(&self, HTTPMaximumConnectionsPerHost: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHTTPMaximumConnectionsPerHost : HTTPMaximumConnectionsPerHost)
    }
    unsafe fn HTTPCookieStorage(&self) -> NSHTTPCookieStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, HTTPCookieStorage)
    }
    unsafe fn setHTTPCookieStorage_(&self, HTTPCookieStorage: NSHTTPCookieStorage)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHTTPCookieStorage : HTTPCookieStorage)
    }
    unsafe fn URLCredentialStorage(&self) -> NSURLCredentialStorage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, URLCredentialStorage)
    }
    unsafe fn setURLCredentialStorage_(&self, URLCredentialStorage: NSURLCredentialStorage)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setURLCredentialStorage : URLCredentialStorage)
    }
    unsafe fn URLCache(&self) -> NSURLCache
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, URLCache)
    }
    unsafe fn setURLCache_(&self, URLCache: NSURLCache)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setURLCache : URLCache)
    }
    unsafe fn shouldUseExtendedBackgroundIdleMode(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shouldUseExtendedBackgroundIdleMode)
    }
    unsafe fn setShouldUseExtendedBackgroundIdleMode_(
        &self,
        shouldUseExtendedBackgroundIdleMode: BOOL,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setShouldUseExtendedBackgroundIdleMode : shouldUseExtendedBackgroundIdleMode)
    }
    unsafe fn protocolClasses(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, protocolClasses)
    }
    unsafe fn setProtocolClasses_(&self, protocolClasses: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProtocolClasses : protocolClasses)
    }
    unsafe fn multipathServiceType(&self) -> NSURLSessionMultipathServiceType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, multipathServiceType)
    }
    unsafe fn setMultipathServiceType_(
        &self,
        multipathServiceType: NSURLSessionMultipathServiceType,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMultipathServiceType : multipathServiceType)
    }
    unsafe fn usesClassicLoadingMode(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, usesClassicLoadingMode)
    }
    unsafe fn setUsesClassicLoadingMode_(&self, usesClassicLoadingMode: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUsesClassicLoadingMode : usesClassicLoadingMode)
    }
    unsafe fn enablesEarlyData(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, enablesEarlyData)
    }
    unsafe fn setEnablesEarlyData_(&self, enablesEarlyData: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEnablesEarlyData : enablesEarlyData)
    }
    unsafe fn backgroundSessionConfigurationWithIdentifier_(
        identifier: NSString,
    ) -> NSURLSessionConfiguration
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSessionConfiguration").unwrap(), backgroundSessionConfigurationWithIdentifier : identifier)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSessionConfiguration").unwrap(), new)
    }
    unsafe fn defaultSessionConfiguration() -> NSURLSessionConfiguration
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSessionConfiguration").unwrap(), defaultSessionConfiguration)
    }
    unsafe fn ephemeralSessionConfiguration() -> NSURLSessionConfiguration
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSessionConfiguration").unwrap(), ephemeralSessionConfiguration)
    }
}
pub type NSURLSessionDelayedRequestDisposition = NSInteger;
pub type NSURLSessionAuthChallengeDisposition = NSInteger;
pub type NSURLSessionResponseDisposition = NSInteger;
pub trait PNSURLSessionDelegate: Sized + std::ops::Deref {
    unsafe fn URLSession_didBecomeInvalidWithError_(&self, session: NSURLSession, error: NSError)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, didBecomeInvalidWithError : error)
    }
    unsafe fn URLSession_didReceiveChallenge_completionHandler_(
        &self,
        session: NSURLSession,
        challenge: NSURLAuthenticationChallenge,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, didReceiveChallenge : challenge, completionHandler : completionHandler)
    }
    unsafe fn URLSessionDidFinishEventsForBackgroundURLSession_(&self, session: NSURLSession)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSessionDidFinishEventsForBackgroundURLSession : session)
    }
}
pub trait PNSURLSessionTaskDelegate: Sized + std::ops::Deref {
    unsafe fn URLSession_didCreateTask_(&self, session: NSURLSession, task: NSURLSessionTask)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, didCreateTask : task)
    }
    unsafe fn URLSession_task_willBeginDelayedRequest_completionHandler_(
        &self,
        session: NSURLSession,
        task: NSURLSessionTask,
        request: NSURLRequest,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, task : task, willBeginDelayedRequest : request, completionHandler : completionHandler)
    }
    unsafe fn URLSession_taskIsWaitingForConnectivity_(
        &self,
        session: NSURLSession,
        task: NSURLSessionTask,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, taskIsWaitingForConnectivity : task)
    }
    unsafe fn URLSession_task_willPerformHTTPRedirection_newRequest_completionHandler_(
        &self,
        session: NSURLSession,
        task: NSURLSessionTask,
        response: NSHTTPURLResponse,
        request: NSURLRequest,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, task : task, willPerformHTTPRedirection : response, newRequest : request, completionHandler : completionHandler)
    }
    unsafe fn URLSession_task_didReceiveChallenge_completionHandler_(
        &self,
        session: NSURLSession,
        task: NSURLSessionTask,
        challenge: NSURLAuthenticationChallenge,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, task : task, didReceiveChallenge : challenge, completionHandler : completionHandler)
    }
    unsafe fn URLSession_task_needNewBodyStream_(
        &self,
        session: NSURLSession,
        task: NSURLSessionTask,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, task : task, needNewBodyStream : completionHandler)
    }
    unsafe fn URLSession_task_needNewBodyStreamFromOffset_completionHandler_(
        &self,
        session: NSURLSession,
        task: NSURLSessionTask,
        offset: i64,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, task : task, needNewBodyStreamFromOffset : offset, completionHandler : completionHandler)
    }
    unsafe fn URLSession_task_didSendBodyData_totalBytesSent_totalBytesExpectedToSend_(
        &self,
        session: NSURLSession,
        task: NSURLSessionTask,
        bytesSent: i64,
        totalBytesSent: i64,
        totalBytesExpectedToSend: i64,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, task : task, didSendBodyData : bytesSent, totalBytesSent : totalBytesSent, totalBytesExpectedToSend : totalBytesExpectedToSend)
    }
    unsafe fn URLSession_task_didReceiveInformationalResponse_(
        &self,
        session: NSURLSession,
        task: NSURLSessionTask,
        response: NSHTTPURLResponse,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, task : task, didReceiveInformationalResponse : response)
    }
    unsafe fn URLSession_task_didFinishCollectingMetrics_(
        &self,
        session: NSURLSession,
        task: NSURLSessionTask,
        metrics: NSURLSessionTaskMetrics,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, task : task, didFinishCollectingMetrics : metrics)
    }
    unsafe fn URLSession_task_didCompleteWithError_(
        &self,
        session: NSURLSession,
        task: NSURLSessionTask,
        error: NSError,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, task : task, didCompleteWithError : error)
    }
}
pub trait PNSURLSessionDataDelegate: Sized + std::ops::Deref {
    unsafe fn URLSession_dataTask_didReceiveResponse_completionHandler_(
        &self,
        session: NSURLSession,
        dataTask: NSURLSessionDataTask,
        response: NSURLResponse,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, dataTask : dataTask, didReceiveResponse : response, completionHandler : completionHandler)
    }
    unsafe fn URLSession_dataTask_didBecomeDownloadTask_(
        &self,
        session: NSURLSession,
        dataTask: NSURLSessionDataTask,
        downloadTask: NSURLSessionDownloadTask,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, dataTask : dataTask, didBecomeDownloadTask : downloadTask)
    }
    unsafe fn URLSession_dataTask_didBecomeStreamTask_(
        &self,
        session: NSURLSession,
        dataTask: NSURLSessionDataTask,
        streamTask: NSURLSessionStreamTask,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, dataTask : dataTask, didBecomeStreamTask : streamTask)
    }
    unsafe fn URLSession_dataTask_didReceiveData_(
        &self,
        session: NSURLSession,
        dataTask: NSURLSessionDataTask,
        data: NSData,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, dataTask : dataTask, didReceiveData : data)
    }
    unsafe fn URLSession_dataTask_willCacheResponse_completionHandler_(
        &self,
        session: NSURLSession,
        dataTask: NSURLSessionDataTask,
        proposedResponse: NSCachedURLResponse,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, dataTask : dataTask, willCacheResponse : proposedResponse, completionHandler : completionHandler)
    }
}
pub trait PNSURLSessionDownloadDelegate: Sized + std::ops::Deref {
    unsafe fn URLSession_downloadTask_didFinishDownloadingToURL_(
        &self,
        session: NSURLSession,
        downloadTask: NSURLSessionDownloadTask,
        location: NSURL,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, downloadTask : downloadTask, didFinishDownloadingToURL : location)
    }
    unsafe fn URLSession_downloadTask_didWriteData_totalBytesWritten_totalBytesExpectedToWrite_(
        &self,
        session: NSURLSession,
        downloadTask: NSURLSessionDownloadTask,
        bytesWritten: i64,
        totalBytesWritten: i64,
        totalBytesExpectedToWrite: i64,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, downloadTask : downloadTask, didWriteData : bytesWritten, totalBytesWritten : totalBytesWritten, totalBytesExpectedToWrite : totalBytesExpectedToWrite)
    }
    unsafe fn URLSession_downloadTask_didResumeAtOffset_expectedTotalBytes_(
        &self,
        session: NSURLSession,
        downloadTask: NSURLSessionDownloadTask,
        fileOffset: i64,
        expectedTotalBytes: i64,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, downloadTask : downloadTask, didResumeAtOffset : fileOffset, expectedTotalBytes : expectedTotalBytes)
    }
}
pub trait PNSURLSessionStreamDelegate: Sized + std::ops::Deref {
    unsafe fn URLSession_readClosedForStreamTask_(
        &self,
        session: NSURLSession,
        streamTask: NSURLSessionStreamTask,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, readClosedForStreamTask : streamTask)
    }
    unsafe fn URLSession_writeClosedForStreamTask_(
        &self,
        session: NSURLSession,
        streamTask: NSURLSessionStreamTask,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, writeClosedForStreamTask : streamTask)
    }
    unsafe fn URLSession_betterRouteDiscoveredForStreamTask_(
        &self,
        session: NSURLSession,
        streamTask: NSURLSessionStreamTask,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, betterRouteDiscoveredForStreamTask : streamTask)
    }
    unsafe fn URLSession_streamTask_didBecomeInputStream_outputStream_(
        &self,
        session: NSURLSession,
        streamTask: NSURLSessionStreamTask,
        inputStream: NSInputStream,
        outputStream: NSOutputStream,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, streamTask : streamTask, didBecomeInputStream : inputStream, outputStream : outputStream)
    }
}
pub trait PNSURLSessionWebSocketDelegate: Sized + std::ops::Deref {
    unsafe fn URLSession_webSocketTask_didOpenWithProtocol_(
        &self,
        session: NSURLSession,
        webSocketTask: NSURLSessionWebSocketTask,
        protocol: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, webSocketTask : webSocketTask, didOpenWithProtocol : protocol)
    }
    unsafe fn URLSession_webSocketTask_didCloseWithCode_reason_(
        &self,
        session: NSURLSession,
        webSocketTask: NSURLSessionWebSocketTask,
        closeCode: NSURLSessionWebSocketCloseCode,
        reason: NSData,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, URLSession : session, webSocketTask : webSocketTask, didCloseWithCode : closeCode, reason : reason)
    }
}
impl NSURLSessionConfiguration_NSURLSessionDeprecated for NSURLSessionConfiguration {}
pub trait NSURLSessionConfiguration_NSURLSessionDeprecated: Sized + std::ops::Deref {
    unsafe fn backgroundSessionConfiguration_(identifier: NSString) -> NSURLSessionConfiguration
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSessionConfiguration").unwrap(), backgroundSessionConfiguration : identifier)
    }
}
pub type NSURLSessionTaskMetricsResourceFetchType = NSInteger;
pub type NSURLSessionTaskMetricsDomainResolutionProtocol = NSInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLSessionTaskTransactionMetrics(pub id);
impl std::ops::Deref for NSURLSessionTaskTransactionMetrics {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLSessionTaskTransactionMetrics {}
impl NSURLSessionTaskTransactionMetrics {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSessionTaskTransactionMetrics").unwrap(), alloc) })
    }
}
impl INSObject for NSURLSessionTaskTransactionMetrics {}
impl PNSObject for NSURLSessionTaskTransactionMetrics {}
impl std::convert::TryFrom<NSObject> for NSURLSessionTaskTransactionMetrics {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSURLSessionTaskTransactionMetrics, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLSessionTaskTransactionMetrics").unwrap())
        };
        if is_kind_of {
            Ok(NSURLSessionTaskTransactionMetrics(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSURLSessionTaskTransactionMetrics")
        }
    }
}
impl INSURLSessionTaskTransactionMetrics for NSURLSessionTaskTransactionMetrics {}
pub trait INSURLSessionTaskTransactionMetrics: 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 request(&self) -> NSURLRequest
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, request)
    }
    unsafe fn response(&self) -> NSURLResponse
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, response)
    }
    unsafe fn fetchStartDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fetchStartDate)
    }
    unsafe fn domainLookupStartDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, domainLookupStartDate)
    }
    unsafe fn domainLookupEndDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, domainLookupEndDate)
    }
    unsafe fn connectStartDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, connectStartDate)
    }
    unsafe fn secureConnectionStartDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, secureConnectionStartDate)
    }
    unsafe fn secureConnectionEndDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, secureConnectionEndDate)
    }
    unsafe fn connectEndDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, connectEndDate)
    }
    unsafe fn requestStartDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requestStartDate)
    }
    unsafe fn requestEndDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requestEndDate)
    }
    unsafe fn responseStartDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, responseStartDate)
    }
    unsafe fn responseEndDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, responseEndDate)
    }
    unsafe fn networkProtocolName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, networkProtocolName)
    }
    unsafe fn isProxyConnection(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isProxyConnection)
    }
    unsafe fn isReusedConnection(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isReusedConnection)
    }
    unsafe fn resourceFetchType(&self) -> NSURLSessionTaskMetricsResourceFetchType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, resourceFetchType)
    }
    unsafe fn countOfRequestHeaderBytesSent(&self) -> i64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, countOfRequestHeaderBytesSent)
    }
    unsafe fn countOfRequestBodyBytesSent(&self) -> i64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, countOfRequestBodyBytesSent)
    }
    unsafe fn countOfRequestBodyBytesBeforeEncoding(&self) -> i64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, countOfRequestBodyBytesBeforeEncoding)
    }
    unsafe fn countOfResponseHeaderBytesReceived(&self) -> i64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, countOfResponseHeaderBytesReceived)
    }
    unsafe fn countOfResponseBodyBytesReceived(&self) -> i64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, countOfResponseBodyBytesReceived)
    }
    unsafe fn countOfResponseBodyBytesAfterDecoding(&self) -> i64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, countOfResponseBodyBytesAfterDecoding)
    }
    unsafe fn localAddress(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localAddress)
    }
    unsafe fn localPort(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localPort)
    }
    unsafe fn remoteAddress(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, remoteAddress)
    }
    unsafe fn remotePort(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, remotePort)
    }
    unsafe fn negotiatedTLSProtocolVersion(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, negotiatedTLSProtocolVersion)
    }
    unsafe fn negotiatedTLSCipherSuite(&self) -> NSNumber
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, negotiatedTLSCipherSuite)
    }
    unsafe fn isCellular(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isCellular)
    }
    unsafe fn isExpensive(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isExpensive)
    }
    unsafe fn isConstrained(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isConstrained)
    }
    unsafe fn isMultipath(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isMultipath)
    }
    unsafe fn domainResolutionProtocol(&self) -> NSURLSessionTaskMetricsDomainResolutionProtocol
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, domainResolutionProtocol)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSessionTaskTransactionMetrics").unwrap(), new)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLSessionTaskMetrics(pub id);
impl std::ops::Deref for NSURLSessionTaskMetrics {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLSessionTaskMetrics {}
impl NSURLSessionTaskMetrics {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSessionTaskMetrics").unwrap(), alloc) })
    }
}
impl INSObject for NSURLSessionTaskMetrics {}
impl PNSObject for NSURLSessionTaskMetrics {}
impl std::convert::TryFrom<NSObject> for NSURLSessionTaskMetrics {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSURLSessionTaskMetrics, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLSessionTaskMetrics").unwrap()) };
        if is_kind_of {
            Ok(NSURLSessionTaskMetrics(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSURLSessionTaskMetrics")
        }
    }
}
impl INSURLSessionTaskMetrics for NSURLSessionTaskMetrics {}
pub trait INSURLSessionTaskMetrics: 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 transactionMetrics(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transactionMetrics)
    }
    unsafe fn taskInterval(&self) -> NSDateInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, taskInterval)
    }
    unsafe fn redirectCount(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, redirectCount)
    }
    unsafe fn new() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLSessionTaskMetrics").unwrap(), new)
    }
}
pub type NSUserActivityPersistentIdentifier = NSString;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUserActivity(pub id);
impl std::ops::Deref for NSUserActivity {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUserActivity {}
impl NSUserActivity {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUserActivity").unwrap(), alloc) })
    }
}
impl INSObject for NSUserActivity {}
impl PNSObject for NSUserActivity {}
impl std::convert::TryFrom<NSObject> for NSUserActivity {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSUserActivity, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUserActivity").unwrap()) };
        if is_kind_of {
            Ok(NSUserActivity(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSUserActivity")
        }
    }
}
impl INSUserActivity for NSUserActivity {}
pub trait INSUserActivity: Sized + std::ops::Deref {
    unsafe fn initWithActivityType_(&self, activityType: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithActivityType : activityType)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn addUserInfoEntriesFromDictionary_(&self, otherDictionary: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addUserInfoEntriesFromDictionary : otherDictionary)
    }
    unsafe fn becomeCurrent(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, becomeCurrent)
    }
    unsafe fn resignCurrent(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, resignCurrent)
    }
    unsafe fn invalidate(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invalidate)
    }
    unsafe fn getContinuationStreamsWithCompletionHandler_(
        &self,
        completionHandler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getContinuationStreamsWithCompletionHandler : completionHandler)
    }
    unsafe fn activityType(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, activityType)
    }
    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 userInfo(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userInfo)
    }
    unsafe fn setUserInfo_(&self, userInfo: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserInfo : userInfo)
    }
    unsafe fn requiredUserInfoKeys(&self) -> NSSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requiredUserInfoKeys)
    }
    unsafe fn setRequiredUserInfoKeys_(&self, requiredUserInfoKeys: NSSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRequiredUserInfoKeys : requiredUserInfoKeys)
    }
    unsafe fn needsSave(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, needsSave)
    }
    unsafe fn setNeedsSave_(&self, needsSave: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNeedsSave : needsSave)
    }
    unsafe fn webpageURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, webpageURL)
    }
    unsafe fn setWebpageURL_(&self, webpageURL: NSURL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setWebpageURL : webpageURL)
    }
    unsafe fn referrerURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, referrerURL)
    }
    unsafe fn setReferrerURL_(&self, referrerURL: NSURL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReferrerURL : referrerURL)
    }
    unsafe fn expirationDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, expirationDate)
    }
    unsafe fn setExpirationDate_(&self, expirationDate: NSDate)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExpirationDate : expirationDate)
    }
    unsafe fn keywords(&self) -> NSSet
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, keywords)
    }
    unsafe fn setKeywords_(&self, keywords: NSSet)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setKeywords : keywords)
    }
    unsafe fn supportsContinuationStreams(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, supportsContinuationStreams)
    }
    unsafe fn setSupportsContinuationStreams_(&self, supportsContinuationStreams: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSupportsContinuationStreams : supportsContinuationStreams)
    }
    unsafe fn delegate(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delegate)
    }
    unsafe fn setDelegate_(&self, delegate: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelegate : delegate)
    }
    unsafe fn targetContentIdentifier(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, targetContentIdentifier)
    }
    unsafe fn setTargetContentIdentifier_(&self, targetContentIdentifier: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTargetContentIdentifier : targetContentIdentifier)
    }
    unsafe fn isEligibleForHandoff(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isEligibleForHandoff)
    }
    unsafe fn setEligibleForHandoff_(&self, eligibleForHandoff: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEligibleForHandoff : eligibleForHandoff)
    }
    unsafe fn isEligibleForSearch(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isEligibleForSearch)
    }
    unsafe fn setEligibleForSearch_(&self, eligibleForSearch: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEligibleForSearch : eligibleForSearch)
    }
    unsafe fn isEligibleForPublicIndexing(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isEligibleForPublicIndexing)
    }
    unsafe fn setEligibleForPublicIndexing_(&self, eligibleForPublicIndexing: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEligibleForPublicIndexing : eligibleForPublicIndexing)
    }
    unsafe fn isEligibleForPrediction(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isEligibleForPrediction)
    }
    unsafe fn setEligibleForPrediction_(&self, eligibleForPrediction: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEligibleForPrediction : eligibleForPrediction)
    }
    unsafe fn persistentIdentifier(&self) -> NSUserActivityPersistentIdentifier
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, persistentIdentifier)
    }
    unsafe fn setPersistentIdentifier_(&self, persistentIdentifier: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPersistentIdentifier : persistentIdentifier)
    }
    unsafe fn deleteSavedUserActivitiesWithPersistentIdentifiers_completionHandler_(
        persistentIdentifiers: NSArray,
        handler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUserActivity").unwrap(), deleteSavedUserActivitiesWithPersistentIdentifiers : persistentIdentifiers, completionHandler : handler)
    }
    unsafe fn deleteAllSavedUserActivitiesWithCompletionHandler_(
        handler: *mut ::std::os::raw::c_void,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUserActivity").unwrap(), deleteAllSavedUserActivitiesWithCompletionHandler : handler)
    }
}
pub trait PNSUserActivityDelegate: Sized + std::ops::Deref {
    unsafe fn userActivityWillSave_(&self, userActivity: NSUserActivity)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, userActivityWillSave : userActivity)
    }
    unsafe fn userActivityWasContinued_(&self, userActivity: NSUserActivity)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, userActivityWasContinued : userActivity)
    }
    unsafe fn userActivity_didReceiveInputStream_outputStream_(
        &self,
        userActivity: NSUserActivity,
        inputStream: NSInputStream,
        outputStream: NSOutputStream,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, userActivity : userActivity, didReceiveInputStream : inputStream, outputStream : outputStream)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUUID(pub id);
impl std::ops::Deref for NSUUID {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUUID {}
impl NSUUID {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUUID").unwrap(), alloc) })
    }
}
impl PNSCopying for NSUUID {}
impl PNSSecureCoding for NSUUID {}
impl INSObject for NSUUID {}
impl PNSObject for NSUUID {}
impl std::convert::TryFrom<NSObject> for NSUUID {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSUUID, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUUID").unwrap()) };
        if is_kind_of {
            Ok(NSUUID(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSUUID")
        }
    }
}
impl INSUUID for NSUUID {}
pub trait INSUUID: 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 initWithUUIDString_(&self, string: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithUUIDString : string)
    }
    unsafe fn initWithUUIDBytes_(&self, bytes: *const ::std::os::raw::c_uchar) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithUUIDBytes : bytes)
    }
    unsafe fn getUUIDBytes_(&self, uuid: *mut ::std::os::raw::c_uchar)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, getUUIDBytes : uuid)
    }
    unsafe fn compare_(&self, otherUUID: NSUUID) -> NSComparisonResult
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, compare : otherUUID)
    }
    unsafe fn UUIDString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, UUIDString)
    }
    unsafe fn UUID() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUUID").unwrap(), UUID)
    }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct NSAffineTransformStruct {
    pub m11: CGFloat,
    pub m12: CGFloat,
    pub m21: CGFloat,
    pub m22: CGFloat,
    pub tX: CGFloat,
    pub tY: CGFloat,
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSAffineTransform(pub id);
impl std::ops::Deref for NSAffineTransform {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSAffineTransform {}
impl NSAffineTransform {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSAffineTransform").unwrap(), alloc) })
    }
}
impl PNSCopying for NSAffineTransform {}
impl PNSSecureCoding for NSAffineTransform {}
impl INSObject for NSAffineTransform {}
impl PNSObject for NSAffineTransform {}
impl std::convert::TryFrom<NSObject> for NSAffineTransform {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSAffineTransform, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSAffineTransform").unwrap()) };
        if is_kind_of {
            Ok(NSAffineTransform(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSAffineTransform")
        }
    }
}
impl INSAffineTransform for NSAffineTransform {}
pub trait INSAffineTransform: Sized + std::ops::Deref {
    unsafe fn initWithTransform_(&self, transform: NSAffineTransform) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithTransform : transform)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn translateXBy_yBy_(&self, deltaX: CGFloat, deltaY: CGFloat)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, translateXBy : deltaX, yBy : deltaY)
    }
    unsafe fn rotateByDegrees_(&self, angle: CGFloat)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rotateByDegrees : angle)
    }
    unsafe fn rotateByRadians_(&self, angle: CGFloat)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, rotateByRadians : angle)
    }
    unsafe fn scaleBy_(&self, scale: CGFloat)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scaleBy : scale)
    }
    unsafe fn scaleXBy_yBy_(&self, scaleX: CGFloat, scaleY: CGFloat)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scaleXBy : scaleX, yBy : scaleY)
    }
    unsafe fn invert(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invert)
    }
    unsafe fn appendTransform_(&self, transform: NSAffineTransform)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, appendTransform : transform)
    }
    unsafe fn prependTransform_(&self, transform: NSAffineTransform)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, prependTransform : transform)
    }
    unsafe fn transformPoint_(&self, aPoint: NSPoint) -> NSPoint
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, transformPoint : aPoint)
    }
    unsafe fn transformSize_(&self, aSize: NSSize) -> NSSize
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, transformSize : aSize)
    }
    unsafe fn transformStruct(&self) -> NSAffineTransformStruct
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transformStruct)
    }
    unsafe fn setTransformStruct_(&self, transformStruct: NSAffineTransformStruct)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTransformStruct : transformStruct)
    }
    unsafe fn transform() -> NSAffineTransform
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAffineTransform").unwrap(), transform)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSAppleScript(pub id);
impl std::ops::Deref for NSAppleScript {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSAppleScript {}
impl NSAppleScript {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSAppleScript").unwrap(), alloc) })
    }
}
impl PNSCopying for NSAppleScript {}
impl INSObject for NSAppleScript {}
impl PNSObject for NSAppleScript {}
impl std::convert::TryFrom<NSObject> for NSAppleScript {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSAppleScript, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSAppleScript").unwrap()) };
        if is_kind_of {
            Ok(NSAppleScript(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSAppleScript")
        }
    }
}
impl INSAppleScript for NSAppleScript {}
pub trait INSAppleScript: Sized + std::ops::Deref {
    unsafe fn initWithContentsOfURL_error_(
        &self,
        url: NSURL,
        errorInfo: *mut NSDictionary,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfURL : url, error : errorInfo)
    }
    unsafe fn initWithSource_(&self, source: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithSource : source)
    }
    unsafe fn compileAndReturnError_(&self, errorInfo: *mut NSDictionary) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, compileAndReturnError : errorInfo)
    }
    unsafe fn executeAndReturnError_(&self, errorInfo: *mut NSDictionary) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, executeAndReturnError : errorInfo)
    }
    unsafe fn executeAppleEvent_error_(
        &self,
        event: NSAppleEventDescriptor,
        errorInfo: *mut NSDictionary,
    ) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, executeAppleEvent : event, error : errorInfo)
    }
    unsafe fn source(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, source)
    }
    unsafe fn isCompiled(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isCompiled)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSArchiver(pub id);
impl std::ops::Deref for NSArchiver {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSArchiver {}
impl NSArchiver {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSArchiver").unwrap(), alloc) })
    }
}
impl INSCoder for NSArchiver {}
impl std::convert::TryFrom<NSCoder> for NSArchiver {
    type Error = &'static str;
    fn try_from(parent: NSCoder) -> Result<NSArchiver, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSArchiver").unwrap()) };
        if is_kind_of {
            Ok(NSArchiver(parent.0))
        } else {
            Err("This NSCoder cannot be downcasted to NSArchiver")
        }
    }
}
impl INSObject for NSArchiver {}
impl PNSObject for NSArchiver {}
impl INSArchiver for NSArchiver {}
pub trait INSArchiver: Sized + std::ops::Deref {
    unsafe fn initForWritingWithMutableData_(&self, mdata: NSMutableData) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initForWritingWithMutableData : mdata)
    }
    unsafe fn encodeRootObject_(&self, rootObject: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeRootObject : rootObject)
    }
    unsafe fn encodeConditionalObject_(&self, object: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeConditionalObject : object)
    }
    unsafe fn encodeClassName_intoClassName_(&self, trueName: NSString, inArchiveName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodeClassName : trueName, intoClassName : inArchiveName)
    }
    unsafe fn classNameEncodedForTrueClassName_(&self, trueName: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, classNameEncodedForTrueClassName : trueName)
    }
    unsafe fn replaceObject_withObject_(&self, object: id, newObject: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replaceObject : object, withObject : newObject)
    }
    unsafe fn archiverData(&self) -> NSMutableData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, archiverData)
    }
    unsafe fn archivedDataWithRootObject_(rootObject: id) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSArchiver").unwrap(), archivedDataWithRootObject : rootObject)
    }
    unsafe fn archiveRootObject_toFile_(rootObject: id, path: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSArchiver").unwrap(), archiveRootObject : rootObject, toFile : path)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUnarchiver(pub id);
impl std::ops::Deref for NSUnarchiver {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUnarchiver {}
impl NSUnarchiver {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnarchiver").unwrap(), alloc) })
    }
}
impl INSCoder for NSUnarchiver {}
impl std::convert::TryFrom<NSCoder> for NSUnarchiver {
    type Error = &'static str;
    fn try_from(parent: NSCoder) -> Result<NSUnarchiver, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUnarchiver").unwrap()) };
        if is_kind_of {
            Ok(NSUnarchiver(parent.0))
        } else {
            Err("This NSCoder cannot be downcasted to NSUnarchiver")
        }
    }
}
impl INSObject for NSUnarchiver {}
impl PNSObject for NSUnarchiver {}
impl INSUnarchiver for NSUnarchiver {}
pub trait INSUnarchiver: Sized + std::ops::Deref {
    unsafe fn initForReadingWithData_(&self, data: NSData) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initForReadingWithData : data)
    }
    unsafe fn setObjectZone_(&self, zone: *mut NSZone)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setObjectZone : zone)
    }
    unsafe fn objectZone(&self) -> *mut NSZone
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, objectZone)
    }
    unsafe fn decodeClassName_asClassName_(&self, inArchiveName: NSString, trueName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, decodeClassName : inArchiveName, asClassName : trueName)
    }
    unsafe fn classNameDecodedForArchiveClassName_(&self, inArchiveName: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, classNameDecodedForArchiveClassName : inArchiveName)
    }
    unsafe fn replaceObject_withObject_(&self, object: id, newObject: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replaceObject : object, withObject : newObject)
    }
    unsafe fn isAtEnd(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isAtEnd)
    }
    unsafe fn systemVersion(&self) -> ::std::os::raw::c_uint
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, systemVersion)
    }
    unsafe fn unarchiveObjectWithData_(data: NSData) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnarchiver").unwrap(), unarchiveObjectWithData : data)
    }
    unsafe fn unarchiveObjectWithFile_(path: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnarchiver").unwrap(), unarchiveObjectWithFile : path)
    }
    unsafe fn class_decodeClassName_asClassName_(inArchiveName: NSString, trueName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnarchiver").unwrap(), decodeClassName : inArchiveName, asClassName : trueName)
    }
    unsafe fn class_classNameDecodedForArchiveClassName_(inArchiveName: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUnarchiver").unwrap(), classNameDecodedForArchiveClassName : inArchiveName)
    }
}
pub trait NSObject_NSArchiverCallback: Sized + std::ops::Deref {
    unsafe fn replacementObjectForArchiver_(&self, archiver: NSArchiver) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replacementObjectForArchiver : archiver)
    }
    unsafe fn classForArchiver(&self) -> Class
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, classForArchiver)
    }
}
pub type NSBackgroundActivityResult = NSInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSBackgroundActivityScheduler(pub id);
impl std::ops::Deref for NSBackgroundActivityScheduler {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSBackgroundActivityScheduler {}
impl NSBackgroundActivityScheduler {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSBackgroundActivityScheduler").unwrap(), alloc) })
    }
}
impl INSObject for NSBackgroundActivityScheduler {}
impl PNSObject for NSBackgroundActivityScheduler {}
impl std::convert::TryFrom<NSObject> for NSBackgroundActivityScheduler {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSBackgroundActivityScheduler, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSBackgroundActivityScheduler").unwrap())
        };
        if is_kind_of {
            Ok(NSBackgroundActivityScheduler(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSBackgroundActivityScheduler")
        }
    }
}
impl INSBackgroundActivityScheduler for NSBackgroundActivityScheduler {}
pub trait INSBackgroundActivityScheduler: Sized + std::ops::Deref {
    unsafe fn initWithIdentifier_(&self, identifier: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithIdentifier : identifier)
    }
    unsafe fn scheduleWithBlock_(&self, block: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scheduleWithBlock : block)
    }
    unsafe fn invalidate(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invalidate)
    }
    unsafe fn identifier(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, identifier)
    }
    unsafe fn qualityOfService(&self) -> NSQualityOfService
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, qualityOfService)
    }
    unsafe fn setQualityOfService_(&self, qualityOfService: NSQualityOfService)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setQualityOfService : qualityOfService)
    }
    unsafe fn repeats(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, repeats)
    }
    unsafe fn setRepeats_(&self, repeats: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRepeats : repeats)
    }
    unsafe fn interval(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, interval)
    }
    unsafe fn setInterval_(&self, interval: NSTimeInterval)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInterval : interval)
    }
    unsafe fn tolerance(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tolerance)
    }
    unsafe fn setTolerance_(&self, tolerance: NSTimeInterval)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTolerance : tolerance)
    }
    unsafe fn shouldDefer(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, shouldDefer)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSCalendarDate(pub id);
impl std::ops::Deref for NSCalendarDate {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSCalendarDate {}
impl NSCalendarDate {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSCalendarDate").unwrap(), alloc) })
    }
}
impl INSDate for NSCalendarDate {}
impl PNSCopying for NSCalendarDate {}
impl PNSSecureCoding for NSCalendarDate {}
impl From<NSCalendarDate> for NSDate {
    fn from(child: NSCalendarDate) -> NSDate {
        NSDate(child.0)
    }
}
impl std::convert::TryFrom<NSDate> for NSCalendarDate {
    type Error = &'static str;
    fn try_from(parent: NSDate) -> Result<NSCalendarDate, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSCalendarDate").unwrap()) };
        if is_kind_of {
            Ok(NSCalendarDate(parent.0))
        } else {
            Err("This NSDate cannot be downcasted to NSCalendarDate")
        }
    }
}
impl INSObject for NSCalendarDate {}
impl PNSObject for NSCalendarDate {}
impl INSCalendarDate for NSCalendarDate {}
pub trait INSCalendarDate: Sized + std::ops::Deref {
    unsafe fn dateByAddingYears_months_days_hours_minutes_seconds_(
        &self,
        year: NSInteger,
        month: NSInteger,
        day: NSInteger,
        hour: NSInteger,
        minute: NSInteger,
        second: NSInteger,
    ) -> NSCalendarDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dateByAddingYears : year, months : month, days : day, hours : hour, minutes : minute, seconds : second)
    }
    unsafe fn dayOfCommonEra(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dayOfCommonEra)
    }
    unsafe fn dayOfMonth(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dayOfMonth)
    }
    unsafe fn dayOfWeek(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dayOfWeek)
    }
    unsafe fn dayOfYear(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dayOfYear)
    }
    unsafe fn hourOfDay(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hourOfDay)
    }
    unsafe fn minuteOfHour(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, minuteOfHour)
    }
    unsafe fn monthOfYear(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, monthOfYear)
    }
    unsafe fn secondOfMinute(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, secondOfMinute)
    }
    unsafe fn yearOfCommonEra(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, yearOfCommonEra)
    }
    unsafe fn calendarFormat(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, calendarFormat)
    }
    unsafe fn descriptionWithCalendarFormat_locale_(&self, format: NSString, locale: id) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, descriptionWithCalendarFormat : format, locale : locale)
    }
    unsafe fn descriptionWithCalendarFormat_(&self, format: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, descriptionWithCalendarFormat : format)
    }
    unsafe fn descriptionWithLocale_(&self, locale: id) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, descriptionWithLocale : locale)
    }
    unsafe fn timeZone(&self) -> NSTimeZone
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, timeZone)
    }
    unsafe fn initWithString_calendarFormat_locale_(
        &self,
        description: NSString,
        format: NSString,
        locale: id,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithString : description, calendarFormat : format, locale : locale)
    }
    unsafe fn initWithString_calendarFormat_(&self, description: NSString, format: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithString : description, calendarFormat : format)
    }
    unsafe fn initWithString_(&self, description: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithString : description)
    }
    unsafe fn initWithYear_month_day_hour_minute_second_timeZone_(
        &self,
        year: NSInteger,
        month: NSUInteger,
        day: NSUInteger,
        hour: NSUInteger,
        minute: NSUInteger,
        second: NSUInteger,
        aTimeZone: NSTimeZone,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithYear : year, month : month, day : day, hour : hour, minute : minute, second : second, timeZone : aTimeZone)
    }
    unsafe fn setCalendarFormat_(&self, format: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCalendarFormat : format)
    }
    unsafe fn setTimeZone_(&self, aTimeZone: NSTimeZone)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTimeZone : aTimeZone)
    }
    unsafe fn years_months_days_hours_minutes_seconds_sinceDate_(
        &self,
        yp: *mut NSInteger,
        mop: *mut NSInteger,
        dp: *mut NSInteger,
        hp: *mut NSInteger,
        mip: *mut NSInteger,
        sp: *mut NSInteger,
        date: NSCalendarDate,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, years : yp, months : mop, days : dp, hours : hp, minutes : mip, seconds : sp, sinceDate : date)
    }
    unsafe fn calendarDate() -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCalendarDate").unwrap(), calendarDate)
    }
    unsafe fn dateWithString_calendarFormat_locale_(
        description: NSString,
        format: NSString,
        locale: id,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCalendarDate").unwrap(), dateWithString : description, calendarFormat : format, locale : locale)
    }
    unsafe fn dateWithString_calendarFormat_(description: NSString, format: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCalendarDate").unwrap(), dateWithString : description, calendarFormat : format)
    }
    unsafe fn dateWithYear_month_day_hour_minute_second_timeZone_(
        year: NSInteger,
        month: NSUInteger,
        day: NSUInteger,
        hour: NSUInteger,
        minute: NSUInteger,
        second: NSUInteger,
        aTimeZone: NSTimeZone,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCalendarDate").unwrap(), dateWithYear : year, month : month, day : day, hour : hour, minute : minute, second : second, timeZone : aTimeZone)
    }
    unsafe fn distantFuture() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCalendarDate").unwrap(), distantFuture)
    }
    unsafe fn distantPast() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSCalendarDate").unwrap(), distantPast)
    }
}
impl NSDate_NSCalendarDateExtras for NSDate {}
pub trait NSDate_NSCalendarDateExtras: Sized + std::ops::Deref {
    unsafe fn dateWithCalendarFormat_timeZone_(
        &self,
        format: NSString,
        aTimeZone: NSTimeZone,
    ) -> NSCalendarDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dateWithCalendarFormat : format, timeZone : aTimeZone)
    }
    unsafe fn descriptionWithCalendarFormat_timeZone_locale_(
        &self,
        format: NSString,
        aTimeZone: NSTimeZone,
        locale: id,
    ) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, descriptionWithCalendarFormat : format, timeZone : aTimeZone, locale : locale)
    }
    unsafe fn initWithString_(&self, description: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithString : description)
    }
    unsafe fn dateWithNaturalLanguageString_locale_(string: NSString, locale: id) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDate").unwrap(), dateWithNaturalLanguageString : string, locale : locale)
    }
    unsafe fn dateWithNaturalLanguageString_(string: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDate").unwrap(), dateWithNaturalLanguageString : string)
    }
    unsafe fn dateWithString_(aString: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDate").unwrap(), dateWithString : aString)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSConnection(pub id);
impl std::ops::Deref for NSConnection {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSConnection {}
impl NSConnection {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSConnection").unwrap(), alloc) })
    }
}
impl INSObject for NSConnection {}
impl PNSObject for NSConnection {}
impl std::convert::TryFrom<NSObject> for NSConnection {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSConnection, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSConnection").unwrap()) };
        if is_kind_of {
            Ok(NSConnection(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSConnection")
        }
    }
}
impl INSConnection for NSConnection {}
pub trait INSConnection: Sized + std::ops::Deref {
    unsafe fn invalidate(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invalidate)
    }
    unsafe fn addRequestMode_(&self, rmode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addRequestMode : rmode)
    }
    unsafe fn removeRequestMode_(&self, rmode: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeRequestMode : rmode)
    }
    unsafe fn registerName_(&self, name: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, registerName : name)
    }
    unsafe fn registerName_withNameServer_(&self, name: NSString, server: NSPortNameServer) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, registerName : name, withNameServer : server)
    }
    unsafe fn initWithReceivePort_sendPort_(
        &self,
        receivePort: NSPort,
        sendPort: NSPort,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithReceivePort : receivePort, sendPort : sendPort)
    }
    unsafe fn enableMultipleThreads(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, enableMultipleThreads)
    }
    unsafe fn addRunLoop_(&self, runloop: NSRunLoop)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addRunLoop : runloop)
    }
    unsafe fn removeRunLoop_(&self, runloop: NSRunLoop)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeRunLoop : runloop)
    }
    unsafe fn runInNewThread(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, runInNewThread)
    }
    unsafe fn dispatchWithComponents_(&self, components: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dispatchWithComponents : components)
    }
    unsafe fn statistics(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, statistics)
    }
    unsafe fn requestTimeout(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requestTimeout)
    }
    unsafe fn setRequestTimeout_(&self, requestTimeout: NSTimeInterval)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRequestTimeout : requestTimeout)
    }
    unsafe fn replyTimeout(&self) -> NSTimeInterval
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, replyTimeout)
    }
    unsafe fn setReplyTimeout_(&self, replyTimeout: NSTimeInterval)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReplyTimeout : replyTimeout)
    }
    unsafe fn rootObject(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rootObject)
    }
    unsafe fn setRootObject_(&self, rootObject: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRootObject : rootObject)
    }
    unsafe fn delegate(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delegate)
    }
    unsafe fn setDelegate_(&self, delegate: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelegate : delegate)
    }
    unsafe fn independentConversationQueueing(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, independentConversationQueueing)
    }
    unsafe fn setIndependentConversationQueueing_(&self, independentConversationQueueing: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIndependentConversationQueueing : independentConversationQueueing)
    }
    unsafe fn isValid(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isValid)
    }
    unsafe fn rootProxy(&self) -> NSDistantObject
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rootProxy)
    }
    unsafe fn requestModes(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, requestModes)
    }
    unsafe fn sendPort(&self) -> NSPort
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sendPort)
    }
    unsafe fn receivePort(&self) -> NSPort
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, receivePort)
    }
    unsafe fn multipleThreadsEnabled(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, multipleThreadsEnabled)
    }
    unsafe fn remoteObjects(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, remoteObjects)
    }
    unsafe fn localObjects(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localObjects)
    }
    unsafe fn allConnections() -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSConnection").unwrap(), allConnections)
    }
    unsafe fn defaultConnection() -> NSConnection
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSConnection").unwrap(), defaultConnection)
    }
    unsafe fn connectionWithRegisteredName_host_(name: NSString, hostName: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSConnection").unwrap(), connectionWithRegisteredName : name, host : hostName)
    }
    unsafe fn connectionWithRegisteredName_host_usingNameServer_(
        name: NSString,
        hostName: NSString,
        server: NSPortNameServer,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSConnection").unwrap(), connectionWithRegisteredName : name, host : hostName, usingNameServer : server)
    }
    unsafe fn rootProxyForConnectionWithRegisteredName_host_(
        name: NSString,
        hostName: NSString,
    ) -> NSDistantObject
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSConnection").unwrap(), rootProxyForConnectionWithRegisteredName : name, host : hostName)
    }
    unsafe fn rootProxyForConnectionWithRegisteredName_host_usingNameServer_(
        name: NSString,
        hostName: NSString,
        server: NSPortNameServer,
    ) -> NSDistantObject
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSConnection").unwrap(), rootProxyForConnectionWithRegisteredName : name, host : hostName, usingNameServer : server)
    }
    unsafe fn serviceConnectionWithName_rootObject_usingNameServer_(
        name: NSString,
        root: id,
        server: NSPortNameServer,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSConnection").unwrap(), serviceConnectionWithName : name, rootObject : root, usingNameServer : server)
    }
    unsafe fn serviceConnectionWithName_rootObject_(name: NSString, root: id) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSConnection").unwrap(), serviceConnectionWithName : name, rootObject : root)
    }
    unsafe fn connectionWithReceivePort_sendPort_(
        receivePort: NSPort,
        sendPort: NSPort,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSConnection").unwrap(), connectionWithReceivePort : receivePort, sendPort : sendPort)
    }
    unsafe fn currentConversation() -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSConnection").unwrap(), currentConversation)
    }
}
pub trait PNSConnectionDelegate: Sized + std::ops::Deref {
    unsafe fn makeNewConnection_sender_(&self, conn: NSConnection, ancestor: NSConnection) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, makeNewConnection : conn, sender : ancestor)
    }
    unsafe fn connection_shouldMakeNewConnection_(
        &self,
        ancestor: NSConnection,
        conn: NSConnection,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, connection : ancestor, shouldMakeNewConnection : conn)
    }
    unsafe fn authenticationDataForComponents_(&self, components: NSArray) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, authenticationDataForComponents : components)
    }
    unsafe fn authenticateComponents_withData_(
        &self,
        components: NSArray,
        signature: NSData,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, authenticateComponents : components, withData : signature)
    }
    unsafe fn createConversationForConnection_(&self, conn: NSConnection) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, createConversationForConnection : conn)
    }
    unsafe fn connection_handleRequest_(
        &self,
        connection: NSConnection,
        doreq: NSDistantObjectRequest,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, connection : connection, handleRequest : doreq)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSDistantObjectRequest(pub id);
impl std::ops::Deref for NSDistantObjectRequest {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSDistantObjectRequest {}
impl NSDistantObjectRequest {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSDistantObjectRequest").unwrap(), alloc) })
    }
}
impl INSObject for NSDistantObjectRequest {}
impl PNSObject for NSDistantObjectRequest {}
impl std::convert::TryFrom<NSObject> for NSDistantObjectRequest {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSDistantObjectRequest, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSDistantObjectRequest").unwrap()) };
        if is_kind_of {
            Ok(NSDistantObjectRequest(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSDistantObjectRequest")
        }
    }
}
impl INSDistantObjectRequest for NSDistantObjectRequest {}
pub trait INSDistantObjectRequest: Sized + std::ops::Deref {
    unsafe fn replyWithException_(&self, exception: NSException)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replyWithException : exception)
    }
    unsafe fn invocation(&self) -> NSInvocation
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, invocation)
    }
    unsafe fn connection(&self) -> NSConnection
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, connection)
    }
    unsafe fn conversation(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, conversation)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSDistantObject(pub id);
impl std::ops::Deref for NSDistantObject {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSDistantObject {}
impl NSDistantObject {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSDistantObject").unwrap(), alloc) })
    }
}
impl PNSCoding for NSDistantObject {}
impl INSProxy for NSDistantObject {}
impl PNSObject for NSDistantObject {}
impl From<NSDistantObject> for NSProxy {
    fn from(child: NSDistantObject) -> NSProxy {
        NSProxy(child.0)
    }
}
impl std::convert::TryFrom<NSProxy> for NSDistantObject {
    type Error = &'static str;
    fn try_from(parent: NSProxy) -> Result<NSDistantObject, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSDistantObject").unwrap()) };
        if is_kind_of {
            Ok(NSDistantObject(parent.0))
        } else {
            Err("This NSProxy cannot be downcasted to NSDistantObject")
        }
    }
}
impl INSDistantObject for NSDistantObject {}
pub trait INSDistantObject: Sized + std::ops::Deref {
    unsafe fn initWithTarget_connection_(
        &self,
        target: id,
        connection: NSConnection,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithTarget : target, connection : connection)
    }
    unsafe fn initWithLocal_connection_(&self, target: id, connection: NSConnection) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithLocal : target, connection : connection)
    }
    unsafe fn initWithCoder_(&self, inCoder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : inCoder)
    }
    unsafe fn setProtocolForProxy_(&self, proto: Protocol)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setProtocolForProxy : proto)
    }
    unsafe fn connectionForProxy(&self) -> NSConnection
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, connectionForProxy)
    }
    unsafe fn proxyWithTarget_connection_(target: id, connection: NSConnection) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDistantObject").unwrap(), proxyWithTarget : target, connection : connection)
    }
    unsafe fn proxyWithLocal_connection_(target: id, connection: NSConnection) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDistantObject").unwrap(), proxyWithLocal : target, connection : connection)
    }
}
pub type NSDistributedNotificationCenterType = NSString;
pub type NSNotificationSuspensionBehavior = NSUInteger;
pub type NSDistributedNotificationOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSDistributedNotificationCenter(pub id);
impl std::ops::Deref for NSDistributedNotificationCenter {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSDistributedNotificationCenter {}
impl NSDistributedNotificationCenter {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSDistributedNotificationCenter").unwrap(), alloc) })
    }
}
impl INSNotificationCenter for NSDistributedNotificationCenter {}
impl From<NSDistributedNotificationCenter> for NSNotificationCenter {
    fn from(child: NSDistributedNotificationCenter) -> NSNotificationCenter {
        NSNotificationCenter(child.0)
    }
}
impl std::convert::TryFrom<NSNotificationCenter> for NSDistributedNotificationCenter {
    type Error = &'static str;
    fn try_from(
        parent: NSNotificationCenter,
    ) -> Result<NSDistributedNotificationCenter, Self::Error> {
        let is_kind_of: bool = unsafe {
            msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSDistributedNotificationCenter").unwrap())
        };
        if is_kind_of {
            Ok(NSDistributedNotificationCenter(parent.0))
        } else {
            Err("This NSNotificationCenter cannot be downcasted to NSDistributedNotificationCenter")
        }
    }
}
impl INSObject for NSDistributedNotificationCenter {}
impl PNSObject for NSDistributedNotificationCenter {}
impl INSDistributedNotificationCenter for NSDistributedNotificationCenter {}
pub trait INSDistributedNotificationCenter: Sized + std::ops::Deref {
    unsafe fn addObserver_selector_name_object_suspensionBehavior_(
        &self,
        observer: id,
        selector: objc2::runtime::Sel,
        name: NSString,
        object: NSString,
        suspensionBehavior: NSNotificationSuspensionBehavior,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addObserver : observer, selector : selector, name : name, object : object, suspensionBehavior : suspensionBehavior)
    }
    unsafe fn postNotificationName_object_userInfo_deliverImmediately_(
        &self,
        name: NSString,
        object: NSString,
        userInfo: NSDictionary,
        deliverImmediately: BOOL,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, postNotificationName : name, object : object, userInfo : userInfo, deliverImmediately : deliverImmediately)
    }
    unsafe fn postNotificationName_object_userInfo_options_(
        &self,
        name: NSString,
        object: NSString,
        userInfo: NSDictionary,
        options: NSDistributedNotificationOptions,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, postNotificationName : name, object : object, userInfo : userInfo, options : options)
    }
    unsafe fn addObserver_selector_name_object_(
        &self,
        observer: id,
        aSelector: objc2::runtime::Sel,
        aName: NSString,
        anObject: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addObserver : observer, selector : aSelector, name : aName, object : anObject)
    }
    unsafe fn postNotificationName_object_(&self, aName: NSString, anObject: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, postNotificationName : aName, object : anObject)
    }
    unsafe fn postNotificationName_object_userInfo_(
        &self,
        aName: NSString,
        anObject: NSString,
        aUserInfo: NSDictionary,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, postNotificationName : aName, object : anObject, userInfo : aUserInfo)
    }
    unsafe fn removeObserver_name_object_(&self, observer: id, aName: NSString, anObject: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeObserver : observer, name : aName, object : anObject)
    }
    unsafe fn suspended(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, suspended)
    }
    unsafe fn setSuspended_(&self, suspended: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSuspended : suspended)
    }
    unsafe fn notificationCenterForType_(
        notificationCenterType: NSString,
    ) -> NSDistributedNotificationCenter
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDistributedNotificationCenter").unwrap(), notificationCenterForType : notificationCenterType)
    }
    unsafe fn defaultCenter() -> NSDistributedNotificationCenter
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDistributedNotificationCenter").unwrap(), defaultCenter)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSPortCoder(pub id);
impl std::ops::Deref for NSPortCoder {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSPortCoder {}
impl NSPortCoder {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSPortCoder").unwrap(), alloc) })
    }
}
impl INSCoder for NSPortCoder {}
impl std::convert::TryFrom<NSCoder> for NSPortCoder {
    type Error = &'static str;
    fn try_from(parent: NSCoder) -> Result<NSPortCoder, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSPortCoder").unwrap()) };
        if is_kind_of {
            Ok(NSPortCoder(parent.0))
        } else {
            Err("This NSCoder cannot be downcasted to NSPortCoder")
        }
    }
}
impl INSObject for NSPortCoder {}
impl PNSObject for NSPortCoder {}
impl INSPortCoder for NSPortCoder {}
pub trait INSPortCoder: Sized + std::ops::Deref {
    unsafe fn isBycopy(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isBycopy)
    }
    unsafe fn isByref(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isByref)
    }
    unsafe fn encodePortObject_(&self, aport: NSPort)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, encodePortObject : aport)
    }
    unsafe fn decodePortObject(&self) -> NSPort
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, decodePortObject)
    }
    unsafe fn connection(&self) -> NSConnection
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, connection)
    }
    unsafe fn initWithReceivePort_sendPort_components_(
        &self,
        rcvPort: NSPort,
        sndPort: NSPort,
        comps: NSArray,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithReceivePort : rcvPort, sendPort : sndPort, components : comps)
    }
    unsafe fn dispatch(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dispatch)
    }
    unsafe fn portCoderWithReceivePort_sendPort_components_(
        rcvPort: NSPort,
        sndPort: NSPort,
        comps: NSArray,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPortCoder").unwrap(), portCoderWithReceivePort : rcvPort, sendPort : sndPort, components : comps)
    }
}
pub trait NSObject_NSDistributedObjects: Sized + std::ops::Deref {
    unsafe fn replacementObjectForPortCoder_(&self, coder: NSPortCoder) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replacementObjectForPortCoder : coder)
    }
    unsafe fn classForPortCoder(&self) -> Class
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, classForPortCoder)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSPortMessage(pub id);
impl std::ops::Deref for NSPortMessage {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSPortMessage {}
impl NSPortMessage {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSPortMessage").unwrap(), alloc) })
    }
}
impl INSObject for NSPortMessage {}
impl PNSObject for NSPortMessage {}
impl std::convert::TryFrom<NSObject> for NSPortMessage {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSPortMessage, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSPortMessage").unwrap()) };
        if is_kind_of {
            Ok(NSPortMessage(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSPortMessage")
        }
    }
}
impl INSPortMessage for NSPortMessage {}
pub trait INSPortMessage: Sized + std::ops::Deref {
    unsafe fn initWithSendPort_receivePort_components_(
        &self,
        sendPort: NSPort,
        replyPort: NSPort,
        components: NSArray,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithSendPort : sendPort, receivePort : replyPort, components : components)
    }
    unsafe fn sendBeforeDate_(&self, date: NSDate) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sendBeforeDate : date)
    }
    unsafe fn components(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, components)
    }
    unsafe fn receivePort(&self) -> NSPort
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, receivePort)
    }
    unsafe fn sendPort(&self) -> NSPort
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, sendPort)
    }
    unsafe fn msgid(&self) -> u32
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, msgid)
    }
    unsafe fn setMsgid_(&self, msgid: u32)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMsgid : msgid)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSPortNameServer(pub id);
impl std::ops::Deref for NSPortNameServer {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSPortNameServer {}
impl NSPortNameServer {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSPortNameServer").unwrap(), alloc) })
    }
}
impl INSObject for NSPortNameServer {}
impl PNSObject for NSPortNameServer {}
impl std::convert::TryFrom<NSObject> for NSPortNameServer {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSPortNameServer, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSPortNameServer").unwrap()) };
        if is_kind_of {
            Ok(NSPortNameServer(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSPortNameServer")
        }
    }
}
impl INSPortNameServer for NSPortNameServer {}
pub trait INSPortNameServer: Sized + std::ops::Deref {
    unsafe fn portForName_(&self, name: NSString) -> NSPort
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, portForName : name)
    }
    unsafe fn portForName_host_(&self, name: NSString, host: NSString) -> NSPort
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, portForName : name, host : host)
    }
    unsafe fn registerPort_name_(&self, port: NSPort, name: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, registerPort : port, name : name)
    }
    unsafe fn removePortForName_(&self, name: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removePortForName : name)
    }
    unsafe fn systemDefaultPortNameServer() -> NSPortNameServer
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSPortNameServer").unwrap(), systemDefaultPortNameServer)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMachBootstrapServer(pub id);
impl std::ops::Deref for NSMachBootstrapServer {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMachBootstrapServer {}
impl NSMachBootstrapServer {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMachBootstrapServer").unwrap(), alloc) })
    }
}
impl INSPortNameServer for NSMachBootstrapServer {}
impl From<NSMachBootstrapServer> for NSPortNameServer {
    fn from(child: NSMachBootstrapServer) -> NSPortNameServer {
        NSPortNameServer(child.0)
    }
}
impl std::convert::TryFrom<NSPortNameServer> for NSMachBootstrapServer {
    type Error = &'static str;
    fn try_from(parent: NSPortNameServer) -> Result<NSMachBootstrapServer, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMachBootstrapServer").unwrap()) };
        if is_kind_of {
            Ok(NSMachBootstrapServer(parent.0))
        } else {
            Err("This NSPortNameServer cannot be downcasted to NSMachBootstrapServer")
        }
    }
}
impl INSObject for NSMachBootstrapServer {}
impl PNSObject for NSMachBootstrapServer {}
impl INSMachBootstrapServer for NSMachBootstrapServer {}
pub trait INSMachBootstrapServer: Sized + std::ops::Deref {
    unsafe fn portForName_(&self, name: NSString) -> NSPort
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, portForName : name)
    }
    unsafe fn portForName_host_(&self, name: NSString, host: NSString) -> NSPort
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, portForName : name, host : host)
    }
    unsafe fn registerPort_name_(&self, port: NSPort, name: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, registerPort : port, name : name)
    }
    unsafe fn servicePortWithName_(&self, name: NSString) -> NSPort
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, servicePortWithName : name)
    }
    unsafe fn sharedInstance() -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMachBootstrapServer").unwrap(), sharedInstance)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMessagePortNameServer(pub id);
impl std::ops::Deref for NSMessagePortNameServer {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMessagePortNameServer {}
impl NSMessagePortNameServer {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMessagePortNameServer").unwrap(), alloc) })
    }
}
impl INSPortNameServer for NSMessagePortNameServer {}
impl std::convert::TryFrom<NSPortNameServer> for NSMessagePortNameServer {
    type Error = &'static str;
    fn try_from(parent: NSPortNameServer) -> Result<NSMessagePortNameServer, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMessagePortNameServer").unwrap()) };
        if is_kind_of {
            Ok(NSMessagePortNameServer(parent.0))
        } else {
            Err("This NSPortNameServer cannot be downcasted to NSMessagePortNameServer")
        }
    }
}
impl INSObject for NSMessagePortNameServer {}
impl PNSObject for NSMessagePortNameServer {}
impl INSMessagePortNameServer for NSMessagePortNameServer {}
pub trait INSMessagePortNameServer: Sized + std::ops::Deref {
    unsafe fn portForName_(&self, name: NSString) -> NSPort
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, portForName : name)
    }
    unsafe fn portForName_host_(&self, name: NSString, host: NSString) -> NSPort
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, portForName : name, host : host)
    }
    unsafe fn sharedInstance() -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSMessagePortNameServer").unwrap(), sharedInstance)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSSocketPortNameServer(pub id);
impl std::ops::Deref for NSSocketPortNameServer {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSSocketPortNameServer {}
impl NSSocketPortNameServer {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSSocketPortNameServer").unwrap(), alloc) })
    }
}
impl INSPortNameServer for NSSocketPortNameServer {}
impl std::convert::TryFrom<NSPortNameServer> for NSSocketPortNameServer {
    type Error = &'static str;
    fn try_from(parent: NSPortNameServer) -> Result<NSSocketPortNameServer, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSSocketPortNameServer").unwrap()) };
        if is_kind_of {
            Ok(NSSocketPortNameServer(parent.0))
        } else {
            Err("This NSPortNameServer cannot be downcasted to NSSocketPortNameServer")
        }
    }
}
impl INSObject for NSSocketPortNameServer {}
impl PNSObject for NSSocketPortNameServer {}
impl INSSocketPortNameServer for NSSocketPortNameServer {}
pub trait INSSocketPortNameServer: Sized + std::ops::Deref {
    unsafe fn portForName_(&self, name: NSString) -> NSPort
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, portForName : name)
    }
    unsafe fn portForName_host_(&self, name: NSString, host: NSString) -> NSPort
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, portForName : name, host : host)
    }
    unsafe fn registerPort_name_(&self, port: NSPort, name: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, registerPort : port, name : name)
    }
    unsafe fn removePortForName_(&self, name: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removePortForName : name)
    }
    unsafe fn portForName_host_nameServerPortNumber_(
        &self,
        name: NSString,
        host: NSString,
        portNumber: u16,
    ) -> NSPort
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, portForName : name, host : host, nameServerPortNumber : portNumber)
    }
    unsafe fn registerPort_name_nameServerPortNumber_(
        &self,
        port: NSPort,
        name: NSString,
        portNumber: u16,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, registerPort : port, name : name, nameServerPortNumber : portNumber)
    }
    unsafe fn defaultNameServerPortNumber(&self) -> u16
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, defaultNameServerPortNumber)
    }
    unsafe fn setDefaultNameServerPortNumber_(&self, defaultNameServerPortNumber: u16)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDefaultNameServerPortNumber : defaultNameServerPortNumber)
    }
    unsafe fn sharedInstance() -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSSocketPortNameServer").unwrap(), sharedInstance)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSProtocolChecker(pub id);
impl std::ops::Deref for NSProtocolChecker {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSProtocolChecker {}
impl NSProtocolChecker {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSProtocolChecker").unwrap(), alloc) })
    }
}
impl INSProxy for NSProtocolChecker {}
impl PNSObject for NSProtocolChecker {}
impl std::convert::TryFrom<NSProxy> for NSProtocolChecker {
    type Error = &'static str;
    fn try_from(parent: NSProxy) -> Result<NSProtocolChecker, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSProtocolChecker").unwrap()) };
        if is_kind_of {
            Ok(NSProtocolChecker(parent.0))
        } else {
            Err("This NSProxy cannot be downcasted to NSProtocolChecker")
        }
    }
}
impl INSProtocolChecker for NSProtocolChecker {}
pub trait INSProtocolChecker: Sized + std::ops::Deref {
    unsafe fn protocol(&self) -> Protocol
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, protocol)
    }
    unsafe fn target(&self) -> NSObject
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, target)
    }
}
impl NSProtocolChecker_NSProtocolCheckerCreation for NSProtocolChecker {}
pub trait NSProtocolChecker_NSProtocolCheckerCreation: Sized + std::ops::Deref {
    unsafe fn initWithTarget_protocol_(
        &self,
        anObject: NSObject,
        aProtocol: Protocol,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithTarget : anObject, protocol : aProtocol)
    }
    unsafe fn protocolCheckerWithTarget_protocol_(
        anObject: NSObject,
        aProtocol: Protocol,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSProtocolChecker").unwrap(), protocolCheckerWithTarget : anObject, protocol : aProtocol)
    }
}
pub type NSTaskTerminationReason = NSInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSTask(pub id);
impl std::ops::Deref for NSTask {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSTask {}
impl NSTask {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSTask").unwrap(), alloc) })
    }
}
impl INSObject for NSTask {}
impl PNSObject for NSTask {}
impl std::convert::TryFrom<NSObject> for NSTask {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSTask, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSTask").unwrap()) };
        if is_kind_of {
            Ok(NSTask(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSTask")
        }
    }
}
impl INSTask for NSTask {}
pub trait INSTask: 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 launchAndReturnError_(&self, error: *mut NSError) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, launchAndReturnError : error)
    }
    unsafe fn interrupt(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, interrupt)
    }
    unsafe fn terminate(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, terminate)
    }
    unsafe fn suspend(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, suspend)
    }
    unsafe fn resume(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, resume)
    }
    unsafe fn executableURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, executableURL)
    }
    unsafe fn setExecutableURL_(&self, executableURL: NSURL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setExecutableURL : executableURL)
    }
    unsafe fn arguments(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arguments)
    }
    unsafe fn setArguments_(&self, arguments: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArguments : arguments)
    }
    unsafe fn environment(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, environment)
    }
    unsafe fn setEnvironment_(&self, environment: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEnvironment : environment)
    }
    unsafe fn currentDirectoryURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentDirectoryURL)
    }
    unsafe fn setCurrentDirectoryURL_(&self, currentDirectoryURL: NSURL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrentDirectoryURL : currentDirectoryURL)
    }
    unsafe fn launchRequirementData(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, launchRequirementData)
    }
    unsafe fn setLaunchRequirementData_(&self, launchRequirementData: NSData)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLaunchRequirementData : launchRequirementData)
    }
    unsafe fn standardInput(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, standardInput)
    }
    unsafe fn setStandardInput_(&self, standardInput: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStandardInput : standardInput)
    }
    unsafe fn standardOutput(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, standardOutput)
    }
    unsafe fn setStandardOutput_(&self, standardOutput: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStandardOutput : standardOutput)
    }
    unsafe fn standardError(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, standardError)
    }
    unsafe fn setStandardError_(&self, standardError: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStandardError : standardError)
    }
    unsafe fn processIdentifier(&self) -> ::std::os::raw::c_int
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, processIdentifier)
    }
    unsafe fn isRunning(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isRunning)
    }
    unsafe fn terminationStatus(&self) -> ::std::os::raw::c_int
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, terminationStatus)
    }
    unsafe fn terminationReason(&self) -> NSTaskTerminationReason
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, terminationReason)
    }
    unsafe fn terminationHandler(&self) -> *mut ::std::os::raw::c_void
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, terminationHandler)
    }
    unsafe fn setTerminationHandler_(&self, terminationHandler: *mut ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTerminationHandler : terminationHandler)
    }
    unsafe fn qualityOfService(&self) -> NSQualityOfService
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, qualityOfService)
    }
    unsafe fn setQualityOfService_(&self, qualityOfService: NSQualityOfService)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setQualityOfService : qualityOfService)
    }
}
impl NSTask_NSTaskConveniences for NSTask {}
pub trait NSTask_NSTaskConveniences: Sized + std::ops::Deref {
    unsafe fn waitUntilExit(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, waitUntilExit)
    }
    unsafe fn launchedTaskWithExecutableURL_arguments_error_terminationHandler_(
        url: NSURL,
        arguments: NSArray,
        error: *mut NSError,
        terminationHandler: *mut ::std::os::raw::c_void,
    ) -> NSTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTask").unwrap(), launchedTaskWithExecutableURL : url, arguments : arguments, error : error, terminationHandler : terminationHandler)
    }
}
impl NSTask_NSDeprecated for NSTask {}
pub trait NSTask_NSDeprecated: Sized + std::ops::Deref {
    unsafe fn launch(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, launch)
    }
    unsafe fn launchPath(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, launchPath)
    }
    unsafe fn setLaunchPath_(&self, launchPath: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setLaunchPath : launchPath)
    }
    unsafe fn currentDirectoryPath(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentDirectoryPath)
    }
    unsafe fn setCurrentDirectoryPath_(&self, currentDirectoryPath: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrentDirectoryPath : currentDirectoryPath)
    }
    unsafe fn launchedTaskWithLaunchPath_arguments_(path: NSString, arguments: NSArray) -> NSTask
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSTask").unwrap(), launchedTaskWithLaunchPath : path, arguments : arguments)
    }
}
pub type NSXMLNodeOptions = NSUInteger;
pub type NSXMLNodeKind = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSXMLNode(pub id);
impl std::ops::Deref for NSXMLNode {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSXMLNode {}
impl NSXMLNode {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLNode").unwrap(), alloc) })
    }
}
impl PNSCopying for NSXMLNode {}
impl INSObject for NSXMLNode {}
impl PNSObject for NSXMLNode {}
impl std::convert::TryFrom<NSObject> for NSXMLNode {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSXMLNode, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSXMLNode").unwrap()) };
        if is_kind_of {
            Ok(NSXMLNode(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSXMLNode")
        }
    }
}
impl INSXMLNode for NSXMLNode {}
pub trait INSXMLNode: 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 initWithKind_(&self, kind: NSXMLNodeKind) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithKind : kind)
    }
    unsafe fn initWithKind_options_(
        &self,
        kind: NSXMLNodeKind,
        options: NSXMLNodeOptions,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithKind : kind, options : options)
    }
    unsafe fn setStringValue_resolvingEntities_(&self, string: NSString, resolve: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStringValue : string, resolvingEntities : resolve)
    }
    unsafe fn childAtIndex_(&self, index: NSUInteger) -> NSXMLNode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, childAtIndex : index)
    }
    unsafe fn detach(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, detach)
    }
    unsafe fn XMLStringWithOptions_(&self, options: NSXMLNodeOptions) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, XMLStringWithOptions : options)
    }
    unsafe fn canonicalXMLStringPreservingComments_(&self, comments: BOOL) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, canonicalXMLStringPreservingComments : comments)
    }
    unsafe fn nodesForXPath_error_(&self, xpath: NSString, error: *mut NSError) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, nodesForXPath : xpath, error : error)
    }
    unsafe fn objectsForXQuery_constants_error_(
        &self,
        xquery: NSString,
        constants: NSDictionary,
        error: *mut NSError,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectsForXQuery : xquery, constants : constants, error : error)
    }
    unsafe fn objectsForXQuery_error_(&self, xquery: NSString, error: *mut NSError) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectsForXQuery : xquery, error : error)
    }
    unsafe fn kind(&self) -> NSXMLNodeKind
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, kind)
    }
    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 objectValue(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, objectValue)
    }
    unsafe fn setObjectValue_(&self, objectValue: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setObjectValue : objectValue)
    }
    unsafe fn stringValue(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stringValue)
    }
    unsafe fn setStringValue_(&self, stringValue: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStringValue : stringValue)
    }
    unsafe fn index(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, index)
    }
    unsafe fn level(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, level)
    }
    unsafe fn rootDocument(&self) -> NSXMLDocument
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rootDocument)
    }
    unsafe fn parent(&self) -> NSXMLNode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, parent)
    }
    unsafe fn childCount(&self) -> NSUInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, childCount)
    }
    unsafe fn children(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, children)
    }
    unsafe fn previousSibling(&self) -> NSXMLNode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previousSibling)
    }
    unsafe fn nextSibling(&self) -> NSXMLNode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nextSibling)
    }
    unsafe fn previousNode(&self) -> NSXMLNode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, previousNode)
    }
    unsafe fn nextNode(&self) -> NSXMLNode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, nextNode)
    }
    unsafe fn XPath(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, XPath)
    }
    unsafe fn localName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localName)
    }
    unsafe fn prefix(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, prefix)
    }
    unsafe fn URI(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, URI)
    }
    unsafe fn setURI_(&self, URI: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setURI : URI)
    }
    unsafe fn description(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, description)
    }
    unsafe fn XMLString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, XMLString)
    }
    unsafe fn document() -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLNode").unwrap(), document)
    }
    unsafe fn documentWithRootElement_(element: NSXMLElement) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLNode").unwrap(), documentWithRootElement : element)
    }
    unsafe fn elementWithName_(name: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLNode").unwrap(), elementWithName : name)
    }
    unsafe fn elementWithName_URI_(name: NSString, URI: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLNode").unwrap(), elementWithName : name, URI : URI)
    }
    unsafe fn elementWithName_stringValue_(name: NSString, string: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLNode").unwrap(), elementWithName : name, stringValue : string)
    }
    unsafe fn elementWithName_children_attributes_(
        name: NSString,
        children: NSArray,
        attributes: NSArray,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLNode").unwrap(), elementWithName : name, children : children, attributes : attributes)
    }
    unsafe fn attributeWithName_stringValue_(name: NSString, stringValue: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLNode").unwrap(), attributeWithName : name, stringValue : stringValue)
    }
    unsafe fn attributeWithName_URI_stringValue_(
        name: NSString,
        URI: NSString,
        stringValue: NSString,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLNode").unwrap(), attributeWithName : name, URI : URI, stringValue : stringValue)
    }
    unsafe fn namespaceWithName_stringValue_(name: NSString, stringValue: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLNode").unwrap(), namespaceWithName : name, stringValue : stringValue)
    }
    unsafe fn processingInstructionWithName_stringValue_(
        name: NSString,
        stringValue: NSString,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLNode").unwrap(), processingInstructionWithName : name, stringValue : stringValue)
    }
    unsafe fn commentWithStringValue_(stringValue: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLNode").unwrap(), commentWithStringValue : stringValue)
    }
    unsafe fn textWithStringValue_(stringValue: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLNode").unwrap(), textWithStringValue : stringValue)
    }
    unsafe fn DTDNodeWithXMLString_(string: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLNode").unwrap(), DTDNodeWithXMLString : string)
    }
    unsafe fn localNameForName_(name: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLNode").unwrap(), localNameForName : name)
    }
    unsafe fn prefixForName_(name: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLNode").unwrap(), prefixForName : name)
    }
    unsafe fn predefinedNamespaceForPrefix_(name: NSString) -> NSXMLNode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLNode").unwrap(), predefinedNamespaceForPrefix : name)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSXMLDTD(pub id);
impl std::ops::Deref for NSXMLDTD {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSXMLDTD {}
impl NSXMLDTD {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLDTD").unwrap(), alloc) })
    }
}
impl INSXMLNode for NSXMLDTD {}
impl PNSCopying for NSXMLDTD {}
impl From<NSXMLDTD> for NSXMLNode {
    fn from(child: NSXMLDTD) -> NSXMLNode {
        NSXMLNode(child.0)
    }
}
impl std::convert::TryFrom<NSXMLNode> for NSXMLDTD {
    type Error = &'static str;
    fn try_from(parent: NSXMLNode) -> Result<NSXMLDTD, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSXMLDTD").unwrap()) };
        if is_kind_of {
            Ok(NSXMLDTD(parent.0))
        } else {
            Err("This NSXMLNode cannot be downcasted to NSXMLDTD")
        }
    }
}
impl INSObject for NSXMLDTD {}
impl PNSObject for NSXMLDTD {}
impl INSXMLDTD for NSXMLDTD {}
pub trait INSXMLDTD: 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 initWithKind_options_(
        &self,
        kind: NSXMLNodeKind,
        options: NSXMLNodeOptions,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithKind : kind, options : options)
    }
    unsafe fn initWithContentsOfURL_options_error_(
        &self,
        url: NSURL,
        mask: NSXMLNodeOptions,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfURL : url, options : mask, error : error)
    }
    unsafe fn initWithData_options_error_(
        &self,
        data: NSData,
        mask: NSXMLNodeOptions,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithData : data, options : mask, error : error)
    }
    unsafe fn insertChild_atIndex_(&self, child: NSXMLNode, index: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, insertChild : child, atIndex : index)
    }
    unsafe fn insertChildren_atIndex_(&self, children: NSArray, index: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, insertChildren : children, atIndex : index)
    }
    unsafe fn removeChildAtIndex_(&self, index: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeChildAtIndex : index)
    }
    unsafe fn setChildren_(&self, children: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChildren : children)
    }
    unsafe fn addChild_(&self, child: NSXMLNode)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addChild : child)
    }
    unsafe fn replaceChildAtIndex_withNode_(&self, index: NSUInteger, node: NSXMLNode)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replaceChildAtIndex : index, withNode : node)
    }
    unsafe fn entityDeclarationForName_(&self, name: NSString) -> NSXMLDTDNode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, entityDeclarationForName : name)
    }
    unsafe fn notationDeclarationForName_(&self, name: NSString) -> NSXMLDTDNode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, notationDeclarationForName : name)
    }
    unsafe fn elementDeclarationForName_(&self, name: NSString) -> NSXMLDTDNode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, elementDeclarationForName : name)
    }
    unsafe fn attributeDeclarationForName_elementName_(
        &self,
        name: NSString,
        elementName: NSString,
    ) -> NSXMLDTDNode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, attributeDeclarationForName : name, elementName : elementName)
    }
    unsafe fn publicID(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, publicID)
    }
    unsafe fn setPublicID_(&self, publicID: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPublicID : publicID)
    }
    unsafe fn systemID(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, systemID)
    }
    unsafe fn setSystemID_(&self, systemID: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSystemID : systemID)
    }
    unsafe fn predefinedEntityDeclarationForName_(name: NSString) -> NSXMLDTDNode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLDTD").unwrap(), predefinedEntityDeclarationForName : name)
    }
}
pub type NSXMLDTDNodeKind = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSXMLDTDNode(pub id);
impl std::ops::Deref for NSXMLDTDNode {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSXMLDTDNode {}
impl NSXMLDTDNode {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLDTDNode").unwrap(), alloc) })
    }
}
impl INSXMLNode for NSXMLDTDNode {}
impl PNSCopying for NSXMLDTDNode {}
impl std::convert::TryFrom<NSXMLNode> for NSXMLDTDNode {
    type Error = &'static str;
    fn try_from(parent: NSXMLNode) -> Result<NSXMLDTDNode, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSXMLDTDNode").unwrap()) };
        if is_kind_of {
            Ok(NSXMLDTDNode(parent.0))
        } else {
            Err("This NSXMLNode cannot be downcasted to NSXMLDTDNode")
        }
    }
}
impl INSObject for NSXMLDTDNode {}
impl PNSObject for NSXMLDTDNode {}
impl INSXMLDTDNode for NSXMLDTDNode {}
pub trait INSXMLDTDNode: Sized + std::ops::Deref {
    unsafe fn initWithXMLString_(&self, string: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithXMLString : string)
    }
    unsafe fn initWithKind_options_(
        &self,
        kind: NSXMLNodeKind,
        options: NSXMLNodeOptions,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithKind : kind, options : options)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn DTDKind(&self) -> NSXMLDTDNodeKind
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, DTDKind)
    }
    unsafe fn setDTDKind_(&self, DTDKind: NSXMLDTDNodeKind)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDTDKind : DTDKind)
    }
    unsafe fn isExternal(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isExternal)
    }
    unsafe fn publicID(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, publicID)
    }
    unsafe fn setPublicID_(&self, publicID: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setPublicID : publicID)
    }
    unsafe fn systemID(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, systemID)
    }
    unsafe fn setSystemID_(&self, systemID: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSystemID : systemID)
    }
    unsafe fn notationName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, notationName)
    }
    unsafe fn setNotationName_(&self, notationName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNotationName : notationName)
    }
}
pub type NSXMLDocumentContentKind = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSXMLDocument(pub id);
impl std::ops::Deref for NSXMLDocument {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSXMLDocument {}
impl NSXMLDocument {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLDocument").unwrap(), alloc) })
    }
}
impl INSXMLNode for NSXMLDocument {}
impl PNSCopying for NSXMLDocument {}
impl std::convert::TryFrom<NSXMLNode> for NSXMLDocument {
    type Error = &'static str;
    fn try_from(parent: NSXMLNode) -> Result<NSXMLDocument, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSXMLDocument").unwrap()) };
        if is_kind_of {
            Ok(NSXMLDocument(parent.0))
        } else {
            Err("This NSXMLNode cannot be downcasted to NSXMLDocument")
        }
    }
}
impl INSObject for NSXMLDocument {}
impl PNSObject for NSXMLDocument {}
impl INSXMLDocument for NSXMLDocument {}
pub trait INSXMLDocument: 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 initWithXMLString_options_error_(
        &self,
        string: NSString,
        mask: NSXMLNodeOptions,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithXMLString : string, options : mask, error : error)
    }
    unsafe fn initWithContentsOfURL_options_error_(
        &self,
        url: NSURL,
        mask: NSXMLNodeOptions,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContentsOfURL : url, options : mask, error : error)
    }
    unsafe fn initWithData_options_error_(
        &self,
        data: NSData,
        mask: NSXMLNodeOptions,
        error: *mut NSError,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithData : data, options : mask, error : error)
    }
    unsafe fn initWithRootElement_(&self, element: NSXMLElement) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithRootElement : element)
    }
    unsafe fn setRootElement_(&self, root: NSXMLElement)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRootElement : root)
    }
    unsafe fn rootElement(&self) -> NSXMLElement
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rootElement)
    }
    unsafe fn insertChild_atIndex_(&self, child: NSXMLNode, index: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, insertChild : child, atIndex : index)
    }
    unsafe fn insertChildren_atIndex_(&self, children: NSArray, index: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, insertChildren : children, atIndex : index)
    }
    unsafe fn removeChildAtIndex_(&self, index: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeChildAtIndex : index)
    }
    unsafe fn setChildren_(&self, children: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChildren : children)
    }
    unsafe fn addChild_(&self, child: NSXMLNode)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addChild : child)
    }
    unsafe fn replaceChildAtIndex_withNode_(&self, index: NSUInteger, node: NSXMLNode)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replaceChildAtIndex : index, withNode : node)
    }
    unsafe fn XMLDataWithOptions_(&self, options: NSXMLNodeOptions) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, XMLDataWithOptions : options)
    }
    unsafe fn objectByApplyingXSLT_arguments_error_(
        &self,
        xslt: NSData,
        arguments: NSDictionary,
        error: *mut NSError,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectByApplyingXSLT : xslt, arguments : arguments, error : error)
    }
    unsafe fn objectByApplyingXSLTString_arguments_error_(
        &self,
        xslt: NSString,
        arguments: NSDictionary,
        error: *mut NSError,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectByApplyingXSLTString : xslt, arguments : arguments, error : error)
    }
    unsafe fn objectByApplyingXSLTAtURL_arguments_error_(
        &self,
        xsltURL: NSURL,
        argument: NSDictionary,
        error: *mut NSError,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectByApplyingXSLTAtURL : xsltURL, arguments : argument, error : error)
    }
    unsafe fn validateAndReturnError_(&self, error: *mut NSError) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, validateAndReturnError : error)
    }
    unsafe fn characterEncoding(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, characterEncoding)
    }
    unsafe fn setCharacterEncoding_(&self, characterEncoding: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCharacterEncoding : characterEncoding)
    }
    unsafe fn version(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, version)
    }
    unsafe fn setVersion_(&self, version: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVersion : version)
    }
    unsafe fn isStandalone(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isStandalone)
    }
    unsafe fn setStandalone_(&self, standalone: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStandalone : standalone)
    }
    unsafe fn documentContentKind(&self) -> NSXMLDocumentContentKind
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, documentContentKind)
    }
    unsafe fn setDocumentContentKind_(&self, documentContentKind: NSXMLDocumentContentKind)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDocumentContentKind : documentContentKind)
    }
    unsafe fn MIMEType(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, MIMEType)
    }
    unsafe fn setMIMEType_(&self, MIMEType: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setMIMEType : MIMEType)
    }
    unsafe fn DTD(&self) -> NSXMLDTD
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, DTD)
    }
    unsafe fn setDTD_(&self, DTD: NSXMLDTD)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDTD : DTD)
    }
    unsafe fn XMLData(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, XMLData)
    }
    unsafe fn replacementClassForClass_(cls: Class) -> Class
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLDocument").unwrap(), replacementClassForClass : cls)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSXMLElement(pub id);
impl std::ops::Deref for NSXMLElement {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSXMLElement {}
impl NSXMLElement {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSXMLElement").unwrap(), alloc) })
    }
}
impl INSXMLNode for NSXMLElement {}
impl PNSCopying for NSXMLElement {}
impl std::convert::TryFrom<NSXMLNode> for NSXMLElement {
    type Error = &'static str;
    fn try_from(parent: NSXMLNode) -> Result<NSXMLElement, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSXMLElement").unwrap()) };
        if is_kind_of {
            Ok(NSXMLElement(parent.0))
        } else {
            Err("This NSXMLNode cannot be downcasted to NSXMLElement")
        }
    }
}
impl INSObject for NSXMLElement {}
impl PNSObject for NSXMLElement {}
impl INSXMLElement for NSXMLElement {}
pub trait INSXMLElement: Sized + std::ops::Deref {
    unsafe fn initWithName_(&self, name: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithName : name)
    }
    unsafe fn initWithName_URI_(&self, name: NSString, URI: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithName : name, URI : URI)
    }
    unsafe fn initWithName_stringValue_(&self, name: NSString, string: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithName : name, stringValue : string)
    }
    unsafe fn initWithXMLString_error_(&self, string: NSString, error: *mut NSError) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithXMLString : string, error : error)
    }
    unsafe fn initWithKind_options_(
        &self,
        kind: NSXMLNodeKind,
        options: NSXMLNodeOptions,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithKind : kind, options : options)
    }
    unsafe fn elementsForName_(&self, name: NSString) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, elementsForName : name)
    }
    unsafe fn elementsForLocalName_URI_(&self, localName: NSString, URI: NSString) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, elementsForLocalName : localName, URI : URI)
    }
    unsafe fn addAttribute_(&self, attribute: NSXMLNode)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addAttribute : attribute)
    }
    unsafe fn removeAttributeForName_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeAttributeForName : name)
    }
    unsafe fn setAttributesWithDictionary_(&self, attributes: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttributesWithDictionary : attributes)
    }
    unsafe fn attributeForName_(&self, name: NSString) -> NSXMLNode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, attributeForName : name)
    }
    unsafe fn attributeForLocalName_URI_(&self, localName: NSString, URI: NSString) -> NSXMLNode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, attributeForLocalName : localName, URI : URI)
    }
    unsafe fn addNamespace_(&self, aNamespace: NSXMLNode)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addNamespace : aNamespace)
    }
    unsafe fn removeNamespaceForPrefix_(&self, name: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeNamespaceForPrefix : name)
    }
    unsafe fn namespaceForPrefix_(&self, name: NSString) -> NSXMLNode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, namespaceForPrefix : name)
    }
    unsafe fn resolveNamespaceForName_(&self, name: NSString) -> NSXMLNode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resolveNamespaceForName : name)
    }
    unsafe fn resolvePrefixForNamespaceURI_(&self, namespaceURI: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resolvePrefixForNamespaceURI : namespaceURI)
    }
    unsafe fn insertChild_atIndex_(&self, child: NSXMLNode, index: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, insertChild : child, atIndex : index)
    }
    unsafe fn insertChildren_atIndex_(&self, children: NSArray, index: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, insertChildren : children, atIndex : index)
    }
    unsafe fn removeChildAtIndex_(&self, index: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeChildAtIndex : index)
    }
    unsafe fn setChildren_(&self, children: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChildren : children)
    }
    unsafe fn addChild_(&self, child: NSXMLNode)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, addChild : child)
    }
    unsafe fn replaceChildAtIndex_withNode_(&self, index: NSUInteger, node: NSXMLNode)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replaceChildAtIndex : index, withNode : node)
    }
    unsafe fn normalizeAdjacentTextNodesPreservingCDATA_(&self, preserve: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, normalizeAdjacentTextNodesPreservingCDATA : preserve)
    }
    unsafe fn attributes(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attributes)
    }
    unsafe fn setAttributes_(&self, attributes: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttributes : attributes)
    }
    unsafe fn namespaces(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, namespaces)
    }
    unsafe fn setNamespaces_(&self, namespaces: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setNamespaces : namespaces)
    }
}
impl NSXMLElement_NSDeprecated for NSXMLElement {}
pub trait NSXMLElement_NSDeprecated: Sized + std::ops::Deref {
    unsafe fn setAttributesAsDictionary_(&self, attributes: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttributesAsDictionary : attributes)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSURLDownload(pub id);
impl std::ops::Deref for NSURLDownload {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSURLDownload {}
impl NSURLDownload {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLDownload").unwrap(), alloc) })
    }
}
impl INSObject for NSURLDownload {}
impl PNSObject for NSURLDownload {}
impl std::convert::TryFrom<NSObject> for NSURLDownload {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSURLDownload, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSURLDownload").unwrap()) };
        if is_kind_of {
            Ok(NSURLDownload(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSURLDownload")
        }
    }
}
impl INSURLDownload for NSURLDownload {}
pub trait INSURLDownload: Sized + std::ops::Deref {
    unsafe fn initWithRequest_delegate_(
        &self,
        request: NSURLRequest,
        delegate: *mut u64,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithRequest : request, delegate : delegate)
    }
    unsafe fn initWithResumeData_delegate_path_(
        &self,
        resumeData: NSData,
        delegate: *mut u64,
        path: NSString,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithResumeData : resumeData, delegate : delegate, path : path)
    }
    unsafe fn cancel(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, cancel)
    }
    unsafe fn setDestination_allowOverwrite_(&self, path: NSString, allowOverwrite: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDestination : path, allowOverwrite : allowOverwrite)
    }
    unsafe fn request(&self) -> NSURLRequest
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, request)
    }
    unsafe fn resumeData(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, resumeData)
    }
    unsafe fn deletesFileUponFailure(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deletesFileUponFailure)
    }
    unsafe fn setDeletesFileUponFailure_(&self, deletesFileUponFailure: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDeletesFileUponFailure : deletesFileUponFailure)
    }
    unsafe fn canResumeDownloadDecodedWithEncodingMIMEType_(MIMEType: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSURLDownload").unwrap(), canResumeDownloadDecodedWithEncodingMIMEType : MIMEType)
    }
}
pub trait PNSURLDownloadDelegate: Sized + std::ops::Deref {
    unsafe fn downloadDidBegin_(&self, download: NSURLDownload)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, downloadDidBegin : download)
    }
    unsafe fn download_willSendRequest_redirectResponse_(
        &self,
        download: NSURLDownload,
        request: NSURLRequest,
        redirectResponse: NSURLResponse,
    ) -> NSURLRequest
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, download : download, willSendRequest : request, redirectResponse : redirectResponse)
    }
    unsafe fn download_canAuthenticateAgainstProtectionSpace_(
        &self,
        connection: NSURLDownload,
        protectionSpace: NSURLProtectionSpace,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, download : connection, canAuthenticateAgainstProtectionSpace : protectionSpace)
    }
    unsafe fn download_didReceiveAuthenticationChallenge_(
        &self,
        download: NSURLDownload,
        challenge: NSURLAuthenticationChallenge,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, download : download, didReceiveAuthenticationChallenge : challenge)
    }
    unsafe fn download_didCancelAuthenticationChallenge_(
        &self,
        download: NSURLDownload,
        challenge: NSURLAuthenticationChallenge,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, download : download, didCancelAuthenticationChallenge : challenge)
    }
    unsafe fn downloadShouldUseCredentialStorage_(&self, download: NSURLDownload) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, downloadShouldUseCredentialStorage : download)
    }
    unsafe fn download_didReceiveResponse_(&self, download: NSURLDownload, response: NSURLResponse)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, download : download, didReceiveResponse : response)
    }
    unsafe fn download_willResumeWithResponse_fromByte_(
        &self,
        download: NSURLDownload,
        response: NSURLResponse,
        startingByte: ::std::os::raw::c_longlong,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, download : download, willResumeWithResponse : response, fromByte : startingByte)
    }
    unsafe fn download_didReceiveDataOfLength_(&self, download: NSURLDownload, length: NSUInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, download : download, didReceiveDataOfLength : length)
    }
    unsafe fn download_shouldDecodeSourceDataOfMIMEType_(
        &self,
        download: NSURLDownload,
        encodingType: NSString,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, download : download, shouldDecodeSourceDataOfMIMEType : encodingType)
    }
    unsafe fn download_decideDestinationWithSuggestedFilename_(
        &self,
        download: NSURLDownload,
        filename: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, download : download, decideDestinationWithSuggestedFilename : filename)
    }
    unsafe fn download_didCreateDestination_(&self, download: NSURLDownload, path: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, download : download, didCreateDestination : path)
    }
    unsafe fn downloadDidFinish_(&self, download: NSURLDownload)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, downloadDidFinish : download)
    }
    unsafe fn download_didFailWithError_(&self, download: NSURLDownload, error: NSError)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, download : download, didFailWithError : error)
    }
}
pub type NSAppleEventSendOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSAppleEventDescriptor(pub id);
impl std::ops::Deref for NSAppleEventDescriptor {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSAppleEventDescriptor {}
impl NSAppleEventDescriptor {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSAppleEventDescriptor").unwrap(), alloc) })
    }
}
impl PNSCopying for NSAppleEventDescriptor {}
impl PNSSecureCoding for NSAppleEventDescriptor {}
impl INSObject for NSAppleEventDescriptor {}
impl PNSObject for NSAppleEventDescriptor {}
impl std::convert::TryFrom<NSObject> for NSAppleEventDescriptor {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSAppleEventDescriptor, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSAppleEventDescriptor").unwrap()) };
        if is_kind_of {
            Ok(NSAppleEventDescriptor(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSAppleEventDescriptor")
        }
    }
}
impl INSAppleEventDescriptor for NSAppleEventDescriptor {}
pub trait INSAppleEventDescriptor: Sized + std::ops::Deref {
    unsafe fn initWithAEDescNoCopy_(&self, aeDesc: *const AEDesc) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithAEDescNoCopy : aeDesc)
    }
    unsafe fn initWithDescriptorType_bytes_length_(
        &self,
        descriptorType: DescType,
        bytes: *const ::std::os::raw::c_void,
        byteCount: NSUInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDescriptorType : descriptorType, bytes : bytes, length : byteCount)
    }
    unsafe fn initWithDescriptorType_data_(
        &self,
        descriptorType: DescType,
        data: NSData,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithDescriptorType : descriptorType, data : data)
    }
    unsafe fn initWithEventClass_eventID_targetDescriptor_returnID_transactionID_(
        &self,
        eventClass: AEEventClass,
        eventID: AEEventID,
        targetDescriptor: NSAppleEventDescriptor,
        returnID: AEReturnID,
        transactionID: AETransactionID,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithEventClass : eventClass, eventID : eventID, targetDescriptor : targetDescriptor, returnID : returnID, transactionID : transactionID)
    }
    unsafe fn initListDescriptor(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, initListDescriptor)
    }
    unsafe fn initRecordDescriptor(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, initRecordDescriptor)
    }
    unsafe fn setParamDescriptor_forKeyword_(
        &self,
        descriptor: NSAppleEventDescriptor,
        keyword: AEKeyword,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setParamDescriptor : descriptor, forKeyword : keyword)
    }
    unsafe fn paramDescriptorForKeyword_(&self, keyword: AEKeyword) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, paramDescriptorForKeyword : keyword)
    }
    unsafe fn removeParamDescriptorWithKeyword_(&self, keyword: AEKeyword)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeParamDescriptorWithKeyword : keyword)
    }
    unsafe fn setAttributeDescriptor_forKeyword_(
        &self,
        descriptor: NSAppleEventDescriptor,
        keyword: AEKeyword,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAttributeDescriptor : descriptor, forKeyword : keyword)
    }
    unsafe fn attributeDescriptorForKeyword_(&self, keyword: AEKeyword) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, attributeDescriptorForKeyword : keyword)
    }
    unsafe fn sendEventWithOptions_timeout_error_(
        &self,
        sendOptions: NSAppleEventSendOptions,
        timeoutInSeconds: NSTimeInterval,
        error: *mut NSError,
    ) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, sendEventWithOptions : sendOptions, timeout : timeoutInSeconds, error : error)
    }
    unsafe fn insertDescriptor_atIndex_(&self, descriptor: NSAppleEventDescriptor, index: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, insertDescriptor : descriptor, atIndex : index)
    }
    unsafe fn descriptorAtIndex_(&self, index: NSInteger) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, descriptorAtIndex : index)
    }
    unsafe fn removeDescriptorAtIndex_(&self, index: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeDescriptorAtIndex : index)
    }
    unsafe fn setDescriptor_forKeyword_(
        &self,
        descriptor: NSAppleEventDescriptor,
        keyword: AEKeyword,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDescriptor : descriptor, forKeyword : keyword)
    }
    unsafe fn descriptorForKeyword_(&self, keyword: AEKeyword) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, descriptorForKeyword : keyword)
    }
    unsafe fn removeDescriptorWithKeyword_(&self, keyword: AEKeyword)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeDescriptorWithKeyword : keyword)
    }
    unsafe fn keywordForDescriptorAtIndex_(&self, index: NSInteger) -> AEKeyword
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keywordForDescriptorAtIndex : index)
    }
    unsafe fn coerceToDescriptorType_(&self, descriptorType: DescType) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, coerceToDescriptorType : descriptorType)
    }
    unsafe fn aeDesc(&self) -> *const AEDesc
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, aeDesc)
    }
    unsafe fn descriptorType(&self) -> DescType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, descriptorType)
    }
    unsafe fn data(&self) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, data)
    }
    unsafe fn booleanValue(&self) -> Boolean
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, booleanValue)
    }
    unsafe fn enumCodeValue(&self) -> OSType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, enumCodeValue)
    }
    unsafe fn int32Value(&self) -> SInt32
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, int32Value)
    }
    unsafe fn doubleValue(&self) -> f64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, doubleValue)
    }
    unsafe fn typeCodeValue(&self) -> OSType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, typeCodeValue)
    }
    unsafe fn stringValue(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, stringValue)
    }
    unsafe fn dateValue(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, dateValue)
    }
    unsafe fn fileURLValue(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, fileURLValue)
    }
    unsafe fn eventClass(&self) -> AEEventClass
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, eventClass)
    }
    unsafe fn eventID(&self) -> AEEventID
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, eventID)
    }
    unsafe fn returnID(&self) -> AEReturnID
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, returnID)
    }
    unsafe fn transactionID(&self) -> AETransactionID
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, transactionID)
    }
    unsafe fn isRecordDescriptor(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isRecordDescriptor)
    }
    unsafe fn numberOfItems(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, numberOfItems)
    }
    unsafe fn nullDescriptor() -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAppleEventDescriptor").unwrap(), nullDescriptor)
    }
    unsafe fn descriptorWithDescriptorType_bytes_length_(
        descriptorType: DescType,
        bytes: *const ::std::os::raw::c_void,
        byteCount: NSUInteger,
    ) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAppleEventDescriptor").unwrap(), descriptorWithDescriptorType : descriptorType, bytes : bytes, length : byteCount)
    }
    unsafe fn descriptorWithDescriptorType_data_(
        descriptorType: DescType,
        data: NSData,
    ) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAppleEventDescriptor").unwrap(), descriptorWithDescriptorType : descriptorType, data : data)
    }
    unsafe fn descriptorWithBoolean_(boolean: Boolean) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAppleEventDescriptor").unwrap(), descriptorWithBoolean : boolean)
    }
    unsafe fn descriptorWithEnumCode_(enumerator: OSType) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAppleEventDescriptor").unwrap(), descriptorWithEnumCode : enumerator)
    }
    unsafe fn descriptorWithInt32_(signedInt: SInt32) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAppleEventDescriptor").unwrap(), descriptorWithInt32 : signedInt)
    }
    unsafe fn descriptorWithDouble_(doubleValue: f64) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAppleEventDescriptor").unwrap(), descriptorWithDouble : doubleValue)
    }
    unsafe fn descriptorWithTypeCode_(typeCode: OSType) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAppleEventDescriptor").unwrap(), descriptorWithTypeCode : typeCode)
    }
    unsafe fn descriptorWithString_(string: NSString) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAppleEventDescriptor").unwrap(), descriptorWithString : string)
    }
    unsafe fn descriptorWithDate_(date: NSDate) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAppleEventDescriptor").unwrap(), descriptorWithDate : date)
    }
    unsafe fn descriptorWithFileURL_(fileURL: NSURL) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAppleEventDescriptor").unwrap(), descriptorWithFileURL : fileURL)
    }
    unsafe fn appleEventWithEventClass_eventID_targetDescriptor_returnID_transactionID_(
        eventClass: AEEventClass,
        eventID: AEEventID,
        targetDescriptor: NSAppleEventDescriptor,
        returnID: AEReturnID,
        transactionID: AETransactionID,
    ) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAppleEventDescriptor").unwrap(), appleEventWithEventClass : eventClass, eventID : eventID, targetDescriptor : targetDescriptor, returnID : returnID, transactionID : transactionID)
    }
    unsafe fn listDescriptor() -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAppleEventDescriptor").unwrap(), listDescriptor)
    }
    unsafe fn recordDescriptor() -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAppleEventDescriptor").unwrap(), recordDescriptor)
    }
    unsafe fn currentProcessDescriptor() -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAppleEventDescriptor").unwrap(), currentProcessDescriptor)
    }
    unsafe fn descriptorWithProcessIdentifier_(processIdentifier: pid_t) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAppleEventDescriptor").unwrap(), descriptorWithProcessIdentifier : processIdentifier)
    }
    unsafe fn descriptorWithBundleIdentifier_(bundleIdentifier: NSString) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAppleEventDescriptor").unwrap(), descriptorWithBundleIdentifier : bundleIdentifier)
    }
    unsafe fn descriptorWithApplicationURL_(applicationURL: NSURL) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAppleEventDescriptor").unwrap(), descriptorWithApplicationURL : applicationURL)
    }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __NSAppleEventManagerSuspension {
    _unused: [u8; 0],
}
pub type NSAppleEventManagerSuspensionID = *const __NSAppleEventManagerSuspension;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSAppleEventManager(pub id);
impl std::ops::Deref for NSAppleEventManager {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSAppleEventManager {}
impl NSAppleEventManager {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSAppleEventManager").unwrap(), alloc) })
    }
}
impl INSObject for NSAppleEventManager {}
impl PNSObject for NSAppleEventManager {}
impl std::convert::TryFrom<NSObject> for NSAppleEventManager {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSAppleEventManager, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSAppleEventManager").unwrap()) };
        if is_kind_of {
            Ok(NSAppleEventManager(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSAppleEventManager")
        }
    }
}
impl INSAppleEventManager for NSAppleEventManager {}
pub trait INSAppleEventManager: Sized + std::ops::Deref {
    unsafe fn setEventHandler_andSelector_forEventClass_andEventID_(
        &self,
        handler: id,
        handleEventSelector: objc2::runtime::Sel,
        eventClass: AEEventClass,
        eventID: AEEventID,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEventHandler : handler, andSelector : handleEventSelector, forEventClass : eventClass, andEventID : eventID)
    }
    unsafe fn removeEventHandlerForEventClass_andEventID_(
        &self,
        eventClass: AEEventClass,
        eventID: AEEventID,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeEventHandlerForEventClass : eventClass, andEventID : eventID)
    }
    unsafe fn dispatchRawAppleEvent_withRawReply_handlerRefCon_(
        &self,
        theAppleEvent: *const AppleEvent,
        theReply: *mut AppleEvent,
        handlerRefCon: SRefCon,
    ) -> OSErr
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, dispatchRawAppleEvent : theAppleEvent, withRawReply : theReply, handlerRefCon : handlerRefCon)
    }
    unsafe fn suspendCurrentAppleEvent(&self) -> NSAppleEventManagerSuspensionID
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, suspendCurrentAppleEvent)
    }
    unsafe fn appleEventForSuspensionID_(
        &self,
        suspensionID: NSAppleEventManagerSuspensionID,
    ) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, appleEventForSuspensionID : suspensionID)
    }
    unsafe fn replyAppleEventForSuspensionID_(
        &self,
        suspensionID: NSAppleEventManagerSuspensionID,
    ) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replyAppleEventForSuspensionID : suspensionID)
    }
    unsafe fn setCurrentAppleEventAndReplyEventWithSuspensionID_(
        &self,
        suspensionID: NSAppleEventManagerSuspensionID,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setCurrentAppleEventAndReplyEventWithSuspensionID : suspensionID)
    }
    unsafe fn resumeWithSuspensionID_(&self, suspensionID: NSAppleEventManagerSuspensionID)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resumeWithSuspensionID : suspensionID)
    }
    unsafe fn currentAppleEvent(&self) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentAppleEvent)
    }
    unsafe fn currentReplyAppleEvent(&self) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, currentReplyAppleEvent)
    }
    unsafe fn sharedAppleEventManager() -> NSAppleEventManager
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAppleEventManager").unwrap(), sharedAppleEventManager)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSClassDescription(pub id);
impl std::ops::Deref for NSClassDescription {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSClassDescription {}
impl NSClassDescription {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSClassDescription").unwrap(), alloc) })
    }
}
impl INSObject for NSClassDescription {}
impl PNSObject for NSClassDescription {}
impl std::convert::TryFrom<NSObject> for NSClassDescription {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSClassDescription, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSClassDescription").unwrap()) };
        if is_kind_of {
            Ok(NSClassDescription(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSClassDescription")
        }
    }
}
impl INSClassDescription for NSClassDescription {}
pub trait INSClassDescription: Sized + std::ops::Deref {
    unsafe fn inverseForRelationshipKey_(&self, relationshipKey: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, inverseForRelationshipKey : relationshipKey)
    }
    unsafe fn attributeKeys(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attributeKeys)
    }
    unsafe fn toOneRelationshipKeys(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, toOneRelationshipKeys)
    }
    unsafe fn toManyRelationshipKeys(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, toManyRelationshipKeys)
    }
    unsafe fn registerClassDescription_forClass_(description: NSClassDescription, aClass: Class)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSClassDescription").unwrap(), registerClassDescription : description, forClass : aClass)
    }
    unsafe fn invalidateClassDescriptionCache()
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSClassDescription").unwrap(), invalidateClassDescriptionCache)
    }
    unsafe fn classDescriptionForClass_(aClass: Class) -> NSClassDescription
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSClassDescription").unwrap(), classDescriptionForClass : aClass)
    }
}
pub trait NSObject_NSClassDescriptionPrimitives: Sized + std::ops::Deref {
    unsafe fn inverseForRelationshipKey_(&self, relationshipKey: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, inverseForRelationshipKey : relationshipKey)
    }
    unsafe fn classDescription(&self) -> NSClassDescription
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, classDescription)
    }
    unsafe fn attributeKeys(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, attributeKeys)
    }
    unsafe fn toOneRelationshipKeys(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, toOneRelationshipKeys)
    }
    unsafe fn toManyRelationshipKeys(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, toManyRelationshipKeys)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSDistributedLock(pub id);
impl std::ops::Deref for NSDistributedLock {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSDistributedLock {}
impl NSDistributedLock {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSDistributedLock").unwrap(), alloc) })
    }
}
impl INSObject for NSDistributedLock {}
impl PNSObject for NSDistributedLock {}
impl std::convert::TryFrom<NSObject> for NSDistributedLock {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSDistributedLock, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSDistributedLock").unwrap()) };
        if is_kind_of {
            Ok(NSDistributedLock(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSDistributedLock")
        }
    }
}
impl INSDistributedLock for NSDistributedLock {}
pub trait INSDistributedLock: 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 initWithPath_(&self, path: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithPath : path)
    }
    unsafe fn tryLock(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, tryLock)
    }
    unsafe fn unlock(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, unlock)
    }
    unsafe fn breakLock(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, breakLock)
    }
    unsafe fn lockDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, lockDate)
    }
    unsafe fn lockWithPath_(path: NSString) -> NSDistributedLock
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSDistributedLock").unwrap(), lockWithPath : path)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSGarbageCollector(pub id);
impl std::ops::Deref for NSGarbageCollector {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSGarbageCollector {}
impl NSGarbageCollector {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSGarbageCollector").unwrap(), alloc) })
    }
}
impl INSObject for NSGarbageCollector {}
impl PNSObject for NSGarbageCollector {}
impl std::convert::TryFrom<NSObject> for NSGarbageCollector {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSGarbageCollector, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSGarbageCollector").unwrap()) };
        if is_kind_of {
            Ok(NSGarbageCollector(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSGarbageCollector")
        }
    }
}
impl INSGarbageCollector for NSGarbageCollector {}
pub trait INSGarbageCollector: Sized + std::ops::Deref {
    unsafe fn isCollecting(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isCollecting)
    }
    unsafe fn disable(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, disable)
    }
    unsafe fn enable(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, enable)
    }
    unsafe fn isEnabled(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isEnabled)
    }
    unsafe fn collectIfNeeded(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, collectIfNeeded)
    }
    unsafe fn collectExhaustively(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, collectExhaustively)
    }
    unsafe fn disableCollectorForPointer_(&self, ptr: *const ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, disableCollectorForPointer : ptr)
    }
    unsafe fn enableCollectorForPointer_(&self, ptr: *const ::std::os::raw::c_void)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, enableCollectorForPointer : ptr)
    }
    unsafe fn zone(&self) -> *mut NSZone
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, zone)
    }
    unsafe fn defaultCollector() -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSGarbageCollector").unwrap(), defaultCollector)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSHost(pub id);
impl std::ops::Deref for NSHost {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSHost {}
impl NSHost {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSHost").unwrap(), alloc) })
    }
}
impl INSObject for NSHost {}
impl PNSObject for NSHost {}
impl std::convert::TryFrom<NSObject> for NSHost {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSHost, Self::Error> {
        let is_kind_of: bool = unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSHost").unwrap()) };
        if is_kind_of {
            Ok(NSHost(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSHost")
        }
    }
}
impl INSHost for NSHost {}
pub trait INSHost: Sized + std::ops::Deref {
    unsafe fn isEqualToHost_(&self, aHost: NSHost) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isEqualToHost : aHost)
    }
    unsafe fn name(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, name)
    }
    unsafe fn names(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, names)
    }
    unsafe fn address(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, address)
    }
    unsafe fn addresses(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, addresses)
    }
    unsafe fn localizedName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, localizedName)
    }
    unsafe fn currentHost() -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSHost").unwrap(), currentHost)
    }
    unsafe fn hostWithName_(name: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSHost").unwrap(), hostWithName : name)
    }
    unsafe fn hostWithAddress_(address: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSHost").unwrap(), hostWithAddress : address)
    }
    unsafe fn setHostCacheEnabled_(flag: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSHost").unwrap(), setHostCacheEnabled : flag)
    }
    unsafe fn isHostCacheEnabled() -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSHost").unwrap(), isHostCacheEnabled)
    }
    unsafe fn flushHostCache()
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSHost").unwrap(), flushHostCache)
    }
}
pub trait NSObject_NSScripting: Sized + std::ops::Deref {
    unsafe fn scriptingValueForSpecifier_(&self, objectSpecifier: NSScriptObjectSpecifier) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scriptingValueForSpecifier : objectSpecifier)
    }
    unsafe fn copyScriptingValue_forKey_withProperties_(
        &self,
        value: id,
        key: NSString,
        properties: NSDictionary,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, copyScriptingValue : value, forKey : key, withProperties : properties)
    }
    unsafe fn newScriptingObjectOfClass_forValueForKey_withContentsValue_properties_(
        &self,
        objectClass: Class,
        key: NSString,
        contentsValue: id,
        properties: NSDictionary,
    ) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, newScriptingObjectOfClass : objectClass, forValueForKey : key, withContentsValue : contentsValue, properties : properties)
    }
    unsafe fn scriptingProperties(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, scriptingProperties)
    }
    unsafe fn setScriptingProperties_(&self, scriptingProperties: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setScriptingProperties : scriptingProperties)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSScriptClassDescription(pub id);
impl std::ops::Deref for NSScriptClassDescription {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSScriptClassDescription {}
impl NSScriptClassDescription {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSScriptClassDescription").unwrap(), alloc) })
    }
}
impl INSClassDescription for NSScriptClassDescription {}
impl From<NSScriptClassDescription> for NSClassDescription {
    fn from(child: NSScriptClassDescription) -> NSClassDescription {
        NSClassDescription(child.0)
    }
}
impl std::convert::TryFrom<NSClassDescription> for NSScriptClassDescription {
    type Error = &'static str;
    fn try_from(parent: NSClassDescription) -> Result<NSScriptClassDescription, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSScriptClassDescription").unwrap()) };
        if is_kind_of {
            Ok(NSScriptClassDescription(parent.0))
        } else {
            Err("This NSClassDescription cannot be downcasted to NSScriptClassDescription")
        }
    }
}
impl INSObject for NSScriptClassDescription {}
impl PNSObject for NSScriptClassDescription {}
impl INSScriptClassDescription for NSScriptClassDescription {}
pub trait INSScriptClassDescription: Sized + std::ops::Deref {
    unsafe fn initWithSuiteName_className_dictionary_(
        &self,
        suiteName: NSString,
        className: NSString,
        classDeclaration: NSDictionary,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithSuiteName : suiteName, className : className, dictionary : classDeclaration)
    }
    unsafe fn matchesAppleEventCode_(&self, appleEventCode: FourCharCode) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, matchesAppleEventCode : appleEventCode)
    }
    unsafe fn supportsCommand_(&self, commandDescription: NSScriptCommandDescription) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, supportsCommand : commandDescription)
    }
    unsafe fn selectorForCommand_(
        &self,
        commandDescription: NSScriptCommandDescription,
    ) -> objc2::runtime::Sel
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, selectorForCommand : commandDescription)
    }
    unsafe fn typeForKey_(&self, key: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, typeForKey : key)
    }
    unsafe fn classDescriptionForKey_(&self, key: NSString) -> NSScriptClassDescription
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, classDescriptionForKey : key)
    }
    unsafe fn appleEventCodeForKey_(&self, key: NSString) -> FourCharCode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, appleEventCodeForKey : key)
    }
    unsafe fn keyWithAppleEventCode_(&self, appleEventCode: FourCharCode) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, keyWithAppleEventCode : appleEventCode)
    }
    unsafe fn isLocationRequiredToCreateForKey_(&self, toManyRelationshipKey: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isLocationRequiredToCreateForKey : toManyRelationshipKey)
    }
    unsafe fn hasPropertyForKey_(&self, key: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, hasPropertyForKey : key)
    }
    unsafe fn hasOrderedToManyRelationshipForKey_(&self, key: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, hasOrderedToManyRelationshipForKey : key)
    }
    unsafe fn hasReadablePropertyForKey_(&self, key: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, hasReadablePropertyForKey : key)
    }
    unsafe fn hasWritablePropertyForKey_(&self, key: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, hasWritablePropertyForKey : key)
    }
    unsafe fn suiteName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, suiteName)
    }
    unsafe fn className(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, className)
    }
    unsafe fn implementationClassName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, implementationClassName)
    }
    unsafe fn superclassDescription(&self) -> NSScriptClassDescription
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, superclassDescription)
    }
    unsafe fn appleEventCode(&self) -> FourCharCode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, appleEventCode)
    }
    unsafe fn defaultSubcontainerAttributeKey(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, defaultSubcontainerAttributeKey)
    }
    unsafe fn classDescriptionForClass_(aClass: Class) -> NSScriptClassDescription
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSScriptClassDescription").unwrap(), classDescriptionForClass : aClass)
    }
}
impl NSScriptClassDescription_NSDeprecated for NSScriptClassDescription {}
pub trait NSScriptClassDescription_NSDeprecated: Sized + std::ops::Deref {
    unsafe fn isReadOnlyKey_(&self, key: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isReadOnlyKey : key)
    }
}
pub trait NSObject_NSScriptClassDescription: Sized + std::ops::Deref {
    unsafe fn classCode(&self) -> FourCharCode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, classCode)
    }
    unsafe fn className(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, className)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSScriptCoercionHandler(pub id);
impl std::ops::Deref for NSScriptCoercionHandler {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSScriptCoercionHandler {}
impl NSScriptCoercionHandler {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSScriptCoercionHandler").unwrap(), alloc) })
    }
}
impl INSObject for NSScriptCoercionHandler {}
impl PNSObject for NSScriptCoercionHandler {}
impl std::convert::TryFrom<NSObject> for NSScriptCoercionHandler {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSScriptCoercionHandler, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSScriptCoercionHandler").unwrap()) };
        if is_kind_of {
            Ok(NSScriptCoercionHandler(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSScriptCoercionHandler")
        }
    }
}
impl INSScriptCoercionHandler for NSScriptCoercionHandler {}
pub trait INSScriptCoercionHandler: Sized + std::ops::Deref {
    unsafe fn coerceValue_toClass_(&self, value: id, toClass: Class) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, coerceValue : value, toClass : toClass)
    }
    unsafe fn registerCoercer_selector_toConvertFromClass_toClass_(
        &self,
        coercer: id,
        selector: objc2::runtime::Sel,
        fromClass: Class,
        toClass: Class,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, registerCoercer : coercer, selector : selector, toConvertFromClass : fromClass, toClass : toClass)
    }
    unsafe fn sharedCoercionHandler() -> NSScriptCoercionHandler
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSScriptCoercionHandler").unwrap(), sharedCoercionHandler)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSScriptCommand(pub id);
impl std::ops::Deref for NSScriptCommand {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSScriptCommand {}
impl NSScriptCommand {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSScriptCommand").unwrap(), alloc) })
    }
}
impl PNSCoding for NSScriptCommand {}
impl INSObject for NSScriptCommand {}
impl PNSObject for NSScriptCommand {}
impl std::convert::TryFrom<NSObject> for NSScriptCommand {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSScriptCommand, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSScriptCommand").unwrap()) };
        if is_kind_of {
            Ok(NSScriptCommand(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSScriptCommand")
        }
    }
}
impl INSScriptCommand for NSScriptCommand {}
pub trait INSScriptCommand: Sized + std::ops::Deref {
    unsafe fn initWithCommandDescription_(
        &self,
        commandDef: NSScriptCommandDescription,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCommandDescription : commandDef)
    }
    unsafe fn initWithCoder_(&self, inCoder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : inCoder)
    }
    unsafe fn performDefaultImplementation(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, performDefaultImplementation)
    }
    unsafe fn executeCommand(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, executeCommand)
    }
    unsafe fn suspendExecution(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, suspendExecution)
    }
    unsafe fn resumeExecutionWithResult_(&self, result: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, resumeExecutionWithResult : result)
    }
    unsafe fn commandDescription(&self) -> NSScriptCommandDescription
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, commandDescription)
    }
    unsafe fn directParameter(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, directParameter)
    }
    unsafe fn setDirectParameter_(&self, directParameter: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDirectParameter : directParameter)
    }
    unsafe fn receiversSpecifier(&self) -> NSScriptObjectSpecifier
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, receiversSpecifier)
    }
    unsafe fn setReceiversSpecifier_(&self, receiversSpecifier: NSScriptObjectSpecifier)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReceiversSpecifier : receiversSpecifier)
    }
    unsafe fn evaluatedReceivers(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, evaluatedReceivers)
    }
    unsafe fn arguments(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, arguments)
    }
    unsafe fn setArguments_(&self, arguments: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setArguments : arguments)
    }
    unsafe fn evaluatedArguments(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, evaluatedArguments)
    }
    unsafe fn isWellFormed(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isWellFormed)
    }
    unsafe fn scriptErrorNumber(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, scriptErrorNumber)
    }
    unsafe fn setScriptErrorNumber_(&self, scriptErrorNumber: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setScriptErrorNumber : scriptErrorNumber)
    }
    unsafe fn scriptErrorOffendingObjectDescriptor(&self) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, scriptErrorOffendingObjectDescriptor)
    }
    unsafe fn setScriptErrorOffendingObjectDescriptor_(
        &self,
        scriptErrorOffendingObjectDescriptor: NSAppleEventDescriptor,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setScriptErrorOffendingObjectDescriptor : scriptErrorOffendingObjectDescriptor)
    }
    unsafe fn scriptErrorExpectedTypeDescriptor(&self) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, scriptErrorExpectedTypeDescriptor)
    }
    unsafe fn setScriptErrorExpectedTypeDescriptor_(
        &self,
        scriptErrorExpectedTypeDescriptor: NSAppleEventDescriptor,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setScriptErrorExpectedTypeDescriptor : scriptErrorExpectedTypeDescriptor)
    }
    unsafe fn scriptErrorString(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, scriptErrorString)
    }
    unsafe fn setScriptErrorString_(&self, scriptErrorString: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setScriptErrorString : scriptErrorString)
    }
    unsafe fn appleEvent(&self) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, appleEvent)
    }
    unsafe fn currentCommand() -> NSScriptCommand
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSScriptCommand").unwrap(), currentCommand)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSScriptCommandDescription(pub id);
impl std::ops::Deref for NSScriptCommandDescription {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSScriptCommandDescription {}
impl NSScriptCommandDescription {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSScriptCommandDescription").unwrap(), alloc) })
    }
}
impl PNSCoding for NSScriptCommandDescription {}
impl INSObject for NSScriptCommandDescription {}
impl PNSObject for NSScriptCommandDescription {}
impl std::convert::TryFrom<NSObject> for NSScriptCommandDescription {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSScriptCommandDescription, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSScriptCommandDescription").unwrap()) };
        if is_kind_of {
            Ok(NSScriptCommandDescription(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSScriptCommandDescription")
        }
    }
}
impl INSScriptCommandDescription for NSScriptCommandDescription {}
pub trait INSScriptCommandDescription: Sized + std::ops::Deref {
    unsafe fn init(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithSuiteName_commandName_dictionary_(
        &self,
        suiteName: NSString,
        commandName: NSString,
        commandDeclaration: NSDictionary,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithSuiteName : suiteName, commandName : commandName, dictionary : commandDeclaration)
    }
    unsafe fn initWithCoder_(&self, inCoder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : inCoder)
    }
    unsafe fn typeForArgumentWithName_(&self, argumentName: NSString) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, typeForArgumentWithName : argumentName)
    }
    unsafe fn appleEventCodeForArgumentWithName_(&self, argumentName: NSString) -> FourCharCode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, appleEventCodeForArgumentWithName : argumentName)
    }
    unsafe fn isOptionalArgumentWithName_(&self, argumentName: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isOptionalArgumentWithName : argumentName)
    }
    unsafe fn createCommandInstance(&self) -> NSScriptCommand
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, createCommandInstance)
    }
    unsafe fn createCommandInstanceWithZone_(&self, zone: *mut NSZone) -> NSScriptCommand
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, createCommandInstanceWithZone : zone)
    }
    unsafe fn suiteName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, suiteName)
    }
    unsafe fn commandName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, commandName)
    }
    unsafe fn appleEventClassCode(&self) -> FourCharCode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, appleEventClassCode)
    }
    unsafe fn appleEventCode(&self) -> FourCharCode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, appleEventCode)
    }
    unsafe fn commandClassName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, commandClassName)
    }
    unsafe fn returnType(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, returnType)
    }
    unsafe fn appleEventCodeForReturnType(&self) -> FourCharCode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, appleEventCodeForReturnType)
    }
    unsafe fn argumentNames(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, argumentNames)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSScriptExecutionContext(pub id);
impl std::ops::Deref for NSScriptExecutionContext {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSScriptExecutionContext {}
impl NSScriptExecutionContext {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSScriptExecutionContext").unwrap(), alloc) })
    }
}
impl INSObject for NSScriptExecutionContext {}
impl PNSObject for NSScriptExecutionContext {}
impl std::convert::TryFrom<NSObject> for NSScriptExecutionContext {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSScriptExecutionContext, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSScriptExecutionContext").unwrap()) };
        if is_kind_of {
            Ok(NSScriptExecutionContext(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSScriptExecutionContext")
        }
    }
}
impl INSScriptExecutionContext for NSScriptExecutionContext {}
pub trait INSScriptExecutionContext: Sized + std::ops::Deref {
    unsafe fn topLevelObject(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, topLevelObject)
    }
    unsafe fn setTopLevelObject_(&self, topLevelObject: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTopLevelObject : topLevelObject)
    }
    unsafe fn objectBeingTested(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, objectBeingTested)
    }
    unsafe fn setObjectBeingTested_(&self, objectBeingTested: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setObjectBeingTested : objectBeingTested)
    }
    unsafe fn rangeContainerObject(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, rangeContainerObject)
    }
    unsafe fn setRangeContainerObject_(&self, rangeContainerObject: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRangeContainerObject : rangeContainerObject)
    }
    unsafe fn sharedScriptExecutionContext() -> NSScriptExecutionContext
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSScriptExecutionContext").unwrap(), sharedScriptExecutionContext)
    }
}
pub trait NSObject_NSScriptKeyValueCoding: Sized + std::ops::Deref {
    unsafe fn valueAtIndex_inPropertyWithKey_(&self, index: NSUInteger, key: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, valueAtIndex : index, inPropertyWithKey : key)
    }
    unsafe fn valueWithName_inPropertyWithKey_(&self, name: NSString, key: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, valueWithName : name, inPropertyWithKey : key)
    }
    unsafe fn valueWithUniqueID_inPropertyWithKey_(&self, uniqueID: id, key: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, valueWithUniqueID : uniqueID, inPropertyWithKey : key)
    }
    unsafe fn insertValue_atIndex_inPropertyWithKey_(
        &self,
        value: id,
        index: NSUInteger,
        key: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, insertValue : value, atIndex : index, inPropertyWithKey : key)
    }
    unsafe fn removeValueAtIndex_fromPropertyWithKey_(&self, index: NSUInteger, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeValueAtIndex : index, fromPropertyWithKey : key)
    }
    unsafe fn replaceValueAtIndex_inPropertyWithKey_withValue_(
        &self,
        index: NSUInteger,
        key: NSString,
        value: id,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, replaceValueAtIndex : index, inPropertyWithKey : key, withValue : value)
    }
    unsafe fn insertValue_inPropertyWithKey_(&self, value: id, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, insertValue : value, inPropertyWithKey : key)
    }
    unsafe fn coerceValue_forKey_(&self, value: id, key: NSString) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, coerceValue : value, forKey : key)
    }
}
pub type NSInsertionPosition = NSUInteger;
pub type NSRelativePosition = NSUInteger;
pub type NSWhoseSubelementIdentifier = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSScriptObjectSpecifier(pub id);
impl std::ops::Deref for NSScriptObjectSpecifier {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSScriptObjectSpecifier {}
impl NSScriptObjectSpecifier {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSScriptObjectSpecifier").unwrap(), alloc) })
    }
}
impl PNSCoding for NSScriptObjectSpecifier {}
impl INSObject for NSScriptObjectSpecifier {}
impl PNSObject for NSScriptObjectSpecifier {}
impl std::convert::TryFrom<NSObject> for NSScriptObjectSpecifier {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSScriptObjectSpecifier, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSScriptObjectSpecifier").unwrap()) };
        if is_kind_of {
            Ok(NSScriptObjectSpecifier(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSScriptObjectSpecifier")
        }
    }
}
impl INSScriptObjectSpecifier for NSScriptObjectSpecifier {}
pub trait INSScriptObjectSpecifier: Sized + std::ops::Deref {
    unsafe fn initWithContainerSpecifier_key_(
        &self,
        container: NSScriptObjectSpecifier,
        property: NSString,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContainerSpecifier : container, key : property)
    }
    unsafe fn initWithContainerClassDescription_containerSpecifier_key_(
        &self,
        classDesc: NSScriptClassDescription,
        container: NSScriptObjectSpecifier,
        property: NSString,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContainerClassDescription : classDesc, containerSpecifier : container, key : property)
    }
    unsafe fn initWithCoder_(&self, inCoder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : inCoder)
    }
    unsafe fn indicesOfObjectsByEvaluatingWithContainer_count_(
        &self,
        container: id,
        count: *mut NSInteger,
    ) -> *mut NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indicesOfObjectsByEvaluatingWithContainer : container, count : count)
    }
    unsafe fn objectsByEvaluatingWithContainers_(&self, containers: id) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, objectsByEvaluatingWithContainers : containers)
    }
    unsafe fn childSpecifier(&self) -> NSScriptObjectSpecifier
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, childSpecifier)
    }
    unsafe fn setChildSpecifier_(&self, childSpecifier: NSScriptObjectSpecifier)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setChildSpecifier : childSpecifier)
    }
    unsafe fn containerSpecifier(&self) -> NSScriptObjectSpecifier
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, containerSpecifier)
    }
    unsafe fn setContainerSpecifier_(&self, containerSpecifier: NSScriptObjectSpecifier)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setContainerSpecifier : containerSpecifier)
    }
    unsafe fn containerIsObjectBeingTested(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, containerIsObjectBeingTested)
    }
    unsafe fn setContainerIsObjectBeingTested_(&self, containerIsObjectBeingTested: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setContainerIsObjectBeingTested : containerIsObjectBeingTested)
    }
    unsafe fn containerIsRangeContainerObject(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, containerIsRangeContainerObject)
    }
    unsafe fn setContainerIsRangeContainerObject_(&self, containerIsRangeContainerObject: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setContainerIsRangeContainerObject : containerIsRangeContainerObject)
    }
    unsafe fn key(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, key)
    }
    unsafe fn setKey_(&self, key: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setKey : key)
    }
    unsafe fn containerClassDescription(&self) -> NSScriptClassDescription
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, containerClassDescription)
    }
    unsafe fn setContainerClassDescription_(
        &self,
        containerClassDescription: NSScriptClassDescription,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setContainerClassDescription : containerClassDescription)
    }
    unsafe fn keyClassDescription(&self) -> NSScriptClassDescription
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, keyClassDescription)
    }
    unsafe fn objectsByEvaluatingSpecifier(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, objectsByEvaluatingSpecifier)
    }
    unsafe fn evaluationErrorNumber(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, evaluationErrorNumber)
    }
    unsafe fn setEvaluationErrorNumber_(&self, evaluationErrorNumber: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEvaluationErrorNumber : evaluationErrorNumber)
    }
    unsafe fn evaluationErrorSpecifier(&self) -> NSScriptObjectSpecifier
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, evaluationErrorSpecifier)
    }
    unsafe fn descriptor(&self) -> NSAppleEventDescriptor
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, descriptor)
    }
    unsafe fn objectSpecifierWithDescriptor_(
        descriptor: NSAppleEventDescriptor,
    ) -> NSScriptObjectSpecifier
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSScriptObjectSpecifier").unwrap(), objectSpecifierWithDescriptor : descriptor)
    }
}
pub trait NSObject_NSScriptObjectSpecifiers: Sized + std::ops::Deref {
    unsafe fn indicesOfObjectsByEvaluatingObjectSpecifier_(
        &self,
        specifier: NSScriptObjectSpecifier,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, indicesOfObjectsByEvaluatingObjectSpecifier : specifier)
    }
    unsafe fn objectSpecifier(&self) -> NSScriptObjectSpecifier
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, objectSpecifier)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSIndexSpecifier(pub id);
impl std::ops::Deref for NSIndexSpecifier {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSIndexSpecifier {}
impl NSIndexSpecifier {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSIndexSpecifier").unwrap(), alloc) })
    }
}
impl INSScriptObjectSpecifier for NSIndexSpecifier {}
impl PNSCoding for NSIndexSpecifier {}
impl From<NSIndexSpecifier> for NSScriptObjectSpecifier {
    fn from(child: NSIndexSpecifier) -> NSScriptObjectSpecifier {
        NSScriptObjectSpecifier(child.0)
    }
}
impl std::convert::TryFrom<NSScriptObjectSpecifier> for NSIndexSpecifier {
    type Error = &'static str;
    fn try_from(parent: NSScriptObjectSpecifier) -> Result<NSIndexSpecifier, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSIndexSpecifier").unwrap()) };
        if is_kind_of {
            Ok(NSIndexSpecifier(parent.0))
        } else {
            Err("This NSScriptObjectSpecifier cannot be downcasted to NSIndexSpecifier")
        }
    }
}
impl INSObject for NSIndexSpecifier {}
impl PNSObject for NSIndexSpecifier {}
impl INSIndexSpecifier for NSIndexSpecifier {}
pub trait INSIndexSpecifier: Sized + std::ops::Deref {
    unsafe fn initWithContainerClassDescription_containerSpecifier_key_index_(
        &self,
        classDesc: NSScriptClassDescription,
        container: NSScriptObjectSpecifier,
        property: NSString,
        index: NSInteger,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContainerClassDescription : classDesc, containerSpecifier : container, key : property, index : index)
    }
    unsafe fn index(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, index)
    }
    unsafe fn setIndex_(&self, index: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setIndex : index)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMiddleSpecifier(pub id);
impl std::ops::Deref for NSMiddleSpecifier {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMiddleSpecifier {}
impl NSMiddleSpecifier {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMiddleSpecifier").unwrap(), alloc) })
    }
}
impl INSScriptObjectSpecifier for NSMiddleSpecifier {}
impl PNSCoding for NSMiddleSpecifier {}
impl std::convert::TryFrom<NSScriptObjectSpecifier> for NSMiddleSpecifier {
    type Error = &'static str;
    fn try_from(parent: NSScriptObjectSpecifier) -> Result<NSMiddleSpecifier, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMiddleSpecifier").unwrap()) };
        if is_kind_of {
            Ok(NSMiddleSpecifier(parent.0))
        } else {
            Err("This NSScriptObjectSpecifier cannot be downcasted to NSMiddleSpecifier")
        }
    }
}
impl INSObject for NSMiddleSpecifier {}
impl PNSObject for NSMiddleSpecifier {}
impl INSMiddleSpecifier for NSMiddleSpecifier {}
pub trait INSMiddleSpecifier: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSNameSpecifier(pub id);
impl std::ops::Deref for NSNameSpecifier {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSNameSpecifier {}
impl NSNameSpecifier {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSNameSpecifier").unwrap(), alloc) })
    }
}
impl INSScriptObjectSpecifier for NSNameSpecifier {}
impl PNSCoding for NSNameSpecifier {}
impl std::convert::TryFrom<NSScriptObjectSpecifier> for NSNameSpecifier {
    type Error = &'static str;
    fn try_from(parent: NSScriptObjectSpecifier) -> Result<NSNameSpecifier, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSNameSpecifier").unwrap()) };
        if is_kind_of {
            Ok(NSNameSpecifier(parent.0))
        } else {
            Err("This NSScriptObjectSpecifier cannot be downcasted to NSNameSpecifier")
        }
    }
}
impl INSObject for NSNameSpecifier {}
impl PNSObject for NSNameSpecifier {}
impl INSNameSpecifier for NSNameSpecifier {}
pub trait INSNameSpecifier: Sized + std::ops::Deref {
    unsafe fn initWithCoder_(&self, inCoder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : inCoder)
    }
    unsafe fn initWithContainerClassDescription_containerSpecifier_key_name_(
        &self,
        classDesc: NSScriptClassDescription,
        container: NSScriptObjectSpecifier,
        property: NSString,
        name: NSString,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContainerClassDescription : classDesc, containerSpecifier : container, key : property, name : name)
    }
    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 NSPositionalSpecifier(pub id);
impl std::ops::Deref for NSPositionalSpecifier {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSPositionalSpecifier {}
impl NSPositionalSpecifier {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSPositionalSpecifier").unwrap(), alloc) })
    }
}
impl INSObject for NSPositionalSpecifier {}
impl PNSObject for NSPositionalSpecifier {}
impl std::convert::TryFrom<NSObject> for NSPositionalSpecifier {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSPositionalSpecifier, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSPositionalSpecifier").unwrap()) };
        if is_kind_of {
            Ok(NSPositionalSpecifier(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSPositionalSpecifier")
        }
    }
}
impl INSPositionalSpecifier for NSPositionalSpecifier {}
pub trait INSPositionalSpecifier: Sized + std::ops::Deref {
    unsafe fn initWithPosition_objectSpecifier_(
        &self,
        position: NSInsertionPosition,
        specifier: NSScriptObjectSpecifier,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithPosition : position, objectSpecifier : specifier)
    }
    unsafe fn setInsertionClassDescription_(&self, classDescription: NSScriptClassDescription)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInsertionClassDescription : classDescription)
    }
    unsafe fn evaluate(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, evaluate)
    }
    unsafe fn position(&self) -> NSInsertionPosition
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, position)
    }
    unsafe fn objectSpecifier(&self) -> NSScriptObjectSpecifier
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, objectSpecifier)
    }
    unsafe fn insertionContainer(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, insertionContainer)
    }
    unsafe fn insertionKey(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, insertionKey)
    }
    unsafe fn insertionIndex(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, insertionIndex)
    }
    unsafe fn insertionReplaces(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, insertionReplaces)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSPropertySpecifier(pub id);
impl std::ops::Deref for NSPropertySpecifier {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSPropertySpecifier {}
impl NSPropertySpecifier {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSPropertySpecifier").unwrap(), alloc) })
    }
}
impl INSScriptObjectSpecifier for NSPropertySpecifier {}
impl PNSCoding for NSPropertySpecifier {}
impl std::convert::TryFrom<NSScriptObjectSpecifier> for NSPropertySpecifier {
    type Error = &'static str;
    fn try_from(parent: NSScriptObjectSpecifier) -> Result<NSPropertySpecifier, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSPropertySpecifier").unwrap()) };
        if is_kind_of {
            Ok(NSPropertySpecifier(parent.0))
        } else {
            Err("This NSScriptObjectSpecifier cannot be downcasted to NSPropertySpecifier")
        }
    }
}
impl INSObject for NSPropertySpecifier {}
impl PNSObject for NSPropertySpecifier {}
impl INSPropertySpecifier for NSPropertySpecifier {}
pub trait INSPropertySpecifier: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSRandomSpecifier(pub id);
impl std::ops::Deref for NSRandomSpecifier {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSRandomSpecifier {}
impl NSRandomSpecifier {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSRandomSpecifier").unwrap(), alloc) })
    }
}
impl INSScriptObjectSpecifier for NSRandomSpecifier {}
impl PNSCoding for NSRandomSpecifier {}
impl std::convert::TryFrom<NSScriptObjectSpecifier> for NSRandomSpecifier {
    type Error = &'static str;
    fn try_from(parent: NSScriptObjectSpecifier) -> Result<NSRandomSpecifier, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSRandomSpecifier").unwrap()) };
        if is_kind_of {
            Ok(NSRandomSpecifier(parent.0))
        } else {
            Err("This NSScriptObjectSpecifier cannot be downcasted to NSRandomSpecifier")
        }
    }
}
impl INSObject for NSRandomSpecifier {}
impl PNSObject for NSRandomSpecifier {}
impl INSRandomSpecifier for NSRandomSpecifier {}
pub trait INSRandomSpecifier: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSRangeSpecifier(pub id);
impl std::ops::Deref for NSRangeSpecifier {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSRangeSpecifier {}
impl NSRangeSpecifier {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSRangeSpecifier").unwrap(), alloc) })
    }
}
impl INSScriptObjectSpecifier for NSRangeSpecifier {}
impl PNSCoding for NSRangeSpecifier {}
impl std::convert::TryFrom<NSScriptObjectSpecifier> for NSRangeSpecifier {
    type Error = &'static str;
    fn try_from(parent: NSScriptObjectSpecifier) -> Result<NSRangeSpecifier, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSRangeSpecifier").unwrap()) };
        if is_kind_of {
            Ok(NSRangeSpecifier(parent.0))
        } else {
            Err("This NSScriptObjectSpecifier cannot be downcasted to NSRangeSpecifier")
        }
    }
}
impl INSObject for NSRangeSpecifier {}
impl PNSObject for NSRangeSpecifier {}
impl INSRangeSpecifier for NSRangeSpecifier {}
pub trait INSRangeSpecifier: Sized + std::ops::Deref {
    unsafe fn initWithCoder_(&self, inCoder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : inCoder)
    }
    unsafe fn initWithContainerClassDescription_containerSpecifier_key_startSpecifier_endSpecifier_(
        &self,
        classDesc: NSScriptClassDescription,
        container: NSScriptObjectSpecifier,
        property: NSString,
        startSpec: NSScriptObjectSpecifier,
        endSpec: NSScriptObjectSpecifier,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContainerClassDescription : classDesc, containerSpecifier : container, key : property, startSpecifier : startSpec, endSpecifier : endSpec)
    }
    unsafe fn startSpecifier(&self) -> NSScriptObjectSpecifier
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startSpecifier)
    }
    unsafe fn setStartSpecifier_(&self, startSpecifier: NSScriptObjectSpecifier)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartSpecifier : startSpecifier)
    }
    unsafe fn endSpecifier(&self) -> NSScriptObjectSpecifier
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endSpecifier)
    }
    unsafe fn setEndSpecifier_(&self, endSpecifier: NSScriptObjectSpecifier)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndSpecifier : endSpecifier)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSRelativeSpecifier(pub id);
impl std::ops::Deref for NSRelativeSpecifier {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSRelativeSpecifier {}
impl NSRelativeSpecifier {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSRelativeSpecifier").unwrap(), alloc) })
    }
}
impl INSScriptObjectSpecifier for NSRelativeSpecifier {}
impl PNSCoding for NSRelativeSpecifier {}
impl std::convert::TryFrom<NSScriptObjectSpecifier> for NSRelativeSpecifier {
    type Error = &'static str;
    fn try_from(parent: NSScriptObjectSpecifier) -> Result<NSRelativeSpecifier, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSRelativeSpecifier").unwrap()) };
        if is_kind_of {
            Ok(NSRelativeSpecifier(parent.0))
        } else {
            Err("This NSScriptObjectSpecifier cannot be downcasted to NSRelativeSpecifier")
        }
    }
}
impl INSObject for NSRelativeSpecifier {}
impl PNSObject for NSRelativeSpecifier {}
impl INSRelativeSpecifier for NSRelativeSpecifier {}
pub trait INSRelativeSpecifier: Sized + std::ops::Deref {
    unsafe fn initWithCoder_(&self, inCoder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : inCoder)
    }
    unsafe fn initWithContainerClassDescription_containerSpecifier_key_relativePosition_baseSpecifier_(
        &self,
        classDesc: NSScriptClassDescription,
        container: NSScriptObjectSpecifier,
        property: NSString,
        relPos: NSRelativePosition,
        baseSpecifier: NSScriptObjectSpecifier,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContainerClassDescription : classDesc, containerSpecifier : container, key : property, relativePosition : relPos, baseSpecifier : baseSpecifier)
    }
    unsafe fn relativePosition(&self) -> NSRelativePosition
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, relativePosition)
    }
    unsafe fn setRelativePosition_(&self, relativePosition: NSRelativePosition)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setRelativePosition : relativePosition)
    }
    unsafe fn baseSpecifier(&self) -> NSScriptObjectSpecifier
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, baseSpecifier)
    }
    unsafe fn setBaseSpecifier_(&self, baseSpecifier: NSScriptObjectSpecifier)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setBaseSpecifier : baseSpecifier)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUniqueIDSpecifier(pub id);
impl std::ops::Deref for NSUniqueIDSpecifier {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUniqueIDSpecifier {}
impl NSUniqueIDSpecifier {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUniqueIDSpecifier").unwrap(), alloc) })
    }
}
impl INSScriptObjectSpecifier for NSUniqueIDSpecifier {}
impl PNSCoding for NSUniqueIDSpecifier {}
impl std::convert::TryFrom<NSScriptObjectSpecifier> for NSUniqueIDSpecifier {
    type Error = &'static str;
    fn try_from(parent: NSScriptObjectSpecifier) -> Result<NSUniqueIDSpecifier, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUniqueIDSpecifier").unwrap()) };
        if is_kind_of {
            Ok(NSUniqueIDSpecifier(parent.0))
        } else {
            Err("This NSScriptObjectSpecifier cannot be downcasted to NSUniqueIDSpecifier")
        }
    }
}
impl INSObject for NSUniqueIDSpecifier {}
impl PNSObject for NSUniqueIDSpecifier {}
impl INSUniqueIDSpecifier for NSUniqueIDSpecifier {}
pub trait INSUniqueIDSpecifier: Sized + std::ops::Deref {
    unsafe fn initWithCoder_(&self, inCoder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : inCoder)
    }
    unsafe fn initWithContainerClassDescription_containerSpecifier_key_uniqueID_(
        &self,
        classDesc: NSScriptClassDescription,
        container: NSScriptObjectSpecifier,
        property: NSString,
        uniqueID: id,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContainerClassDescription : classDesc, containerSpecifier : container, key : property, uniqueID : uniqueID)
    }
    unsafe fn uniqueID(&self) -> id
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, uniqueID)
    }
    unsafe fn setUniqueID_(&self, uniqueID: id)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUniqueID : uniqueID)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSWhoseSpecifier(pub id);
impl std::ops::Deref for NSWhoseSpecifier {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSWhoseSpecifier {}
impl NSWhoseSpecifier {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSWhoseSpecifier").unwrap(), alloc) })
    }
}
impl INSScriptObjectSpecifier for NSWhoseSpecifier {}
impl PNSCoding for NSWhoseSpecifier {}
impl std::convert::TryFrom<NSScriptObjectSpecifier> for NSWhoseSpecifier {
    type Error = &'static str;
    fn try_from(parent: NSScriptObjectSpecifier) -> Result<NSWhoseSpecifier, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSWhoseSpecifier").unwrap()) };
        if is_kind_of {
            Ok(NSWhoseSpecifier(parent.0))
        } else {
            Err("This NSScriptObjectSpecifier cannot be downcasted to NSWhoseSpecifier")
        }
    }
}
impl INSObject for NSWhoseSpecifier {}
impl PNSObject for NSWhoseSpecifier {}
impl INSWhoseSpecifier for NSWhoseSpecifier {}
pub trait INSWhoseSpecifier: Sized + std::ops::Deref {
    unsafe fn initWithCoder_(&self, inCoder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : inCoder)
    }
    unsafe fn initWithContainerClassDescription_containerSpecifier_key_test_(
        &self,
        classDesc: NSScriptClassDescription,
        container: NSScriptObjectSpecifier,
        property: NSString,
        test: NSScriptWhoseTest,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithContainerClassDescription : classDesc, containerSpecifier : container, key : property, test : test)
    }
    unsafe fn test(&self) -> NSScriptWhoseTest
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, test)
    }
    unsafe fn setTest_(&self, test: NSScriptWhoseTest)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setTest : test)
    }
    unsafe fn startSubelementIdentifier(&self) -> NSWhoseSubelementIdentifier
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startSubelementIdentifier)
    }
    unsafe fn setStartSubelementIdentifier_(
        &self,
        startSubelementIdentifier: NSWhoseSubelementIdentifier,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartSubelementIdentifier : startSubelementIdentifier)
    }
    unsafe fn startSubelementIndex(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, startSubelementIndex)
    }
    unsafe fn setStartSubelementIndex_(&self, startSubelementIndex: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStartSubelementIndex : startSubelementIndex)
    }
    unsafe fn endSubelementIdentifier(&self) -> NSWhoseSubelementIdentifier
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endSubelementIdentifier)
    }
    unsafe fn setEndSubelementIdentifier_(
        &self,
        endSubelementIdentifier: NSWhoseSubelementIdentifier,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndSubelementIdentifier : endSubelementIdentifier)
    }
    unsafe fn endSubelementIndex(&self) -> NSInteger
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, endSubelementIndex)
    }
    unsafe fn setEndSubelementIndex_(&self, endSubelementIndex: NSInteger)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setEndSubelementIndex : endSubelementIndex)
    }
}
pub type NSSaveOptions = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSCloneCommand(pub id);
impl std::ops::Deref for NSCloneCommand {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSCloneCommand {}
impl NSCloneCommand {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSCloneCommand").unwrap(), alloc) })
    }
}
impl INSScriptCommand for NSCloneCommand {}
impl PNSCoding for NSCloneCommand {}
impl From<NSCloneCommand> for NSScriptCommand {
    fn from(child: NSCloneCommand) -> NSScriptCommand {
        NSScriptCommand(child.0)
    }
}
impl std::convert::TryFrom<NSScriptCommand> for NSCloneCommand {
    type Error = &'static str;
    fn try_from(parent: NSScriptCommand) -> Result<NSCloneCommand, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSCloneCommand").unwrap()) };
        if is_kind_of {
            Ok(NSCloneCommand(parent.0))
        } else {
            Err("This NSScriptCommand cannot be downcasted to NSCloneCommand")
        }
    }
}
impl INSObject for NSCloneCommand {}
impl PNSObject for NSCloneCommand {}
impl INSCloneCommand for NSCloneCommand {}
pub trait INSCloneCommand: Sized + std::ops::Deref {
    unsafe fn setReceiversSpecifier_(&self, receiversRef: NSScriptObjectSpecifier)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReceiversSpecifier : receiversRef)
    }
    unsafe fn keySpecifier(&self) -> NSScriptObjectSpecifier
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, keySpecifier)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSCloseCommand(pub id);
impl std::ops::Deref for NSCloseCommand {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSCloseCommand {}
impl NSCloseCommand {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSCloseCommand").unwrap(), alloc) })
    }
}
impl INSScriptCommand for NSCloseCommand {}
impl PNSCoding for NSCloseCommand {}
impl std::convert::TryFrom<NSScriptCommand> for NSCloseCommand {
    type Error = &'static str;
    fn try_from(parent: NSScriptCommand) -> Result<NSCloseCommand, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSCloseCommand").unwrap()) };
        if is_kind_of {
            Ok(NSCloseCommand(parent.0))
        } else {
            Err("This NSScriptCommand cannot be downcasted to NSCloseCommand")
        }
    }
}
impl INSObject for NSCloseCommand {}
impl PNSObject for NSCloseCommand {}
impl INSCloseCommand for NSCloseCommand {}
pub trait INSCloseCommand: Sized + std::ops::Deref {
    unsafe fn saveOptions(&self) -> NSSaveOptions
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, saveOptions)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSCountCommand(pub id);
impl std::ops::Deref for NSCountCommand {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSCountCommand {}
impl NSCountCommand {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSCountCommand").unwrap(), alloc) })
    }
}
impl INSScriptCommand for NSCountCommand {}
impl PNSCoding for NSCountCommand {}
impl std::convert::TryFrom<NSScriptCommand> for NSCountCommand {
    type Error = &'static str;
    fn try_from(parent: NSScriptCommand) -> Result<NSCountCommand, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSCountCommand").unwrap()) };
        if is_kind_of {
            Ok(NSCountCommand(parent.0))
        } else {
            Err("This NSScriptCommand cannot be downcasted to NSCountCommand")
        }
    }
}
impl INSObject for NSCountCommand {}
impl PNSObject for NSCountCommand {}
impl INSCountCommand for NSCountCommand {}
pub trait INSCountCommand: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSCreateCommand(pub id);
impl std::ops::Deref for NSCreateCommand {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSCreateCommand {}
impl NSCreateCommand {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSCreateCommand").unwrap(), alloc) })
    }
}
impl INSScriptCommand for NSCreateCommand {}
impl PNSCoding for NSCreateCommand {}
impl std::convert::TryFrom<NSScriptCommand> for NSCreateCommand {
    type Error = &'static str;
    fn try_from(parent: NSScriptCommand) -> Result<NSCreateCommand, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSCreateCommand").unwrap()) };
        if is_kind_of {
            Ok(NSCreateCommand(parent.0))
        } else {
            Err("This NSScriptCommand cannot be downcasted to NSCreateCommand")
        }
    }
}
impl INSObject for NSCreateCommand {}
impl PNSObject for NSCreateCommand {}
impl INSCreateCommand for NSCreateCommand {}
pub trait INSCreateCommand: Sized + std::ops::Deref {
    unsafe fn createClassDescription(&self) -> NSScriptClassDescription
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, createClassDescription)
    }
    unsafe fn resolvedKeyDictionary(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, resolvedKeyDictionary)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSDeleteCommand(pub id);
impl std::ops::Deref for NSDeleteCommand {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSDeleteCommand {}
impl NSDeleteCommand {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSDeleteCommand").unwrap(), alloc) })
    }
}
impl INSScriptCommand for NSDeleteCommand {}
impl PNSCoding for NSDeleteCommand {}
impl std::convert::TryFrom<NSScriptCommand> for NSDeleteCommand {
    type Error = &'static str;
    fn try_from(parent: NSScriptCommand) -> Result<NSDeleteCommand, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSDeleteCommand").unwrap()) };
        if is_kind_of {
            Ok(NSDeleteCommand(parent.0))
        } else {
            Err("This NSScriptCommand cannot be downcasted to NSDeleteCommand")
        }
    }
}
impl INSObject for NSDeleteCommand {}
impl PNSObject for NSDeleteCommand {}
impl INSDeleteCommand for NSDeleteCommand {}
pub trait INSDeleteCommand: Sized + std::ops::Deref {
    unsafe fn setReceiversSpecifier_(&self, receiversRef: NSScriptObjectSpecifier)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReceiversSpecifier : receiversRef)
    }
    unsafe fn keySpecifier(&self) -> NSScriptObjectSpecifier
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, keySpecifier)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSExistsCommand(pub id);
impl std::ops::Deref for NSExistsCommand {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSExistsCommand {}
impl NSExistsCommand {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSExistsCommand").unwrap(), alloc) })
    }
}
impl INSScriptCommand for NSExistsCommand {}
impl PNSCoding for NSExistsCommand {}
impl std::convert::TryFrom<NSScriptCommand> for NSExistsCommand {
    type Error = &'static str;
    fn try_from(parent: NSScriptCommand) -> Result<NSExistsCommand, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSExistsCommand").unwrap()) };
        if is_kind_of {
            Ok(NSExistsCommand(parent.0))
        } else {
            Err("This NSScriptCommand cannot be downcasted to NSExistsCommand")
        }
    }
}
impl INSObject for NSExistsCommand {}
impl PNSObject for NSExistsCommand {}
impl INSExistsCommand for NSExistsCommand {}
pub trait INSExistsCommand: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSGetCommand(pub id);
impl std::ops::Deref for NSGetCommand {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSGetCommand {}
impl NSGetCommand {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSGetCommand").unwrap(), alloc) })
    }
}
impl INSScriptCommand for NSGetCommand {}
impl PNSCoding for NSGetCommand {}
impl std::convert::TryFrom<NSScriptCommand> for NSGetCommand {
    type Error = &'static str;
    fn try_from(parent: NSScriptCommand) -> Result<NSGetCommand, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSGetCommand").unwrap()) };
        if is_kind_of {
            Ok(NSGetCommand(parent.0))
        } else {
            Err("This NSScriptCommand cannot be downcasted to NSGetCommand")
        }
    }
}
impl INSObject for NSGetCommand {}
impl PNSObject for NSGetCommand {}
impl INSGetCommand for NSGetCommand {}
pub trait INSGetCommand: Sized + std::ops::Deref {}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSMoveCommand(pub id);
impl std::ops::Deref for NSMoveCommand {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSMoveCommand {}
impl NSMoveCommand {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSMoveCommand").unwrap(), alloc) })
    }
}
impl INSScriptCommand for NSMoveCommand {}
impl PNSCoding for NSMoveCommand {}
impl std::convert::TryFrom<NSScriptCommand> for NSMoveCommand {
    type Error = &'static str;
    fn try_from(parent: NSScriptCommand) -> Result<NSMoveCommand, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSMoveCommand").unwrap()) };
        if is_kind_of {
            Ok(NSMoveCommand(parent.0))
        } else {
            Err("This NSScriptCommand cannot be downcasted to NSMoveCommand")
        }
    }
}
impl INSObject for NSMoveCommand {}
impl PNSObject for NSMoveCommand {}
impl INSMoveCommand for NSMoveCommand {}
pub trait INSMoveCommand: Sized + std::ops::Deref {
    unsafe fn setReceiversSpecifier_(&self, receiversRef: NSScriptObjectSpecifier)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReceiversSpecifier : receiversRef)
    }
    unsafe fn keySpecifier(&self) -> NSScriptObjectSpecifier
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, keySpecifier)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSQuitCommand(pub id);
impl std::ops::Deref for NSQuitCommand {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSQuitCommand {}
impl NSQuitCommand {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSQuitCommand").unwrap(), alloc) })
    }
}
impl INSScriptCommand for NSQuitCommand {}
impl PNSCoding for NSQuitCommand {}
impl std::convert::TryFrom<NSScriptCommand> for NSQuitCommand {
    type Error = &'static str;
    fn try_from(parent: NSScriptCommand) -> Result<NSQuitCommand, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSQuitCommand").unwrap()) };
        if is_kind_of {
            Ok(NSQuitCommand(parent.0))
        } else {
            Err("This NSScriptCommand cannot be downcasted to NSQuitCommand")
        }
    }
}
impl INSObject for NSQuitCommand {}
impl PNSObject for NSQuitCommand {}
impl INSQuitCommand for NSQuitCommand {}
pub trait INSQuitCommand: Sized + std::ops::Deref {
    unsafe fn saveOptions(&self) -> NSSaveOptions
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, saveOptions)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSSetCommand(pub id);
impl std::ops::Deref for NSSetCommand {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSSetCommand {}
impl NSSetCommand {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSSetCommand").unwrap(), alloc) })
    }
}
impl INSScriptCommand for NSSetCommand {}
impl PNSCoding for NSSetCommand {}
impl std::convert::TryFrom<NSScriptCommand> for NSSetCommand {
    type Error = &'static str;
    fn try_from(parent: NSScriptCommand) -> Result<NSSetCommand, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSSetCommand").unwrap()) };
        if is_kind_of {
            Ok(NSSetCommand(parent.0))
        } else {
            Err("This NSScriptCommand cannot be downcasted to NSSetCommand")
        }
    }
}
impl INSObject for NSSetCommand {}
impl PNSObject for NSSetCommand {}
impl INSSetCommand for NSSetCommand {}
pub trait INSSetCommand: Sized + std::ops::Deref {
    unsafe fn setReceiversSpecifier_(&self, receiversRef: NSScriptObjectSpecifier)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setReceiversSpecifier : receiversRef)
    }
    unsafe fn keySpecifier(&self) -> NSScriptObjectSpecifier
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, keySpecifier)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSScriptSuiteRegistry(pub id);
impl std::ops::Deref for NSScriptSuiteRegistry {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSScriptSuiteRegistry {}
impl NSScriptSuiteRegistry {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSScriptSuiteRegistry").unwrap(), alloc) })
    }
}
impl INSObject for NSScriptSuiteRegistry {}
impl PNSObject for NSScriptSuiteRegistry {}
impl std::convert::TryFrom<NSObject> for NSScriptSuiteRegistry {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSScriptSuiteRegistry, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSScriptSuiteRegistry").unwrap()) };
        if is_kind_of {
            Ok(NSScriptSuiteRegistry(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSScriptSuiteRegistry")
        }
    }
}
impl INSScriptSuiteRegistry for NSScriptSuiteRegistry {}
pub trait INSScriptSuiteRegistry: Sized + std::ops::Deref {
    unsafe fn loadSuitesFromBundle_(&self, bundle: NSBundle)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, loadSuitesFromBundle : bundle)
    }
    unsafe fn loadSuiteWithDictionary_fromBundle_(
        &self,
        suiteDeclaration: NSDictionary,
        bundle: NSBundle,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, loadSuiteWithDictionary : suiteDeclaration, fromBundle : bundle)
    }
    unsafe fn registerClassDescription_(&self, classDescription: NSScriptClassDescription)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, registerClassDescription : classDescription)
    }
    unsafe fn registerCommandDescription_(&self, commandDescription: NSScriptCommandDescription)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, registerCommandDescription : commandDescription)
    }
    unsafe fn appleEventCodeForSuite_(&self, suiteName: NSString) -> FourCharCode
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, appleEventCodeForSuite : suiteName)
    }
    unsafe fn bundleForSuite_(&self, suiteName: NSString) -> NSBundle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, bundleForSuite : suiteName)
    }
    unsafe fn classDescriptionsInSuite_(&self, suiteName: NSString) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, classDescriptionsInSuite : suiteName)
    }
    unsafe fn commandDescriptionsInSuite_(&self, suiteName: NSString) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, commandDescriptionsInSuite : suiteName)
    }
    unsafe fn suiteForAppleEventCode_(&self, appleEventCode: FourCharCode) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, suiteForAppleEventCode : appleEventCode)
    }
    unsafe fn classDescriptionWithAppleEventCode_(
        &self,
        appleEventCode: FourCharCode,
    ) -> NSScriptClassDescription
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, classDescriptionWithAppleEventCode : appleEventCode)
    }
    unsafe fn commandDescriptionWithAppleEventClass_andAppleEventCode_(
        &self,
        appleEventClassCode: FourCharCode,
        appleEventIDCode: FourCharCode,
    ) -> NSScriptCommandDescription
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, commandDescriptionWithAppleEventClass : appleEventClassCode, andAppleEventCode : appleEventIDCode)
    }
    unsafe fn aeteResource_(&self, languageName: NSString) -> NSData
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, aeteResource : languageName)
    }
    unsafe fn suiteNames(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, suiteNames)
    }
    unsafe fn sharedScriptSuiteRegistry() -> NSScriptSuiteRegistry
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSScriptSuiteRegistry").unwrap(), sharedScriptSuiteRegistry)
    }
    unsafe fn setSharedScriptSuiteRegistry_(registry: NSScriptSuiteRegistry)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSScriptSuiteRegistry").unwrap(), setSharedScriptSuiteRegistry : registry)
    }
}
pub type NSTestComparisonOperation = NSUInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSScriptWhoseTest(pub id);
impl std::ops::Deref for NSScriptWhoseTest {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSScriptWhoseTest {}
impl NSScriptWhoseTest {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSScriptWhoseTest").unwrap(), alloc) })
    }
}
impl PNSCoding for NSScriptWhoseTest {}
impl INSObject for NSScriptWhoseTest {}
impl PNSObject for NSScriptWhoseTest {}
impl std::convert::TryFrom<NSObject> for NSScriptWhoseTest {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSScriptWhoseTest, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSScriptWhoseTest").unwrap()) };
        if is_kind_of {
            Ok(NSScriptWhoseTest(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSScriptWhoseTest")
        }
    }
}
impl INSScriptWhoseTest for NSScriptWhoseTest {}
pub trait INSScriptWhoseTest: Sized + std::ops::Deref {
    unsafe fn isTrue(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isTrue)
    }
    unsafe fn init(&self) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, init)
    }
    unsafe fn initWithCoder_(&self, inCoder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : inCoder)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSLogicalTest(pub id);
impl std::ops::Deref for NSLogicalTest {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSLogicalTest {}
impl NSLogicalTest {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSLogicalTest").unwrap(), alloc) })
    }
}
impl INSScriptWhoseTest for NSLogicalTest {}
impl PNSCoding for NSLogicalTest {}
impl From<NSLogicalTest> for NSScriptWhoseTest {
    fn from(child: NSLogicalTest) -> NSScriptWhoseTest {
        NSScriptWhoseTest(child.0)
    }
}
impl std::convert::TryFrom<NSScriptWhoseTest> for NSLogicalTest {
    type Error = &'static str;
    fn try_from(parent: NSScriptWhoseTest) -> Result<NSLogicalTest, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSLogicalTest").unwrap()) };
        if is_kind_of {
            Ok(NSLogicalTest(parent.0))
        } else {
            Err("This NSScriptWhoseTest cannot be downcasted to NSLogicalTest")
        }
    }
}
impl INSObject for NSLogicalTest {}
impl PNSObject for NSLogicalTest {}
impl INSLogicalTest for NSLogicalTest {}
pub trait INSLogicalTest: Sized + std::ops::Deref {
    unsafe fn initAndTestWithTests_(&self, subTests: NSArray) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initAndTestWithTests : subTests)
    }
    unsafe fn initOrTestWithTests_(&self, subTests: NSArray) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initOrTestWithTests : subTests)
    }
    unsafe fn initNotTestWithTest_(&self, subTest: NSScriptWhoseTest) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initNotTestWithTest : subTest)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSSpecifierTest(pub id);
impl std::ops::Deref for NSSpecifierTest {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSSpecifierTest {}
impl NSSpecifierTest {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSSpecifierTest").unwrap(), alloc) })
    }
}
impl INSScriptWhoseTest for NSSpecifierTest {}
impl PNSCoding for NSSpecifierTest {}
impl std::convert::TryFrom<NSScriptWhoseTest> for NSSpecifierTest {
    type Error = &'static str;
    fn try_from(parent: NSScriptWhoseTest) -> Result<NSSpecifierTest, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSSpecifierTest").unwrap()) };
        if is_kind_of {
            Ok(NSSpecifierTest(parent.0))
        } else {
            Err("This NSScriptWhoseTest cannot be downcasted to NSSpecifierTest")
        }
    }
}
impl INSObject for NSSpecifierTest {}
impl PNSObject for NSSpecifierTest {}
impl INSSpecifierTest for NSSpecifierTest {}
pub trait INSSpecifierTest: 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 initWithCoder_(&self, inCoder: NSCoder) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithCoder : inCoder)
    }
    unsafe fn initWithObjectSpecifier_comparisonOperator_testObject_(
        &self,
        obj1: NSScriptObjectSpecifier,
        compOp: NSTestComparisonOperation,
        obj2: id,
    ) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithObjectSpecifier : obj1, comparisonOperator : compOp, testObject : obj2)
    }
}
pub trait NSObject_NSComparisonMethods: Sized + std::ops::Deref {
    unsafe fn isEqualTo_(&self, object: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isEqualTo : object)
    }
    unsafe fn isLessThanOrEqualTo_(&self, object: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isLessThanOrEqualTo : object)
    }
    unsafe fn isLessThan_(&self, object: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isLessThan : object)
    }
    unsafe fn isGreaterThanOrEqualTo_(&self, object: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isGreaterThanOrEqualTo : object)
    }
    unsafe fn isGreaterThan_(&self, object: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isGreaterThan : object)
    }
    unsafe fn isNotEqualTo_(&self, object: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isNotEqualTo : object)
    }
    unsafe fn doesContain_(&self, object: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, doesContain : object)
    }
    unsafe fn isLike_(&self, object: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isLike : object)
    }
    unsafe fn isCaseInsensitiveLike_(&self, object: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isCaseInsensitiveLike : object)
    }
}
pub trait NSObject_NSScriptingComparisonMethods: Sized + std::ops::Deref {
    unsafe fn scriptingIsEqualTo_(&self, object: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scriptingIsEqualTo : object)
    }
    unsafe fn scriptingIsLessThanOrEqualTo_(&self, object: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scriptingIsLessThanOrEqualTo : object)
    }
    unsafe fn scriptingIsLessThan_(&self, object: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scriptingIsLessThan : object)
    }
    unsafe fn scriptingIsGreaterThanOrEqualTo_(&self, object: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scriptingIsGreaterThanOrEqualTo : object)
    }
    unsafe fn scriptingIsGreaterThan_(&self, object: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scriptingIsGreaterThan : object)
    }
    unsafe fn scriptingBeginsWith_(&self, object: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scriptingBeginsWith : object)
    }
    unsafe fn scriptingEndsWith_(&self, object: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scriptingEndsWith : object)
    }
    unsafe fn scriptingContains_(&self, object: id) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scriptingContains : object)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSSpellServer(pub id);
impl std::ops::Deref for NSSpellServer {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSSpellServer {}
impl NSSpellServer {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSSpellServer").unwrap(), alloc) })
    }
}
impl INSObject for NSSpellServer {}
impl PNSObject for NSSpellServer {}
impl std::convert::TryFrom<NSObject> for NSSpellServer {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSSpellServer, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSSpellServer").unwrap()) };
        if is_kind_of {
            Ok(NSSpellServer(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSSpellServer")
        }
    }
}
impl INSSpellServer for NSSpellServer {}
pub trait INSSpellServer: Sized + std::ops::Deref {
    unsafe fn registerLanguage_byVendor_(&self, language: NSString, vendor: NSString) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, registerLanguage : language, byVendor : vendor)
    }
    unsafe fn isWordInUserDictionaries_caseSensitive_(&self, word: NSString, flag: BOOL) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, isWordInUserDictionaries : word, caseSensitive : flag)
    }
    unsafe fn run(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, run)
    }
    unsafe fn delegate(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delegate)
    }
    unsafe fn setDelegate_(&self, delegate: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelegate : delegate)
    }
}
pub trait PNSSpellServerDelegate: Sized + std::ops::Deref {
    unsafe fn spellServer_findMisspelledWordInString_language_wordCount_countOnly_(
        &self,
        sender: NSSpellServer,
        stringToCheck: NSString,
        language: NSString,
        wordCount: *mut NSInteger,
        countOnly: BOOL,
    ) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, spellServer : sender, findMisspelledWordInString : stringToCheck, language : language, wordCount : wordCount, countOnly : countOnly)
    }
    unsafe fn spellServer_suggestGuessesForWord_inLanguage_(
        &self,
        sender: NSSpellServer,
        word: NSString,
        language: NSString,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, spellServer : sender, suggestGuessesForWord : word, inLanguage : language)
    }
    unsafe fn spellServer_didLearnWord_inLanguage_(
        &self,
        sender: NSSpellServer,
        word: NSString,
        language: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, spellServer : sender, didLearnWord : word, inLanguage : language)
    }
    unsafe fn spellServer_didForgetWord_inLanguage_(
        &self,
        sender: NSSpellServer,
        word: NSString,
        language: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, spellServer : sender, didForgetWord : word, inLanguage : language)
    }
    unsafe fn spellServer_suggestCompletionsForPartialWordRange_inString_language_(
        &self,
        sender: NSSpellServer,
        range: NSRange,
        string: NSString,
        language: NSString,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, spellServer : sender, suggestCompletionsForPartialWordRange : range, inString : string, language : language)
    }
    unsafe fn spellServer_checkGrammarInString_language_details_(
        &self,
        sender: NSSpellServer,
        stringToCheck: NSString,
        language: NSString,
        details: *mut NSArray,
    ) -> NSRange
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, spellServer : sender, checkGrammarInString : stringToCheck, language : language, details : details)
    }
    unsafe fn spellServer_checkString_offset_types_options_orthography_wordCount_(
        &self,
        sender: NSSpellServer,
        stringToCheck: NSString,
        offset: NSUInteger,
        checkingTypes: NSTextCheckingTypes,
        options: NSDictionary,
        orthography: NSOrthography,
        wordCount: *mut NSInteger,
    ) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, spellServer : sender, checkString : stringToCheck, offset : offset, types : checkingTypes, options : options, orthography : orthography, wordCount : wordCount)
    }
    unsafe fn spellServer_recordResponse_toCorrection_forWord_language_(
        &self,
        sender: NSSpellServer,
        response: NSUInteger,
        correction: NSString,
        word: NSString,
        language: NSString,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, spellServer : sender, recordResponse : response, toCorrection : correction, forWord : word, language : language)
    }
}
pub type NSUserNotificationActivationType = NSInteger;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUserNotification(pub id);
impl std::ops::Deref for NSUserNotification {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUserNotification {}
impl NSUserNotification {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUserNotification").unwrap(), alloc) })
    }
}
impl PNSCopying for NSUserNotification {}
impl INSObject for NSUserNotification {}
impl PNSObject for NSUserNotification {}
impl std::convert::TryFrom<NSObject> for NSUserNotification {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSUserNotification, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUserNotification").unwrap()) };
        if is_kind_of {
            Ok(NSUserNotification(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSUserNotification")
        }
    }
}
impl INSUserNotification for NSUserNotification {}
pub trait INSUserNotification: 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 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 informativeText(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, informativeText)
    }
    unsafe fn setInformativeText_(&self, informativeText: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setInformativeText : informativeText)
    }
    unsafe fn actionButtonTitle(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, actionButtonTitle)
    }
    unsafe fn setActionButtonTitle_(&self, actionButtonTitle: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setActionButtonTitle : actionButtonTitle)
    }
    unsafe fn userInfo(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, userInfo)
    }
    unsafe fn setUserInfo_(&self, userInfo: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setUserInfo : userInfo)
    }
    unsafe fn deliveryDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deliveryDate)
    }
    unsafe fn setDeliveryDate_(&self, deliveryDate: NSDate)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDeliveryDate : deliveryDate)
    }
    unsafe fn deliveryTimeZone(&self) -> NSTimeZone
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deliveryTimeZone)
    }
    unsafe fn setDeliveryTimeZone_(&self, deliveryTimeZone: NSTimeZone)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDeliveryTimeZone : deliveryTimeZone)
    }
    unsafe fn deliveryRepeatInterval(&self) -> NSDateComponents
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deliveryRepeatInterval)
    }
    unsafe fn setDeliveryRepeatInterval_(&self, deliveryRepeatInterval: NSDateComponents)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDeliveryRepeatInterval : deliveryRepeatInterval)
    }
    unsafe fn actualDeliveryDate(&self) -> NSDate
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, actualDeliveryDate)
    }
    unsafe fn isPresented(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isPresented)
    }
    unsafe fn isRemote(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, isRemote)
    }
    unsafe fn soundName(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, soundName)
    }
    unsafe fn setSoundName_(&self, soundName: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setSoundName : soundName)
    }
    unsafe fn hasActionButton(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hasActionButton)
    }
    unsafe fn setHasActionButton_(&self, hasActionButton: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHasActionButton : hasActionButton)
    }
    unsafe fn activationType(&self) -> NSUserNotificationActivationType
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, activationType)
    }
    unsafe fn otherButtonTitle(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, otherButtonTitle)
    }
    unsafe fn setOtherButtonTitle_(&self, otherButtonTitle: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setOtherButtonTitle : otherButtonTitle)
    }
    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 contentImage(&self) -> NSImage
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, contentImage)
    }
    unsafe fn setContentImage_(&self, contentImage: NSImage)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setContentImage : contentImage)
    }
    unsafe fn hasReplyButton(&self) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, hasReplyButton)
    }
    unsafe fn setHasReplyButton_(&self, hasReplyButton: BOOL)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setHasReplyButton : hasReplyButton)
    }
    unsafe fn responsePlaceholder(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, responsePlaceholder)
    }
    unsafe fn setResponsePlaceholder_(&self, responsePlaceholder: NSString)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setResponsePlaceholder : responsePlaceholder)
    }
    unsafe fn response(&self) -> NSAttributedString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, response)
    }
    unsafe fn additionalActions(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, additionalActions)
    }
    unsafe fn setAdditionalActions_(&self, additionalActions: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setAdditionalActions : additionalActions)
    }
    unsafe fn additionalActivationAction(&self) -> NSUserNotificationAction
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, additionalActivationAction)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUserNotificationAction(pub id);
impl std::ops::Deref for NSUserNotificationAction {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUserNotificationAction {}
impl NSUserNotificationAction {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUserNotificationAction").unwrap(), alloc) })
    }
}
impl PNSCopying for NSUserNotificationAction {}
impl INSObject for NSUserNotificationAction {}
impl PNSObject for NSUserNotificationAction {}
impl std::convert::TryFrom<NSObject> for NSUserNotificationAction {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSUserNotificationAction, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUserNotificationAction").unwrap()) };
        if is_kind_of {
            Ok(NSUserNotificationAction(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSUserNotificationAction")
        }
    }
}
impl INSUserNotificationAction for NSUserNotificationAction {}
pub trait INSUserNotificationAction: 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 title(&self) -> NSString
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, title)
    }
    unsafe fn actionWithIdentifier_title_(identifier: NSString, title: NSString) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUserNotificationAction").unwrap(), actionWithIdentifier : identifier, title : title)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUserNotificationCenter(pub id);
impl std::ops::Deref for NSUserNotificationCenter {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUserNotificationCenter {}
impl NSUserNotificationCenter {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUserNotificationCenter").unwrap(), alloc) })
    }
}
impl INSObject for NSUserNotificationCenter {}
impl PNSObject for NSUserNotificationCenter {}
impl std::convert::TryFrom<NSObject> for NSUserNotificationCenter {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSUserNotificationCenter, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUserNotificationCenter").unwrap()) };
        if is_kind_of {
            Ok(NSUserNotificationCenter(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSUserNotificationCenter")
        }
    }
}
impl INSUserNotificationCenter for NSUserNotificationCenter {}
pub trait INSUserNotificationCenter: Sized + std::ops::Deref {
    unsafe fn scheduleNotification_(&self, notification: NSUserNotification)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, scheduleNotification : notification)
    }
    unsafe fn removeScheduledNotification_(&self, notification: NSUserNotification)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeScheduledNotification : notification)
    }
    unsafe fn deliverNotification_(&self, notification: NSUserNotification)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, deliverNotification : notification)
    }
    unsafe fn removeDeliveredNotification_(&self, notification: NSUserNotification)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, removeDeliveredNotification : notification)
    }
    unsafe fn removeAllDeliveredNotifications(&self)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, removeAllDeliveredNotifications)
    }
    unsafe fn delegate(&self) -> *mut u64
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, delegate)
    }
    unsafe fn setDelegate_(&self, delegate: *mut u64)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setDelegate : delegate)
    }
    unsafe fn scheduledNotifications(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, scheduledNotifications)
    }
    unsafe fn setScheduledNotifications_(&self, scheduledNotifications: NSArray)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setScheduledNotifications : scheduledNotifications)
    }
    unsafe fn deliveredNotifications(&self) -> NSArray
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, deliveredNotifications)
    }
    unsafe fn defaultUserNotificationCenter() -> NSUserNotificationCenter
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSUserNotificationCenter").unwrap(), defaultUserNotificationCenter)
    }
}
pub trait PNSUserNotificationCenterDelegate: Sized + std::ops::Deref {
    unsafe fn userNotificationCenter_didDeliverNotification_(
        &self,
        center: NSUserNotificationCenter,
        notification: NSUserNotification,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, userNotificationCenter : center, didDeliverNotification : notification)
    }
    unsafe fn userNotificationCenter_didActivateNotification_(
        &self,
        center: NSUserNotificationCenter,
        notification: NSUserNotification,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, userNotificationCenter : center, didActivateNotification : notification)
    }
    unsafe fn userNotificationCenter_shouldPresentNotification_(
        &self,
        center: NSUserNotificationCenter,
        notification: NSUserNotification,
    ) -> BOOL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, userNotificationCenter : center, shouldPresentNotification : notification)
    }
}
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUserScriptTask(pub id);
impl std::ops::Deref for NSUserScriptTask {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUserScriptTask {}
impl NSUserScriptTask {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUserScriptTask").unwrap(), alloc) })
    }
}
impl INSObject for NSUserScriptTask {}
impl PNSObject for NSUserScriptTask {}
impl std::convert::TryFrom<NSObject> for NSUserScriptTask {
    type Error = &'static str;
    fn try_from(parent: NSObject) -> Result<NSUserScriptTask, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUserScriptTask").unwrap()) };
        if is_kind_of {
            Ok(NSUserScriptTask(parent.0))
        } else {
            Err("This NSObject cannot be downcasted to NSUserScriptTask")
        }
    }
}
impl INSUserScriptTask for NSUserScriptTask {}
pub trait INSUserScriptTask: Sized + std::ops::Deref {
    unsafe fn initWithURL_error_(&self, url: NSURL, error: *mut NSError) -> instancetype
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, initWithURL : url, error : error)
    }
    unsafe fn executeWithCompletionHandler_(&self, handler: NSUserScriptTaskCompletionHandler)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, executeWithCompletionHandler : handler)
    }
    unsafe fn scriptURL(&self) -> NSURL
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, scriptURL)
    }
}
pub type NSUserScriptTaskCompletionHandler = *mut ::std::os::raw::c_void;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUserUnixTask(pub id);
impl std::ops::Deref for NSUserUnixTask {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUserUnixTask {}
impl NSUserUnixTask {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUserUnixTask").unwrap(), alloc) })
    }
}
impl INSUserScriptTask for NSUserUnixTask {}
impl From<NSUserUnixTask> for NSUserScriptTask {
    fn from(child: NSUserUnixTask) -> NSUserScriptTask {
        NSUserScriptTask(child.0)
    }
}
impl std::convert::TryFrom<NSUserScriptTask> for NSUserUnixTask {
    type Error = &'static str;
    fn try_from(parent: NSUserScriptTask) -> Result<NSUserUnixTask, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUserUnixTask").unwrap()) };
        if is_kind_of {
            Ok(NSUserUnixTask(parent.0))
        } else {
            Err("This NSUserScriptTask cannot be downcasted to NSUserUnixTask")
        }
    }
}
impl INSObject for NSUserUnixTask {}
impl PNSObject for NSUserUnixTask {}
impl INSUserUnixTask for NSUserUnixTask {}
pub trait INSUserUnixTask: Sized + std::ops::Deref {
    unsafe fn executeWithArguments_completionHandler_(
        &self,
        arguments: NSArray,
        handler: NSUserUnixTaskCompletionHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, executeWithArguments : arguments, completionHandler : handler)
    }
    unsafe fn standardInput(&self) -> NSFileHandle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, standardInput)
    }
    unsafe fn setStandardInput_(&self, standardInput: NSFileHandle)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStandardInput : standardInput)
    }
    unsafe fn standardOutput(&self) -> NSFileHandle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, standardOutput)
    }
    unsafe fn setStandardOutput_(&self, standardOutput: NSFileHandle)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStandardOutput : standardOutput)
    }
    unsafe fn standardError(&self) -> NSFileHandle
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, standardError)
    }
    unsafe fn setStandardError_(&self, standardError: NSFileHandle)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setStandardError : standardError)
    }
}
pub type NSUserUnixTaskCompletionHandler = *mut ::std::os::raw::c_void;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUserAppleScriptTask(pub id);
impl std::ops::Deref for NSUserAppleScriptTask {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUserAppleScriptTask {}
impl NSUserAppleScriptTask {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUserAppleScriptTask").unwrap(), alloc) })
    }
}
impl INSUserScriptTask for NSUserAppleScriptTask {}
impl std::convert::TryFrom<NSUserScriptTask> for NSUserAppleScriptTask {
    type Error = &'static str;
    fn try_from(parent: NSUserScriptTask) -> Result<NSUserAppleScriptTask, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUserAppleScriptTask").unwrap()) };
        if is_kind_of {
            Ok(NSUserAppleScriptTask(parent.0))
        } else {
            Err("This NSUserScriptTask cannot be downcasted to NSUserAppleScriptTask")
        }
    }
}
impl INSObject for NSUserAppleScriptTask {}
impl PNSObject for NSUserAppleScriptTask {}
impl INSUserAppleScriptTask for NSUserAppleScriptTask {}
pub trait INSUserAppleScriptTask: Sized + std::ops::Deref {
    unsafe fn executeWithAppleEvent_completionHandler_(
        &self,
        event: NSAppleEventDescriptor,
        handler: NSUserAppleScriptTaskCompletionHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, executeWithAppleEvent : event, completionHandler : handler)
    }
}
pub type NSUserAppleScriptTaskCompletionHandler = *mut ::std::os::raw::c_void;
#[repr(transparent)]
#[derive(Debug, Copy, Clone)]
pub struct NSUserAutomatorTask(pub id);
impl std::ops::Deref for NSUserAutomatorTask {
    type Target = objc2::runtime::AnyObject;
    fn deref(&self) -> &Self::Target {
        unsafe { &*self.0 }
    }
}
unsafe impl objc2::Message for NSUserAutomatorTask {}
impl NSUserAutomatorTask {
    pub fn alloc() -> Self {
        Self(unsafe { msg_send!(&*objc2::runtime::AnyClass::get(c"NSUserAutomatorTask").unwrap(), alloc) })
    }
}
impl INSUserScriptTask for NSUserAutomatorTask {}
impl std::convert::TryFrom<NSUserScriptTask> for NSUserAutomatorTask {
    type Error = &'static str;
    fn try_from(parent: NSUserScriptTask) -> Result<NSUserAutomatorTask, Self::Error> {
        let is_kind_of: bool =
            unsafe { msg_send!(&*parent, isKindOfClass : objc2::runtime::AnyClass::get(c"NSUserAutomatorTask").unwrap()) };
        if is_kind_of {
            Ok(NSUserAutomatorTask(parent.0))
        } else {
            Err("This NSUserScriptTask cannot be downcasted to NSUserAutomatorTask")
        }
    }
}
impl INSObject for NSUserAutomatorTask {}
impl PNSObject for NSUserAutomatorTask {}
impl INSUserAutomatorTask for NSUserAutomatorTask {}
pub trait INSUserAutomatorTask: Sized + std::ops::Deref {
    unsafe fn executeWithInput_completionHandler_(
        &self,
        input: *mut u64,
        handler: NSUserAutomatorTaskCompletionHandler,
    ) where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, executeWithInput : input, completionHandler : handler)
    }
    unsafe fn variables(&self) -> NSDictionary
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&**self, variables)
    }
    unsafe fn setVariables_(&self, variables: NSDictionary)
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&** self, setVariables : variables)
    }
}
pub type NSUserAutomatorTaskCompletionHandler = *mut ::std::os::raw::c_void;
impl NSAutoreleasePool_NSAutoreleasePoolDebugging for NSAutoreleasePool {}
pub trait NSAutoreleasePool_NSAutoreleasePoolDebugging: Sized + std::ops::Deref {
    unsafe fn showPools()
    where
        <Self as std::ops::Deref>::Target: objc2::Message + Sized,
    {
        msg_send!(&*objc2::runtime::AnyClass::get(c"NSAutoreleasePool").unwrap(), showPools)
    }
}
unsafe extern "C" {
    pub static mut NSFoundationVersionNumber: f64;
}
unsafe extern "C" {
    pub fn NSStringFromSelector(aSelector: objc2::runtime::Sel) -> NSString;
}
unsafe extern "C" {
    pub fn NSSelectorFromString(aSelectorName: NSString) -> objc2::runtime::Sel;
}
unsafe extern "C" {
    pub fn NSStringFromClass(aClass: Class) -> NSString;
}
unsafe extern "C" {
    pub fn NSClassFromString(aClassName: NSString) -> Class;
}
unsafe extern "C" {
    pub fn NSStringFromProtocol(proto: Protocol) -> NSString;
}
unsafe extern "C" {
    pub fn NSProtocolFromString(namestr: NSString) -> Protocol;
}
unsafe extern "C" {
    pub fn NSLog(format: id, ...);
}
unsafe extern "C" {
    pub fn NSLogv(format: id, args: __builtin_va_list);
}
unsafe extern "C" {
    pub fn NSDefaultMallocZone() -> *mut NSZone;
}
unsafe extern "C" {
    pub fn NSCreateZone(
        startSize: NSUInteger,
        granularity: NSUInteger,
        canFree: BOOL,
    ) -> *mut NSZone;
}
unsafe extern "C" {
    pub fn NSRecycleZone(zone: *mut NSZone);
}
unsafe extern "C" {
    pub fn NSSetZoneName(zone: *mut NSZone, name: NSString);
}
unsafe extern "C" {
    pub fn NSZoneName(zone: *mut NSZone) -> NSString;
}
unsafe extern "C" {
    pub fn NSZoneFromPointer(ptr: *mut ::std::os::raw::c_void) -> *mut NSZone;
}
unsafe extern "C" {
    pub fn NSZoneMalloc(zone: *mut NSZone, size: NSUInteger) -> *mut ::std::os::raw::c_void;
}
unsafe extern "C" {
    pub fn NSZoneCalloc(
        zone: *mut NSZone,
        numElems: NSUInteger,
        byteSize: NSUInteger,
    ) -> *mut ::std::os::raw::c_void;
}
unsafe extern "C" {
    pub fn NSZoneRealloc(
        zone: *mut NSZone,
        ptr: *mut ::std::os::raw::c_void,
        size: NSUInteger,
    ) -> *mut ::std::os::raw::c_void;
}
unsafe extern "C" {
    pub fn NSZoneFree(zone: *mut NSZone, ptr: *mut ::std::os::raw::c_void);
}
unsafe extern "C" {
    pub fn NSAllocateCollectable(
        size: NSUInteger,
        options: NSUInteger,
    ) -> *mut ::std::os::raw::c_void;
}
unsafe extern "C" {
    pub fn NSReallocateCollectable(
        ptr: *mut ::std::os::raw::c_void,
        size: NSUInteger,
        options: NSUInteger,
    ) -> *mut ::std::os::raw::c_void;
}
unsafe extern "C" {
    pub fn NSPageSize() -> NSUInteger;
}
unsafe extern "C" {
    pub fn NSLogPageSize() -> NSUInteger;
}
unsafe extern "C" {
    pub fn NSRoundUpToMultipleOfPageSize(bytes: NSUInteger) -> NSUInteger;
}
unsafe extern "C" {
    pub fn NSRoundDownToMultipleOfPageSize(bytes: NSUInteger) -> NSUInteger;
}
unsafe extern "C" {
    pub fn NSAllocateMemoryPages(bytes: NSUInteger) -> *mut ::std::os::raw::c_void;
}
unsafe extern "C" {
    pub fn NSDeallocateMemoryPages(ptr: *mut ::std::os::raw::c_void, bytes: NSUInteger);
}
unsafe extern "C" {
    pub fn NSCopyMemoryPages(
        source: *const ::std::os::raw::c_void,
        dest: *mut ::std::os::raw::c_void,
        bytes: NSUInteger,
    );
}
unsafe extern "C" {
    pub fn NSRealMemoryAvailable() -> NSUInteger;
}
unsafe extern "C" {
    pub fn NSAllocateObject(aClass: Class, extraBytes: NSUInteger, zone: *mut NSZone) -> id;
}
unsafe extern "C" {
    pub fn NSDeallocateObject(object: id);
}
unsafe extern "C" {
    pub fn NSCopyObject(object: id, extraBytes: NSUInteger, zone: *mut NSZone) -> id;
}
unsafe extern "C" {
    pub fn NSShouldRetainWithZone(anObject: id, requestedZone: *mut NSZone) -> BOOL;
}
unsafe extern "C" {
    pub fn NSIncrementExtraRefCount(object: id);
}
unsafe extern "C" {
    pub fn NSDecrementExtraRefCountWasZero(object: id) -> BOOL;
}
unsafe extern "C" {
    pub fn NSExtraRefCount(object: id) -> NSUInteger;
}
unsafe extern "C" {
    pub fn NSUnionRange(range1: NSRange, range2: NSRange) -> NSRange;
}
unsafe extern "C" {
    pub fn NSIntersectionRange(range1: NSRange, range2: NSRange) -> NSRange;
}
unsafe extern "C" {
    pub fn NSStringFromRange(range: NSRange) -> NSString;
}
unsafe extern "C" {
    pub fn NSRangeFromString(aString: NSString) -> NSRange;
}
unsafe extern "C" {
    pub static NSItemProviderPreferredImageSizeKey: NSString;
}
unsafe extern "C" {
    pub static NSExtensionJavaScriptPreprocessingResultsKey: NSString;
}
unsafe extern "C" {
    pub static NSExtensionJavaScriptFinalizeArgumentKey: NSString;
}
unsafe extern "C" {
    pub static NSItemProviderErrorDomain: NSString;
}
unsafe extern "C" {
    pub static NSStringEncodingDetectionSuggestedEncodingsKey: NSStringEncodingDetectionOptionsKey;
}
unsafe extern "C" {
    pub static NSStringEncodingDetectionDisallowedEncodingsKey: NSStringEncodingDetectionOptionsKey;
}
unsafe extern "C" {
    pub static NSStringEncodingDetectionUseOnlySuggestedEncodingsKey:
        NSStringEncodingDetectionOptionsKey;
}
unsafe extern "C" {
    pub static NSStringEncodingDetectionAllowLossyKey: NSStringEncodingDetectionOptionsKey;
}
unsafe extern "C" {
    pub static NSStringEncodingDetectionFromWindowsKey: NSStringEncodingDetectionOptionsKey;
}
unsafe extern "C" {
    pub static NSStringEncodingDetectionLossySubstitutionKey: NSStringEncodingDetectionOptionsKey;
}
unsafe extern "C" {
    pub static NSStringEncodingDetectionLikelyLanguageKey: NSStringEncodingDetectionOptionsKey;
}
unsafe extern "C" {
    pub static NSCharacterConversionException: NSExceptionName;
}
unsafe extern "C" {
    pub static NSParseErrorException: NSExceptionName;
}
unsafe extern "C" {
    pub static NSProgressEstimatedTimeRemainingKey: NSProgressUserInfoKey;
}
unsafe extern "C" {
    pub static NSProgressThroughputKey: NSProgressUserInfoKey;
}
unsafe extern "C" {
    pub static NSProgressKindFile: NSProgressKind;
}
unsafe extern "C" {
    pub static NSProgressFileOperationKindKey: NSProgressUserInfoKey;
}
unsafe extern "C" {
    pub static NSProgressFileOperationKindDownloading: NSProgressFileOperationKind;
}
unsafe extern "C" {
    pub static NSProgressFileOperationKindDecompressingAfterDownloading:
        NSProgressFileOperationKind;
}
unsafe extern "C" {
    pub static NSProgressFileOperationKindReceiving: NSProgressFileOperationKind;
}
unsafe extern "C" {
    pub static NSProgressFileOperationKindCopying: NSProgressFileOperationKind;
}
unsafe extern "C" {
    pub static NSProgressFileOperationKindUploading: NSProgressFileOperationKind;
}
unsafe extern "C" {
    pub static NSProgressFileOperationKindDuplicating: NSProgressFileOperationKind;
}
unsafe extern "C" {
    pub static NSProgressFileURLKey: NSProgressUserInfoKey;
}
unsafe extern "C" {
    pub static NSProgressFileTotalCountKey: NSProgressUserInfoKey;
}
unsafe extern "C" {
    pub static NSProgressFileCompletedCountKey: NSProgressUserInfoKey;
}
unsafe extern "C" {
    pub static NSProgressFileAnimationImageKey: NSProgressUserInfoKey;
}
unsafe extern "C" {
    pub static NSProgressFileAnimationImageOriginalRectKey: NSProgressUserInfoKey;
}
unsafe extern "C" {
    pub static NSProgressFileIconKey: NSProgressUserInfoKey;
}
unsafe extern "C" {
    pub static NSBundleDidLoadNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSLoadedClasses: NSString;
}
unsafe extern "C" {
    pub static NSBundleResourceRequestLowDiskSpaceNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSBundleResourceRequestLoadingPriorityUrgent: f64;
}
unsafe extern "C" {
    pub fn NXReadNSObjectFromCoder(decoder: NSCoder) -> NSObject;
}
unsafe extern "C" {
    pub static NSInflectionConceptsKey: NSAttributedStringFormattingContextKey;
}
unsafe extern "C" {
    pub static NSInlinePresentationIntentAttributeName: NSAttributedStringKey;
}
unsafe extern "C" {
    pub static NSAlternateDescriptionAttributeName: NSAttributedStringKey;
}
unsafe extern "C" {
    pub static NSImageURLAttributeName: NSAttributedStringKey;
}
unsafe extern "C" {
    pub static NSLanguageIdentifierAttributeName: NSAttributedStringKey;
}
unsafe extern "C" {
    pub static NSMarkdownSourcePositionAttributeName: NSAttributedStringKey;
}
unsafe extern "C" {
    pub static NSReplacementIndexAttributeName: NSAttributedStringKey;
}
unsafe extern "C" {
    pub static NSMorphologyAttributeName: NSAttributedStringKey;
}
unsafe extern "C" {
    pub static NSInflectionRuleAttributeName: NSAttributedStringKey;
}
unsafe extern "C" {
    pub static NSInflectionAgreementArgumentAttributeName: NSAttributedStringKey;
}
unsafe extern "C" {
    pub static NSInflectionAgreementConceptAttributeName: NSAttributedStringKey;
}
unsafe extern "C" {
    pub static NSInflectionReferentConceptAttributeName: NSAttributedStringKey;
}
unsafe extern "C" {
    pub static NSInflectionAlternativeAttributeName: NSAttributedStringKey;
}
unsafe extern "C" {
    pub static NSLocalizedNumberFormatAttributeName: NSAttributedStringKey;
}
unsafe extern "C" {
    pub static NSListItemDelimiterAttributeName: NSAttributedStringKey;
}
unsafe extern "C" {
    pub static NSPresentationIntentAttributeName: NSAttributedStringKey;
}
unsafe extern "C" {
    pub static NSPersonNameComponentKey: NSString;
}
unsafe extern "C" {
    pub static NSPersonNameComponentGivenName: NSString;
}
unsafe extern "C" {
    pub static NSPersonNameComponentFamilyName: NSString;
}
unsafe extern "C" {
    pub static NSPersonNameComponentMiddleName: NSString;
}
unsafe extern "C" {
    pub static NSPersonNameComponentPrefix: NSString;
}
unsafe extern "C" {
    pub static NSPersonNameComponentSuffix: NSString;
}
unsafe extern "C" {
    pub static NSPersonNameComponentNickname: NSString;
}
unsafe extern "C" {
    pub static NSPersonNameComponentDelimiter: NSString;
}
unsafe extern "C" {
    pub fn NSDecimalCopy(destination: *mut NSDecimal, source: *const NSDecimal);
}
unsafe extern "C" {
    pub fn NSDecimalCompact(number: *mut NSDecimal);
}
unsafe extern "C" {
    pub fn NSDecimalCompare(
        leftOperand: *const NSDecimal,
        rightOperand: *const NSDecimal,
    ) -> NSComparisonResult;
}
unsafe extern "C" {
    pub fn NSDecimalRound(
        result: *mut NSDecimal,
        number: *const NSDecimal,
        scale: NSInteger,
        roundingMode: NSRoundingMode,
    );
}
unsafe extern "C" {
    pub fn NSDecimalNormalize(
        number1: *mut NSDecimal,
        number2: *mut NSDecimal,
        roundingMode: NSRoundingMode,
    ) -> NSCalculationError;
}
unsafe extern "C" {
    pub fn NSDecimalAdd(
        result: *mut NSDecimal,
        leftOperand: *const NSDecimal,
        rightOperand: *const NSDecimal,
        roundingMode: NSRoundingMode,
    ) -> NSCalculationError;
}
unsafe extern "C" {
    pub fn NSDecimalSubtract(
        result: *mut NSDecimal,
        leftOperand: *const NSDecimal,
        rightOperand: *const NSDecimal,
        roundingMode: NSRoundingMode,
    ) -> NSCalculationError;
}
unsafe extern "C" {
    pub fn NSDecimalMultiply(
        result: *mut NSDecimal,
        leftOperand: *const NSDecimal,
        rightOperand: *const NSDecimal,
        roundingMode: NSRoundingMode,
    ) -> NSCalculationError;
}
unsafe extern "C" {
    pub fn NSDecimalDivide(
        result: *mut NSDecimal,
        leftOperand: *const NSDecimal,
        rightOperand: *const NSDecimal,
        roundingMode: NSRoundingMode,
    ) -> NSCalculationError;
}
unsafe extern "C" {
    pub fn NSDecimalPower(
        result: *mut NSDecimal,
        number: *const NSDecimal,
        power: NSUInteger,
        roundingMode: NSRoundingMode,
    ) -> NSCalculationError;
}
unsafe extern "C" {
    pub fn NSDecimalMultiplyByPowerOf10(
        result: *mut NSDecimal,
        number: *const NSDecimal,
        power: ::std::os::raw::c_short,
        roundingMode: NSRoundingMode,
    ) -> NSCalculationError;
}
unsafe extern "C" {
    pub fn NSDecimalString(dcm: *const NSDecimal, locale: id) -> NSString;
}
unsafe extern "C" {
    pub static NSObjectInaccessibleException: NSExceptionName;
}
unsafe extern "C" {
    pub static NSObjectNotAvailableException: NSExceptionName;
}
unsafe extern "C" {
    pub static NSDestinationInvalidException: NSExceptionName;
}
unsafe extern "C" {
    pub static NSPortTimeoutException: NSExceptionName;
}
unsafe extern "C" {
    pub static NSInvalidSendPortException: NSExceptionName;
}
unsafe extern "C" {
    pub static NSInvalidReceivePortException: NSExceptionName;
}
unsafe extern "C" {
    pub static NSPortSendException: NSExceptionName;
}
unsafe extern "C" {
    pub static NSPortReceiveException: NSExceptionName;
}
unsafe extern "C" {
    pub static NSOldStyleException: NSExceptionName;
}
unsafe extern "C" {
    pub static NSInconsistentArchiveException: NSExceptionName;
}
unsafe extern "C" {
    pub fn NSGetUncaughtExceptionHandler() -> NSUncaughtExceptionHandler;
}
unsafe extern "C" {
    pub fn NSSetUncaughtExceptionHandler(arg1: NSUncaughtExceptionHandler);
}
unsafe extern "C" {
    pub static NSAssertionHandlerKey: NSString;
}
unsafe extern "C" {
    pub static NSDecimalNumberExactnessException: NSExceptionName;
}
unsafe extern "C" {
    pub static NSDecimalNumberOverflowException: NSExceptionName;
}
unsafe extern "C" {
    pub static NSDecimalNumberUnderflowException: NSExceptionName;
}
unsafe extern "C" {
    pub static NSDecimalNumberDivideByZeroException: NSExceptionName;
}
unsafe extern "C" {
    pub static NSCocoaErrorDomain: NSErrorDomain;
}
unsafe extern "C" {
    pub static NSPOSIXErrorDomain: NSErrorDomain;
}
unsafe extern "C" {
    pub static NSOSStatusErrorDomain: NSErrorDomain;
}
unsafe extern "C" {
    pub static NSMachErrorDomain: NSErrorDomain;
}
unsafe extern "C" {
    pub static NSUnderlyingErrorKey: NSErrorUserInfoKey;
}
unsafe extern "C" {
    pub static NSMultipleUnderlyingErrorsKey: NSErrorUserInfoKey;
}
unsafe extern "C" {
    pub static NSLocalizedDescriptionKey: NSErrorUserInfoKey;
}
unsafe extern "C" {
    pub static NSLocalizedFailureReasonErrorKey: NSErrorUserInfoKey;
}
unsafe extern "C" {
    pub static NSLocalizedRecoverySuggestionErrorKey: NSErrorUserInfoKey;
}
unsafe extern "C" {
    pub static NSLocalizedRecoveryOptionsErrorKey: NSErrorUserInfoKey;
}
unsafe extern "C" {
    pub static NSRecoveryAttempterErrorKey: NSErrorUserInfoKey;
}
unsafe extern "C" {
    pub static NSHelpAnchorErrorKey: NSErrorUserInfoKey;
}
unsafe extern "C" {
    pub static NSDebugDescriptionErrorKey: NSErrorUserInfoKey;
}
unsafe extern "C" {
    pub static NSLocalizedFailureErrorKey: NSErrorUserInfoKey;
}
unsafe extern "C" {
    pub static NSStringEncodingErrorKey: NSErrorUserInfoKey;
}
unsafe extern "C" {
    pub static NSURLErrorKey: NSErrorUserInfoKey;
}
unsafe extern "C" {
    pub static NSFilePathErrorKey: NSErrorUserInfoKey;
}
unsafe extern "C" {
    pub static NSFileHandleOperationException: NSExceptionName;
}
unsafe extern "C" {
    pub static NSFileHandleReadCompletionNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSFileHandleReadToEndOfFileCompletionNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSFileHandleConnectionAcceptedNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSFileHandleDataAvailableNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSFileHandleNotificationDataItem: NSString;
}
unsafe extern "C" {
    pub static NSFileHandleNotificationFileHandleItem: NSString;
}
unsafe extern "C" {
    pub static NSFileHandleNotificationMonitorModes: NSString;
}
unsafe extern "C" {
    pub fn NSUserName() -> NSString;
}
unsafe extern "C" {
    pub fn NSFullUserName() -> NSString;
}
unsafe extern "C" {
    pub fn NSHomeDirectory() -> NSString;
}
unsafe extern "C" {
    pub fn NSHomeDirectoryForUser(userName: NSString) -> NSString;
}
unsafe extern "C" {
    pub fn NSTemporaryDirectory() -> NSString;
}
unsafe extern "C" {
    pub fn NSOpenStepRootDirectory() -> NSString;
}
unsafe extern "C" {
    pub fn NSSearchPathForDirectoriesInDomains(
        directory: NSSearchPathDirectory,
        domainMask: NSSearchPathDomainMask,
        expandTilde: BOOL,
    ) -> NSArray;
}
unsafe extern "C" {
    pub static NSHTTPPropertyStatusCodeKey: NSString;
}
unsafe extern "C" {
    pub static NSHTTPPropertyStatusReasonKey: NSString;
}
unsafe extern "C" {
    pub static NSHTTPPropertyServerHTTPVersionKey: NSString;
}
unsafe extern "C" {
    pub static NSHTTPPropertyRedirectionHeadersKey: NSString;
}
unsafe extern "C" {
    pub static NSHTTPPropertyErrorPageDataKey: NSString;
}
unsafe extern "C" {
    pub static NSHTTPPropertyHTTPProxy: NSString;
}
unsafe extern "C" {
    pub static NSFTPPropertyUserLoginKey: NSString;
}
unsafe extern "C" {
    pub static NSFTPPropertyUserPasswordKey: NSString;
}
unsafe extern "C" {
    pub static NSFTPPropertyActiveTransferModeKey: NSString;
}
unsafe extern "C" {
    pub static NSFTPPropertyFileOffsetKey: NSString;
}
unsafe extern "C" {
    pub static NSFTPPropertyFTPProxy: NSString;
}
unsafe extern "C" {
    pub static NSURLFileScheme: NSString;
}
unsafe extern "C" {
    pub static NSFileManagerUnmountDissentingProcessIdentifierErrorKey: NSString;
}
unsafe extern "C" {
    pub static NSUbiquityIdentityDidChangeNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSFileType: NSFileAttributeKey;
}
unsafe extern "C" {
    pub static NSFileTypeDirectory: NSFileAttributeType;
}
unsafe extern "C" {
    pub static NSFileTypeRegular: NSFileAttributeType;
}
unsafe extern "C" {
    pub static NSFileTypeSymbolicLink: NSFileAttributeType;
}
unsafe extern "C" {
    pub static NSFileTypeSocket: NSFileAttributeType;
}
unsafe extern "C" {
    pub static NSFileTypeCharacterSpecial: NSFileAttributeType;
}
unsafe extern "C" {
    pub static NSFileTypeBlockSpecial: NSFileAttributeType;
}
unsafe extern "C" {
    pub static NSFileTypeUnknown: NSFileAttributeType;
}
unsafe extern "C" {
    pub static NSFileSize: NSFileAttributeKey;
}
unsafe extern "C" {
    pub static NSFileModificationDate: NSFileAttributeKey;
}
unsafe extern "C" {
    pub static NSFileReferenceCount: NSFileAttributeKey;
}
unsafe extern "C" {
    pub static NSFileDeviceIdentifier: NSFileAttributeKey;
}
unsafe extern "C" {
    pub static NSFileOwnerAccountName: NSFileAttributeKey;
}
unsafe extern "C" {
    pub static NSFileGroupOwnerAccountName: NSFileAttributeKey;
}
unsafe extern "C" {
    pub static NSFilePosixPermissions: NSFileAttributeKey;
}
unsafe extern "C" {
    pub static NSFileSystemNumber: NSFileAttributeKey;
}
unsafe extern "C" {
    pub static NSFileSystemFileNumber: NSFileAttributeKey;
}
unsafe extern "C" {
    pub static NSFileExtensionHidden: NSFileAttributeKey;
}
unsafe extern "C" {
    pub static NSFileHFSCreatorCode: NSFileAttributeKey;
}
unsafe extern "C" {
    pub static NSFileHFSTypeCode: NSFileAttributeKey;
}
unsafe extern "C" {
    pub static NSFileImmutable: NSFileAttributeKey;
}
unsafe extern "C" {
    pub static NSFileAppendOnly: NSFileAttributeKey;
}
unsafe extern "C" {
    pub static NSFileCreationDate: NSFileAttributeKey;
}
unsafe extern "C" {
    pub static NSFileOwnerAccountID: NSFileAttributeKey;
}
unsafe extern "C" {
    pub static NSFileGroupOwnerAccountID: NSFileAttributeKey;
}
unsafe extern "C" {
    pub static NSFileBusy: NSFileAttributeKey;
}
unsafe extern "C" {
    pub static NSFileProtectionKey: NSFileAttributeKey;
}
unsafe extern "C" {
    pub static NSFileProtectionNone: NSFileProtectionType;
}
unsafe extern "C" {
    pub static NSFileProtectionComplete: NSFileProtectionType;
}
unsafe extern "C" {
    pub static NSFileProtectionCompleteUnlessOpen: NSFileProtectionType;
}
unsafe extern "C" {
    pub static NSFileProtectionCompleteUntilFirstUserAuthentication: NSFileProtectionType;
}
unsafe extern "C" {
    pub static NSFileProtectionCompleteWhenUserInactive: NSFileProtectionType;
}
unsafe extern "C" {
    pub static NSFileSystemSize: NSFileAttributeKey;
}
unsafe extern "C" {
    pub static NSFileSystemFreeSize: NSFileAttributeKey;
}
unsafe extern "C" {
    pub static NSFileSystemNodes: NSFileAttributeKey;
}
unsafe extern "C" {
    pub static NSFileSystemFreeNodes: NSFileAttributeKey;
}
unsafe extern "C" {
    pub fn NSFreeHashTable(table: NSHashTable);
}
unsafe extern "C" {
    pub fn NSResetHashTable(table: NSHashTable);
}
unsafe extern "C" {
    pub fn NSCompareHashTables(table1: NSHashTable, table2: NSHashTable) -> BOOL;
}
unsafe extern "C" {
    pub fn NSCopyHashTableWithZone(table: NSHashTable, zone: *mut NSZone) -> NSHashTable;
}
unsafe extern "C" {
    pub fn NSHashGet(
        table: NSHashTable,
        pointer: *const ::std::os::raw::c_void,
    ) -> *mut ::std::os::raw::c_void;
}
unsafe extern "C" {
    pub fn NSHashInsert(table: NSHashTable, pointer: *const ::std::os::raw::c_void);
}
unsafe extern "C" {
    pub fn NSHashInsertKnownAbsent(table: NSHashTable, pointer: *const ::std::os::raw::c_void);
}
unsafe extern "C" {
    pub fn NSHashInsertIfAbsent(
        table: NSHashTable,
        pointer: *const ::std::os::raw::c_void,
    ) -> *mut ::std::os::raw::c_void;
}
unsafe extern "C" {
    pub fn NSHashRemove(table: NSHashTable, pointer: *const ::std::os::raw::c_void);
}
unsafe extern "C" {
    pub fn NSEnumerateHashTable(table: NSHashTable) -> NSHashEnumerator;
}
unsafe extern "C" {
    pub fn NSNextHashEnumeratorItem(
        enumerator: *mut NSHashEnumerator,
    ) -> *mut ::std::os::raw::c_void;
}
unsafe extern "C" {
    pub fn NSEndHashTableEnumeration(enumerator: *mut NSHashEnumerator);
}
unsafe extern "C" {
    pub fn NSCountHashTable(table: NSHashTable) -> NSUInteger;
}
unsafe extern "C" {
    pub fn NSStringFromHashTable(table: NSHashTable) -> NSString;
}
unsafe extern "C" {
    pub fn NSAllHashTableObjects(table: NSHashTable) -> NSArray;
}
unsafe extern "C" {
    pub fn NSCreateHashTableWithZone(
        callBacks: NSHashTableCallBacks,
        capacity: NSUInteger,
        zone: *mut NSZone,
    ) -> NSHashTable;
}
unsafe extern "C" {
    pub fn NSCreateHashTable(callBacks: NSHashTableCallBacks, capacity: NSUInteger) -> NSHashTable;
}
unsafe extern "C" {
    pub static NSIntegerHashCallBacks: NSHashTableCallBacks;
}
unsafe extern "C" {
    pub static NSNonOwnedPointerHashCallBacks: NSHashTableCallBacks;
}
unsafe extern "C" {
    pub static NSNonRetainedObjectHashCallBacks: NSHashTableCallBacks;
}
unsafe extern "C" {
    pub static NSObjectHashCallBacks: NSHashTableCallBacks;
}
unsafe extern "C" {
    pub static NSOwnedObjectIdentityHashCallBacks: NSHashTableCallBacks;
}
unsafe extern "C" {
    pub static NSOwnedPointerHashCallBacks: NSHashTableCallBacks;
}
unsafe extern "C" {
    pub static NSPointerToStructHashCallBacks: NSHashTableCallBacks;
}
unsafe extern "C" {
    pub static NSIntHashCallBacks: NSHashTableCallBacks;
}
unsafe extern "C" {
    pub static NSHTTPCookieName: NSHTTPCookiePropertyKey;
}
unsafe extern "C" {
    pub static NSHTTPCookieValue: NSHTTPCookiePropertyKey;
}
unsafe extern "C" {
    pub static NSHTTPCookieOriginURL: NSHTTPCookiePropertyKey;
}
unsafe extern "C" {
    pub static NSHTTPCookieVersion: NSHTTPCookiePropertyKey;
}
unsafe extern "C" {
    pub static NSHTTPCookieDomain: NSHTTPCookiePropertyKey;
}
unsafe extern "C" {
    pub static NSHTTPCookiePath: NSHTTPCookiePropertyKey;
}
unsafe extern "C" {
    pub static NSHTTPCookieSecure: NSHTTPCookiePropertyKey;
}
unsafe extern "C" {
    pub static NSHTTPCookieExpires: NSHTTPCookiePropertyKey;
}
unsafe extern "C" {
    pub static NSHTTPCookieComment: NSHTTPCookiePropertyKey;
}
unsafe extern "C" {
    pub static NSHTTPCookieCommentURL: NSHTTPCookiePropertyKey;
}
unsafe extern "C" {
    pub static NSHTTPCookieDiscard: NSHTTPCookiePropertyKey;
}
unsafe extern "C" {
    pub static NSHTTPCookieMaximumAge: NSHTTPCookiePropertyKey;
}
unsafe extern "C" {
    pub static NSHTTPCookiePort: NSHTTPCookiePropertyKey;
}
unsafe extern "C" {
    pub static NSHTTPCookieSetByJavaScript: NSHTTPCookiePropertyKey;
}
unsafe extern "C" {
    pub static NSHTTPCookieSameSitePolicy: NSHTTPCookiePropertyKey;
}
unsafe extern "C" {
    pub static NSHTTPCookieSameSiteLax: NSHTTPCookieStringPolicy;
}
unsafe extern "C" {
    pub static NSHTTPCookieSameSiteStrict: NSHTTPCookieStringPolicy;
}
unsafe extern "C" {
    pub static NSHTTPCookieManagerAcceptPolicyChangedNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSHTTPCookieManagerCookiesChangedNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSUndefinedKeyException: NSExceptionName;
}
unsafe extern "C" {
    pub static NSAverageKeyValueOperator: NSKeyValueOperator;
}
unsafe extern "C" {
    pub static NSCountKeyValueOperator: NSKeyValueOperator;
}
unsafe extern "C" {
    pub static NSDistinctUnionOfArraysKeyValueOperator: NSKeyValueOperator;
}
unsafe extern "C" {
    pub static NSDistinctUnionOfObjectsKeyValueOperator: NSKeyValueOperator;
}
unsafe extern "C" {
    pub static NSDistinctUnionOfSetsKeyValueOperator: NSKeyValueOperator;
}
unsafe extern "C" {
    pub static NSMaximumKeyValueOperator: NSKeyValueOperator;
}
unsafe extern "C" {
    pub static NSMinimumKeyValueOperator: NSKeyValueOperator;
}
unsafe extern "C" {
    pub static NSSumKeyValueOperator: NSKeyValueOperator;
}
unsafe extern "C" {
    pub static NSUnionOfArraysKeyValueOperator: NSKeyValueOperator;
}
unsafe extern "C" {
    pub static NSUnionOfObjectsKeyValueOperator: NSKeyValueOperator;
}
unsafe extern "C" {
    pub static NSUnionOfSetsKeyValueOperator: NSKeyValueOperator;
}
unsafe extern "C" {
    pub static NSKeyValueChangeKindKey: NSKeyValueChangeKey;
}
unsafe extern "C" {
    pub static NSKeyValueChangeNewKey: NSKeyValueChangeKey;
}
unsafe extern "C" {
    pub static NSKeyValueChangeOldKey: NSKeyValueChangeKey;
}
unsafe extern "C" {
    pub static NSKeyValueChangeIndexesKey: NSKeyValueChangeKey;
}
unsafe extern "C" {
    pub static NSKeyValueChangeNotificationIsPriorKey: NSKeyValueChangeKey;
}
unsafe extern "C" {
    pub static NSZeroPoint: NSPoint;
}
unsafe extern "C" {
    pub static NSZeroSize: NSSize;
}
unsafe extern "C" {
    pub static NSZeroRect: NSRect;
}
unsafe extern "C" {
    pub static NSEdgeInsetsZero: NSEdgeInsets;
}
unsafe extern "C" {
    pub fn NSEqualPoints(aPoint: NSPoint, bPoint: NSPoint) -> BOOL;
}
unsafe extern "C" {
    pub fn NSEqualSizes(aSize: NSSize, bSize: NSSize) -> BOOL;
}
unsafe extern "C" {
    pub fn NSEqualRects(aRect: NSRect, bRect: NSRect) -> BOOL;
}
unsafe extern "C" {
    pub fn NSIsEmptyRect(aRect: NSRect) -> BOOL;
}
unsafe extern "C" {
    pub fn NSEdgeInsetsEqual(aInsets: NSEdgeInsets, bInsets: NSEdgeInsets) -> BOOL;
}
unsafe extern "C" {
    pub fn NSInsetRect(aRect: NSRect, dX: CGFloat, dY: CGFloat) -> NSRect;
}
unsafe extern "C" {
    pub fn NSIntegralRect(aRect: NSRect) -> NSRect;
}
unsafe extern "C" {
    pub fn NSIntegralRectWithOptions(aRect: NSRect, opts: NSAlignmentOptions) -> NSRect;
}
unsafe extern "C" {
    pub fn NSUnionRect(aRect: NSRect, bRect: NSRect) -> NSRect;
}
unsafe extern "C" {
    pub fn NSIntersectionRect(aRect: NSRect, bRect: NSRect) -> NSRect;
}
unsafe extern "C" {
    pub fn NSOffsetRect(aRect: NSRect, dX: CGFloat, dY: CGFloat) -> NSRect;
}
unsafe extern "C" {
    pub fn NSDivideRect(
        inRect: NSRect,
        slice: *mut NSRect,
        rem: *mut NSRect,
        amount: CGFloat,
        edge: NSRectEdge,
    );
}
unsafe extern "C" {
    pub fn NSPointInRect(aPoint: NSPoint, aRect: NSRect) -> BOOL;
}
unsafe extern "C" {
    pub fn NSMouseInRect(aPoint: NSPoint, aRect: NSRect, flipped: BOOL) -> BOOL;
}
unsafe extern "C" {
    pub fn NSContainsRect(aRect: NSRect, bRect: NSRect) -> BOOL;
}
unsafe extern "C" {
    pub fn NSIntersectsRect(aRect: NSRect, bRect: NSRect) -> BOOL;
}
unsafe extern "C" {
    pub fn NSStringFromPoint(aPoint: NSPoint) -> NSString;
}
unsafe extern "C" {
    pub fn NSStringFromSize(aSize: NSSize) -> NSString;
}
unsafe extern "C" {
    pub fn NSStringFromRect(aRect: NSRect) -> NSString;
}
unsafe extern "C" {
    pub fn NSPointFromString(aString: NSString) -> NSPoint;
}
unsafe extern "C" {
    pub fn NSSizeFromString(aString: NSString) -> NSSize;
}
unsafe extern "C" {
    pub fn NSRectFromString(aString: NSString) -> NSRect;
}
unsafe extern "C" {
    pub static NSInvalidArchiveOperationException: NSExceptionName;
}
unsafe extern "C" {
    pub static NSInvalidUnarchiveOperationException: NSExceptionName;
}
unsafe extern "C" {
    pub static NSKeyedArchiveRootObjectKey: NSString;
}
unsafe extern "C" {
    pub fn NSFreeMapTable(table: NSMapTable);
}
unsafe extern "C" {
    pub fn NSResetMapTable(table: NSMapTable);
}
unsafe extern "C" {
    pub fn NSCompareMapTables(table1: NSMapTable, table2: NSMapTable) -> BOOL;
}
unsafe extern "C" {
    pub fn NSCopyMapTableWithZone(table: NSMapTable, zone: *mut NSZone) -> NSMapTable;
}
unsafe extern "C" {
    pub fn NSMapMember(
        table: NSMapTable,
        key: *const ::std::os::raw::c_void,
        originalKey: *mut *mut ::std::os::raw::c_void,
        value: *mut *mut ::std::os::raw::c_void,
    ) -> BOOL;
}
unsafe extern "C" {
    pub fn NSMapGet(
        table: NSMapTable,
        key: *const ::std::os::raw::c_void,
    ) -> *mut ::std::os::raw::c_void;
}
unsafe extern "C" {
    pub fn NSMapInsert(
        table: NSMapTable,
        key: *const ::std::os::raw::c_void,
        value: *const ::std::os::raw::c_void,
    );
}
unsafe extern "C" {
    pub fn NSMapInsertKnownAbsent(
        table: NSMapTable,
        key: *const ::std::os::raw::c_void,
        value: *const ::std::os::raw::c_void,
    );
}
unsafe extern "C" {
    pub fn NSMapInsertIfAbsent(
        table: NSMapTable,
        key: *const ::std::os::raw::c_void,
        value: *const ::std::os::raw::c_void,
    ) -> *mut ::std::os::raw::c_void;
}
unsafe extern "C" {
    pub fn NSMapRemove(table: NSMapTable, key: *const ::std::os::raw::c_void);
}
unsafe extern "C" {
    pub fn NSEnumerateMapTable(table: NSMapTable) -> NSMapEnumerator;
}
unsafe extern "C" {
    pub fn NSNextMapEnumeratorPair(
        enumerator: *mut NSMapEnumerator,
        key: *mut *mut ::std::os::raw::c_void,
        value: *mut *mut ::std::os::raw::c_void,
    ) -> BOOL;
}
unsafe extern "C" {
    pub fn NSEndMapTableEnumeration(enumerator: *mut NSMapEnumerator);
}
unsafe extern "C" {
    pub fn NSCountMapTable(table: NSMapTable) -> NSUInteger;
}
unsafe extern "C" {
    pub fn NSStringFromMapTable(table: NSMapTable) -> NSString;
}
unsafe extern "C" {
    pub fn NSAllMapTableKeys(table: NSMapTable) -> NSArray;
}
unsafe extern "C" {
    pub fn NSAllMapTableValues(table: NSMapTable) -> NSArray;
}
unsafe extern "C" {
    pub fn NSCreateMapTableWithZone(
        keyCallBacks: NSMapTableKeyCallBacks,
        valueCallBacks: NSMapTableValueCallBacks,
        capacity: NSUInteger,
        zone: *mut NSZone,
    ) -> NSMapTable;
}
unsafe extern "C" {
    pub fn NSCreateMapTable(
        keyCallBacks: NSMapTableKeyCallBacks,
        valueCallBacks: NSMapTableValueCallBacks,
        capacity: NSUInteger,
    ) -> NSMapTable;
}
unsafe extern "C" {
    pub static NSIntegerMapKeyCallBacks: NSMapTableKeyCallBacks;
}
unsafe extern "C" {
    pub static NSNonOwnedPointerMapKeyCallBacks: NSMapTableKeyCallBacks;
}
unsafe extern "C" {
    pub static NSNonOwnedPointerOrNullMapKeyCallBacks: NSMapTableKeyCallBacks;
}
unsafe extern "C" {
    pub static NSNonRetainedObjectMapKeyCallBacks: NSMapTableKeyCallBacks;
}
unsafe extern "C" {
    pub static NSObjectMapKeyCallBacks: NSMapTableKeyCallBacks;
}
unsafe extern "C" {
    pub static NSOwnedPointerMapKeyCallBacks: NSMapTableKeyCallBacks;
}
unsafe extern "C" {
    pub static NSIntMapKeyCallBacks: NSMapTableKeyCallBacks;
}
unsafe extern "C" {
    pub static NSIntegerMapValueCallBacks: NSMapTableValueCallBacks;
}
unsafe extern "C" {
    pub static NSNonOwnedPointerMapValueCallBacks: NSMapTableValueCallBacks;
}
unsafe extern "C" {
    pub static NSObjectMapValueCallBacks: NSMapTableValueCallBacks;
}
unsafe extern "C" {
    pub static NSNonRetainedObjectMapValueCallBacks: NSMapTableValueCallBacks;
}
unsafe extern "C" {
    pub static NSOwnedPointerMapValueCallBacks: NSMapTableValueCallBacks;
}
unsafe extern "C" {
    pub static NSIntMapValueCallBacks: NSMapTableValueCallBacks;
}
unsafe extern "C" {
    pub static NSInvocationOperationVoidResultException: NSExceptionName;
}
unsafe extern "C" {
    pub static NSInvocationOperationCancelledException: NSExceptionName;
}
unsafe extern "C" {
    pub static NSPortDidBecomeInvalidNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSProcessInfoThermalStateDidChangeNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSProcessInfoPowerStateDidChangeNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSTextCheckingNameKey: NSTextCheckingKey;
}
unsafe extern "C" {
    pub static NSTextCheckingJobTitleKey: NSTextCheckingKey;
}
unsafe extern "C" {
    pub static NSTextCheckingOrganizationKey: NSTextCheckingKey;
}
unsafe extern "C" {
    pub static NSTextCheckingStreetKey: NSTextCheckingKey;
}
unsafe extern "C" {
    pub static NSTextCheckingCityKey: NSTextCheckingKey;
}
unsafe extern "C" {
    pub static NSTextCheckingStateKey: NSTextCheckingKey;
}
unsafe extern "C" {
    pub static NSTextCheckingZIPKey: NSTextCheckingKey;
}
unsafe extern "C" {
    pub static NSTextCheckingCountryKey: NSTextCheckingKey;
}
unsafe extern "C" {
    pub static NSTextCheckingPhoneKey: NSTextCheckingKey;
}
unsafe extern "C" {
    pub static NSTextCheckingAirlineKey: NSTextCheckingKey;
}
unsafe extern "C" {
    pub static NSTextCheckingFlightKey: NSTextCheckingKey;
}
unsafe extern "C" {
    pub static NSStreamSocketSSLErrorDomain: NSErrorDomain;
}
unsafe extern "C" {
    pub static NSStreamSOCKSErrorDomain: NSErrorDomain;
}
unsafe extern "C" {
    pub static NSStreamNetworkServiceType: NSStreamPropertyKey;
}
unsafe extern "C" {
    pub static NSStreamNetworkServiceTypeVoIP: NSStreamNetworkServiceTypeValue;
}
unsafe extern "C" {
    pub static NSStreamNetworkServiceTypeVideo: NSStreamNetworkServiceTypeValue;
}
unsafe extern "C" {
    pub static NSStreamNetworkServiceTypeBackground: NSStreamNetworkServiceTypeValue;
}
unsafe extern "C" {
    pub static NSStreamNetworkServiceTypeVoice: NSStreamNetworkServiceTypeValue;
}
unsafe extern "C" {
    pub static NSStreamNetworkServiceTypeCallSignaling: NSStreamNetworkServiceTypeValue;
}
unsafe extern "C" {
    pub static NSWillBecomeMultiThreadedNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSDidBecomeSingleThreadedNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSThreadWillExitNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSURLProtectionSpaceHTTP: NSString;
}
unsafe extern "C" {
    pub static NSURLProtectionSpaceHTTPS: NSString;
}
unsafe extern "C" {
    pub static NSURLProtectionSpaceFTP: NSString;
}
unsafe extern "C" {
    pub static NSURLProtectionSpaceHTTPProxy: NSString;
}
unsafe extern "C" {
    pub static NSURLProtectionSpaceHTTPSProxy: NSString;
}
unsafe extern "C" {
    pub static NSURLProtectionSpaceFTPProxy: NSString;
}
unsafe extern "C" {
    pub static NSURLProtectionSpaceSOCKSProxy: NSString;
}
unsafe extern "C" {
    pub static NSURLAuthenticationMethodDefault: NSString;
}
unsafe extern "C" {
    pub static NSURLAuthenticationMethodHTTPBasic: NSString;
}
unsafe extern "C" {
    pub static NSURLAuthenticationMethodHTTPDigest: NSString;
}
unsafe extern "C" {
    pub static NSURLAuthenticationMethodHTMLForm: NSString;
}
unsafe extern "C" {
    pub static NSURLAuthenticationMethodNTLM: NSString;
}
unsafe extern "C" {
    pub static NSURLAuthenticationMethodNegotiate: NSString;
}
unsafe extern "C" {
    pub static NSURLAuthenticationMethodClientCertificate: NSString;
}
unsafe extern "C" {
    pub static NSURLAuthenticationMethodServerTrust: NSString;
}
unsafe extern "C" {
    pub static NSURLCredentialStorageChangedNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSURLCredentialStorageRemoveSynchronizableCredentials: NSString;
}
unsafe extern "C" {
    pub static NSURLErrorDomain: NSErrorDomain;
}
unsafe extern "C" {
    pub static NSURLErrorFailingURLErrorKey: NSString;
}
unsafe extern "C" {
    pub static NSURLErrorFailingURLStringErrorKey: NSString;
}
unsafe extern "C" {
    pub static NSErrorFailingURLStringKey: NSString;
}
unsafe extern "C" {
    pub static NSURLErrorFailingURLPeerTrustErrorKey: NSString;
}
unsafe extern "C" {
    pub static NSURLErrorBackgroundTaskCancelledReasonKey: NSString;
}
unsafe extern "C" {
    pub static NSURLErrorNetworkUnavailableReasonKey: NSErrorUserInfoKey;
}
unsafe extern "C" {
    pub static NSGlobalDomain: NSString;
}
unsafe extern "C" {
    pub static NSArgumentDomain: NSString;
}
unsafe extern "C" {
    pub static NSRegistrationDomain: NSString;
}
unsafe extern "C" {
    pub static NSUserDefaultsSizeLimitExceededNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSUbiquitousUserDefaultsNoCloudAccountNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSUbiquitousUserDefaultsDidChangeAccountsNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSUbiquitousUserDefaultsCompletedInitialSyncNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSUserDefaultsDidChangeNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSWeekDayNameArray: NSString;
}
unsafe extern "C" {
    pub static NSShortWeekDayNameArray: NSString;
}
unsafe extern "C" {
    pub static NSMonthNameArray: NSString;
}
unsafe extern "C" {
    pub static NSShortMonthNameArray: NSString;
}
unsafe extern "C" {
    pub static NSTimeFormatString: NSString;
}
unsafe extern "C" {
    pub static NSDateFormatString: NSString;
}
unsafe extern "C" {
    pub static NSTimeDateFormatString: NSString;
}
unsafe extern "C" {
    pub static NSShortTimeDateFormatString: NSString;
}
unsafe extern "C" {
    pub static NSCurrencySymbol: NSString;
}
unsafe extern "C" {
    pub static NSDecimalSeparator: NSString;
}
unsafe extern "C" {
    pub static NSThousandsSeparator: NSString;
}
unsafe extern "C" {
    pub static NSDecimalDigits: NSString;
}
unsafe extern "C" {
    pub static NSAMPMDesignation: NSString;
}
unsafe extern "C" {
    pub static NSHourNameDesignations: NSString;
}
unsafe extern "C" {
    pub static NSYearMonthWeekDesignations: NSString;
}
unsafe extern "C" {
    pub static NSEarlierTimeDesignations: NSString;
}
unsafe extern "C" {
    pub static NSLaterTimeDesignations: NSString;
}
unsafe extern "C" {
    pub static NSThisDayDesignations: NSString;
}
unsafe extern "C" {
    pub static NSNextDayDesignations: NSString;
}
unsafe extern "C" {
    pub static NSNextNextDayDesignations: NSString;
}
unsafe extern "C" {
    pub static NSPriorDayDesignations: NSString;
}
unsafe extern "C" {
    pub static NSDateTimeOrdering: NSString;
}
unsafe extern "C" {
    pub static NSInternationalCurrencyString: NSString;
}
unsafe extern "C" {
    pub static NSShortDateFormatString: NSString;
}
unsafe extern "C" {
    pub static NSPositiveCurrencyFormatString: NSString;
}
unsafe extern "C" {
    pub static NSNegativeCurrencyFormatString: NSString;
}
unsafe extern "C" {
    pub static NSNegateBooleanTransformerName: NSValueTransformerName;
}
unsafe extern "C" {
    pub static NSIsNilTransformerName: NSValueTransformerName;
}
unsafe extern "C" {
    pub static NSIsNotNilTransformerName: NSValueTransformerName;
}
unsafe extern "C" {
    pub static NSUnarchiveFromDataTransformerName: NSValueTransformerName;
}
unsafe extern "C" {
    pub static NSKeyedUnarchiveFromDataTransformerName: NSValueTransformerName;
}
unsafe extern "C" {
    pub static NSSecureUnarchiveFromDataTransformerName: NSValueTransformerName;
}
unsafe extern "C" {
    pub static NSXMLParserErrorDomain: NSErrorDomain;
}
unsafe extern "C" {
    pub static NSExtensionItemsAndErrorsKey: NSString;
}
unsafe extern "C" {
    pub static NSExtensionHostWillEnterForegroundNotification: NSString;
}
unsafe extern "C" {
    pub static NSExtensionHostDidEnterBackgroundNotification: NSString;
}
unsafe extern "C" {
    pub static NSExtensionHostWillResignActiveNotification: NSString;
}
unsafe extern "C" {
    pub static NSExtensionHostDidBecomeActiveNotification: NSString;
}
unsafe extern "C" {
    pub static NSExtensionItemAttributedTitleKey: NSString;
}
unsafe extern "C" {
    pub static NSExtensionItemAttributedContentTextKey: NSString;
}
unsafe extern "C" {
    pub static NSExtensionItemAttachmentsKey: NSString;
}
unsafe extern "C" {
    pub static NSLinguisticTagSchemeTokenType: NSLinguisticTagScheme;
}
unsafe extern "C" {
    pub static NSLinguisticTagSchemeLexicalClass: NSLinguisticTagScheme;
}
unsafe extern "C" {
    pub static NSLinguisticTagSchemeNameType: NSLinguisticTagScheme;
}
unsafe extern "C" {
    pub static NSLinguisticTagSchemeNameTypeOrLexicalClass: NSLinguisticTagScheme;
}
unsafe extern "C" {
    pub static NSLinguisticTagSchemeLemma: NSLinguisticTagScheme;
}
unsafe extern "C" {
    pub static NSLinguisticTagSchemeLanguage: NSLinguisticTagScheme;
}
unsafe extern "C" {
    pub static NSLinguisticTagSchemeScript: NSLinguisticTagScheme;
}
unsafe extern "C" {
    pub static NSLinguisticTagWord: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagPunctuation: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagWhitespace: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagOther: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagNoun: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagVerb: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagAdjective: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagAdverb: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagPronoun: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagDeterminer: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagParticle: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagPreposition: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagNumber: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagConjunction: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagInterjection: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagClassifier: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagIdiom: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagOtherWord: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagSentenceTerminator: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagOpenQuote: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagCloseQuote: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagOpenParenthesis: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagCloseParenthesis: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagWordJoiner: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagDash: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagOtherPunctuation: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagParagraphBreak: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagOtherWhitespace: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagPersonalName: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagPlaceName: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSLinguisticTagOrganizationName: NSLinguisticTag;
}
unsafe extern "C" {
    pub static NSMetadataItemFSNameKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataItemDisplayNameKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataItemURLKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataItemPathKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataItemFSSizeKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataItemFSCreationDateKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataItemFSContentChangeDateKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataItemIsUbiquitousKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousItemHasUnresolvedConflictsKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousItemIsDownloadedKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousItemDownloadingStatusKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousItemDownloadingStatusNotDownloaded: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousItemDownloadingStatusDownloaded: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousItemDownloadingStatusCurrent: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousItemIsDownloadingKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousItemIsUploadedKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousItemIsUploadingKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousItemPercentDownloadedKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousItemPercentUploadedKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousItemDownloadingErrorKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousItemUploadingErrorKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousItemDownloadRequestedKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousItemIsExternalDocumentKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousItemContainerDisplayNameKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousItemURLInLocalContainerKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousItemIsSharedKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousSharedItemCurrentUserRoleKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousSharedItemCurrentUserPermissionsKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousSharedItemOwnerNameComponentsKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousSharedItemMostRecentEditorNameComponentsKey: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousSharedItemRoleOwner: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousSharedItemRoleParticipant: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousSharedItemPermissionsReadOnly: NSString;
}
unsafe extern "C" {
    pub static NSMetadataUbiquitousSharedItemPermissionsReadWrite: NSString;
}
unsafe extern "C" {
    pub static NSMetadataQueryDidStartGatheringNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSMetadataQueryGatheringProgressNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSMetadataQueryDidFinishGatheringNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSMetadataQueryDidUpdateNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSMetadataQueryResultContentRelevanceAttribute: NSString;
}
unsafe extern "C" {
    pub static NSMetadataQueryUserHomeScope: NSString;
}
unsafe extern "C" {
    pub static NSMetadataQueryLocalComputerScope: NSString;
}
unsafe extern "C" {
    pub static NSMetadataQueryNetworkScope: NSString;
}
unsafe extern "C" {
    pub static NSMetadataQueryUbiquitousDocumentsScope: NSString;
}
unsafe extern "C" {
    pub static NSMetadataQueryUbiquitousDataScope: NSString;
}
unsafe extern "C" {
    pub static NSMetadataQueryAccessibleUbiquitousExternalDocumentsScope: NSString;
}
unsafe extern "C" {
    pub static NSNetServicesErrorCode: NSString;
}
unsafe extern "C" {
    pub static NSNetServicesErrorDomain: NSErrorDomain;
}
unsafe extern "C" {
    pub static NSUbiquitousKeyValueStoreDidChangeExternallyNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSUbiquitousKeyValueStoreChangeReasonKey: NSString;
}
unsafe extern "C" {
    pub static NSUbiquitousKeyValueStoreChangedKeysKey: NSString;
}
unsafe extern "C" {
    pub static NSUndoManagerGroupIsDiscardableKey: NSString;
}
unsafe extern "C" {
    pub static NSUndoManagerCheckpointNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSUndoManagerWillUndoChangeNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSUndoManagerWillRedoChangeNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSUndoManagerDidUndoChangeNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSUndoManagerDidRedoChangeNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSUndoManagerDidOpenUndoGroupNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSUndoManagerWillCloseUndoGroupNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSUndoManagerDidCloseUndoGroupNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSURLSessionTransferSizeUnknown: i64;
}
unsafe extern "C" {
    pub static NSURLSessionTaskPriorityDefault: f32;
}
unsafe extern "C" {
    pub static NSURLSessionTaskPriorityLow: f32;
}
unsafe extern "C" {
    pub static NSURLSessionTaskPriorityHigh: f32;
}
unsafe extern "C" {
    pub static NSURLSessionDownloadTaskResumeData: NSString;
}
unsafe extern "C" {
    pub static NSURLSessionUploadTaskResumeData: NSString;
}
unsafe extern "C" {
    pub static NSUserActivityTypeBrowsingWeb: NSString;
}
unsafe extern "C" {
    pub static NSAppleScriptErrorMessage: NSString;
}
unsafe extern "C" {
    pub static NSAppleScriptErrorNumber: NSString;
}
unsafe extern "C" {
    pub static NSAppleScriptErrorAppName: NSString;
}
unsafe extern "C" {
    pub static NSAppleScriptErrorBriefMessage: NSString;
}
unsafe extern "C" {
    pub static NSAppleScriptErrorRange: NSString;
}
unsafe extern "C" {
    pub static NSConnectionReplyMode: NSString;
}
unsafe extern "C" {
    pub static NSConnectionDidDieNotification: NSString;
}
unsafe extern "C" {
    pub static NSFailedAuthenticationException: NSString;
}
unsafe extern "C" {
    pub static NSConnectionDidInitializeNotification: NSString;
}
unsafe extern "C" {
    pub static NSLocalNotificationCenterType: NSDistributedNotificationCenterType;
}
unsafe extern "C" {
    pub static NSTaskDidTerminateNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSAppleEventTimeOutDefault: f64;
}
unsafe extern "C" {
    pub static NSAppleEventTimeOutNone: f64;
}
unsafe extern "C" {
    pub static NSAppleEventManagerWillProcessFirstEventNotification: NSNotificationName;
}
unsafe extern "C" {
    pub static NSClassDescriptionNeededForClassNotification: NSNotificationName;
}
unsafe extern "C" {
    pub fn NSFileTypeForHFSTypeCode(hfsFileTypeCode: OSType) -> NSString;
}
unsafe extern "C" {
    pub fn NSHFSTypeCodeFromFileType(fileTypeString: NSString) -> OSType;
}
unsafe extern "C" {
    pub fn NSHFSTypeOfFile(fullFilePath: NSString) -> NSString;
}
unsafe extern "C" {
    pub static NSOperationNotSupportedForKeyException: NSString;
}
unsafe extern "C" {
    pub static NSGrammarRange: NSString;
}
unsafe extern "C" {
    pub static NSGrammarUserDescription: NSString;
}
unsafe extern "C" {
    pub static NSGrammarCorrections: NSString;
}
unsafe extern "C" {
    pub static NSUserNotificationDefaultSoundName: NSString;
}
unsafe extern "C" {
    pub static mut NSDebugEnabled: BOOL;
}
unsafe extern "C" {
    pub static mut NSZombieEnabled: BOOL;
}
unsafe extern "C" {
    pub static mut NSDeallocateZombies: BOOL;
}
unsafe extern "C" {
    pub fn NSIsFreedObject(anObject: id) -> BOOL;
}
unsafe extern "C" {
    pub fn NSFrameAddress(frame: NSUInteger) -> *mut ::std::os::raw::c_void;
}
unsafe extern "C" {
    pub fn NSReturnAddress(frame: NSUInteger) -> *mut ::std::os::raw::c_void;
}
unsafe extern "C" {
    pub fn NSCountFrames() -> NSUInteger;
}
unsafe extern "C" {
    pub static mut NSKeepAllocationStatistics: BOOL;
}
unsafe extern "C" {
    pub fn NSRecordAllocationEvent(eventType: ::std::os::raw::c_int, object: id);
}

unsafe impl objc2::encode::RefEncode for _NSZone {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for _NSZone {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Struct("_NSZone", &[]);
}
unsafe impl objc2::encode::RefEncode for _xpc_type_s {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for _xpc_type_s {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Struct("_xpc_type_s", &[]);
}
unsafe impl objc2::encode::RefEncode for NSFastEnumerationState {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSFastEnumerationState {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Struct("NSFastEnumerationState", &[]);
}
unsafe impl objc2::encode::RefEncode for NSEnumerator {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSEnumerator {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSValue {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSValue {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSNumber {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSNumber {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for _NSRange {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for _NSRange {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Struct("_NSRange", &[]);
}
unsafe impl objc2::encode::RefEncode for NSOrderedCollectionChange {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSOrderedCollectionChange {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSIndexSet {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSIndexSet {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMutableIndexSet {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMutableIndexSet {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSOrderedCollectionDifference {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSOrderedCollectionDifference {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSArray {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSArray {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMutableArray {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMutableArray {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSAutoreleasePool {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSAutoreleasePool {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSItemProvider {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSItemProvider {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSString {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSString {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMutableString {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMutableString {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSSimpleCString {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSSimpleCString {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSConstantString {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSConstantString {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSDictionary {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSDictionary {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMutableDictionary {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMutableDictionary {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSSet {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSSet {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMutableSet {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMutableSet {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSCountedSet {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSCountedSet {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSProgress {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSProgress {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSNotification {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSNotification {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSNotificationCenter {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSNotificationCenter {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSBundle {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSBundle {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSBundleResourceRequest {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSBundleResourceRequest {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSDate {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSDate {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSCalendar {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSCalendar {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSDateComponents {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSDateComponents {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSCharacterSet {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSCharacterSet {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMutableCharacterSet {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMutableCharacterSet {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSCoder {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSCoder {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSData {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSData {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMutableData {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMutableData {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSPurgeableData {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSPurgeableData {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSDateInterval {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSDateInterval {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSAttributedString {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSAttributedString {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMutableAttributedString {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMutableAttributedString {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSAttributedStringMarkdownSourcePosition {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSAttributedStringMarkdownSourcePosition {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSAttributedStringMarkdownParsingOptions {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSAttributedStringMarkdownParsingOptions {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSPresentationIntent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSPresentationIntent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSFormatter {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSFormatter {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSDateFormatter {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSDateFormatter {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSDateIntervalFormatter {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSDateIntervalFormatter {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSISO8601DateFormatter {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSISO8601DateFormatter {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMassFormatter {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMassFormatter {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSLengthFormatter {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSLengthFormatter {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSEnergyFormatter {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSEnergyFormatter {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSNumberFormatter {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSNumberFormatter {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitConverter {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitConverter {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitConverterLinear {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitConverterLinear {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnit {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnit {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSDimension {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSDimension {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitAcceleration {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitAcceleration {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitAngle {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitAngle {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitArea {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitArea {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitConcentrationMass {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitConcentrationMass {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitDispersion {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitDispersion {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitDuration {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitDuration {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitElectricCharge {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitElectricCharge {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitElectricCurrent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitElectricCurrent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitElectricPotentialDifference {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitElectricPotentialDifference {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitElectricResistance {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitElectricResistance {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitEnergy {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitEnergy {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitFrequency {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitFrequency {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitFuelEfficiency {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitFuelEfficiency {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitInformationStorage {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitInformationStorage {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitLength {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitLength {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitIlluminance {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitIlluminance {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitMass {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitMass {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitPower {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitPower {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitPressure {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitPressure {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitSpeed {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitSpeed {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitTemperature {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitTemperature {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnitVolume {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnitVolume {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMeasurement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMeasurement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSLocale {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSLocale {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMeasurementFormatter {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMeasurementFormatter {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSPersonNameComponents {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSPersonNameComponents {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSPersonNameComponentsFormatter {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSPersonNameComponentsFormatter {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSRelativeDateTimeFormatter {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSRelativeDateTimeFormatter {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSListFormatter {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSListFormatter {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSDecimal {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSDecimal {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Struct("NSDecimal", &[]);
}
unsafe impl objc2::encode::RefEncode for NSScanner {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSScanner {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSException {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSException {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSAssertionHandler {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSAssertionHandler {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSDecimalNumber {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSDecimalNumber {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSDecimalNumberHandler {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSDecimalNumberHandler {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSError {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSError {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSRunLoop {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSRunLoop {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSFileHandle {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSFileHandle {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSPipe {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSPipe {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLHandle {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLHandle {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURL {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURL {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLQueryItem {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLQueryItem {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLComponents {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLComponents {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSFileSecurity {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSFileSecurity {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSFileManager {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSFileManager {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSDirectoryEnumerator {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSDirectoryEnumerator {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSFileProviderService {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSFileProviderService {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSPointerFunctions {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSPointerFunctions {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSHashTable {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSHashTable {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSHashEnumerator {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSHashEnumerator {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Struct("NSHashEnumerator", &[]);
}
unsafe impl objc2::encode::RefEncode for NSHashTableCallBacks {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSHashTableCallBacks {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Struct("NSHashTableCallBacks", &[]);
}
unsafe impl objc2::encode::RefEncode for NSHTTPCookie {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSHTTPCookie {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSHTTPCookieStorage {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSHTTPCookieStorage {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSIndexPath {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSIndexPath {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSInflectionRule {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSInflectionRule {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSInflectionRuleExplicit {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSInflectionRuleExplicit {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSInvocation {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSInvocation {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSJSONSerialization {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSJSONSerialization {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSOrderedSet {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSOrderedSet {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMutableOrderedSet {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMutableOrderedSet {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSKeyValueSharedObserversSnapshot {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSKeyValueSharedObserversSnapshot {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSKeyValueSharedObservers {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSKeyValueSharedObservers {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSPropertyListSerialization {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSPropertyListSerialization {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSEdgeInsets {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSEdgeInsets {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Struct("NSEdgeInsets", &[]);
}
unsafe impl objc2::encode::RefEncode for NSKeyedArchiver {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSKeyedArchiver {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSKeyedUnarchiver {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSKeyedUnarchiver {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSLock {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSLock {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSConditionLock {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSConditionLock {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSRecursiveLock {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSRecursiveLock {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSCondition {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSCondition {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMapTable {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMapTable {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMapEnumerator {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMapEnumerator {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Struct("NSMapEnumerator", &[]);
}
unsafe impl objc2::encode::RefEncode for NSMapTableKeyCallBacks {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMapTableKeyCallBacks {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Struct("NSMapTableKeyCallBacks", &[]);
}
unsafe impl objc2::encode::RefEncode for NSMapTableValueCallBacks {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMapTableValueCallBacks {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Struct("NSMapTableValueCallBacks", &[]);
}
unsafe impl objc2::encode::RefEncode for NSMethodSignature {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMethodSignature {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMorphology {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMorphology {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMorphologyPronoun {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMorphologyPronoun {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMorphologyCustomPronoun {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMorphologyCustomPronoun {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSTermOfAddress {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSTermOfAddress {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSNotificationQueue {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSNotificationQueue {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSNull {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSNull {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSLocalizedNumberFormatRule {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSLocalizedNumberFormatRule {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSOperation {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSOperation {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSBlockOperation {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSBlockOperation {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSInvocationOperation {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSInvocationOperation {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSOperationQueue {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSOperationQueue {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSOrthography {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSOrthography {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSPointerArray {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSPointerArray {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSPort {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSPort {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMachPort {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMachPort {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMessagePort {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMessagePort {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSSocketPort {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSSocketPort {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSOperatingSystemVersion {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSOperatingSystemVersion {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Struct("NSOperatingSystemVersion", &[]);
}
unsafe impl objc2::encode::RefEncode for NSProcessInfo {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSProcessInfo {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSProxy {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSProxy {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSTextCheckingResult {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSTextCheckingResult {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSRegularExpression {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSRegularExpression {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSDataDetector {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSDataDetector {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSSortDescriptor {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSSortDescriptor {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSStream {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSStream {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSInputStream {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSInputStream {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSOutputStream {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSOutputStream {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSThread {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSThread {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSTimeZone {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSTimeZone {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSTimer {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSTimer {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLAuthenticationChallenge {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLAuthenticationChallenge {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSCachedURLResponse {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSCachedURLResponse {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLCache {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLCache {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLConnection {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLConnection {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLCredential {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLCredential {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLProtectionSpace {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLProtectionSpace {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLCredentialStorage {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLCredentialStorage {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLProtocol {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLProtocol {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLRequest {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLRequest {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMutableURLRequest {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMutableURLRequest {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLResponse {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLResponse {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSHTTPURLResponse {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSHTTPURLResponse {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUserDefaults {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUserDefaults {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSValueTransformer {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSValueTransformer {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSSecureUnarchiveFromDataTransformer {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSSecureUnarchiveFromDataTransformer {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSXMLParser {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSXMLParser {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSXPCConnection {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSXPCConnection {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSXPCListener {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSXPCListener {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSXPCInterface {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSXPCInterface {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSXPCListenerEndpoint {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSXPCListenerEndpoint {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSXPCCoder {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSXPCCoder {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSByteCountFormatter {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSByteCountFormatter {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSCache {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSCache {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSPredicate {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSPredicate {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSComparisonPredicate {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSComparisonPredicate {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSCompoundPredicate {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSCompoundPredicate {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSDateComponentsFormatter {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSDateComponentsFormatter {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSExpression {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSExpression {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSExtensionContext {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSExtensionContext {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSExtensionItem {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSExtensionItem {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSFileAccessIntent {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSFileAccessIntent {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSFileCoordinator {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSFileCoordinator {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSFileVersion {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSFileVersion {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSFileWrapper {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSFileWrapper {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSLinguisticTagger {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSLinguisticTagger {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMetadataQuery {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMetadataQuery {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMetadataItem {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMetadataItem {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMetadataQueryAttributeValueTuple {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMetadataQueryAttributeValueTuple {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMetadataQueryResultGroup {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMetadataQueryResultGroup {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSNetService {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSNetService {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSNetServiceBrowser {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSNetServiceBrowser {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUbiquitousKeyValueStore {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUbiquitousKeyValueStore {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUndoManager {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUndoManager {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLSession {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLSession {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLSessionTask {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLSessionTask {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLSessionDataTask {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLSessionDataTask {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLSessionUploadTask {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLSessionUploadTask {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLSessionDownloadTask {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLSessionDownloadTask {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLSessionStreamTask {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLSessionStreamTask {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLSessionWebSocketMessage {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLSessionWebSocketMessage {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLSessionWebSocketTask {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLSessionWebSocketTask {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLSessionConfiguration {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLSessionConfiguration {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLSessionTaskTransactionMetrics {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLSessionTaskTransactionMetrics {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLSessionTaskMetrics {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLSessionTaskMetrics {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUserActivity {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUserActivity {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUUID {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUUID {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSAffineTransformStruct {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSAffineTransformStruct {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Struct("NSAffineTransformStruct", &[]);
}
unsafe impl objc2::encode::RefEncode for NSAffineTransform {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSAffineTransform {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSAppleScript {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSAppleScript {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSArchiver {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSArchiver {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUnarchiver {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUnarchiver {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSBackgroundActivityScheduler {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSBackgroundActivityScheduler {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSCalendarDate {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSCalendarDate {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSConnection {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSConnection {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSDistantObjectRequest {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSDistantObjectRequest {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSDistantObject {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSDistantObject {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSDistributedNotificationCenter {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSDistributedNotificationCenter {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSPortCoder {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSPortCoder {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSPortMessage {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSPortMessage {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSPortNameServer {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSPortNameServer {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMachBootstrapServer {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMachBootstrapServer {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMessagePortNameServer {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMessagePortNameServer {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSSocketPortNameServer {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSSocketPortNameServer {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSProtocolChecker {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSProtocolChecker {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSTask {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSTask {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSXMLNode {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSXMLNode {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSXMLDTD {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSXMLDTD {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSXMLDTDNode {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSXMLDTDNode {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSXMLDocument {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSXMLDocument {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSXMLElement {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSXMLElement {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSURLDownload {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSURLDownload {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSAppleEventDescriptor {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSAppleEventDescriptor {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for __NSAppleEventManagerSuspension {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for __NSAppleEventManagerSuspension {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Struct("__NSAppleEventManagerSuspension", &[]);
}
unsafe impl objc2::encode::RefEncode for NSAppleEventManager {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSAppleEventManager {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSClassDescription {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSClassDescription {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSDistributedLock {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSDistributedLock {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSGarbageCollector {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSGarbageCollector {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSHost {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSHost {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSScriptClassDescription {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSScriptClassDescription {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSScriptCoercionHandler {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSScriptCoercionHandler {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSScriptCommand {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSScriptCommand {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSScriptCommandDescription {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSScriptCommandDescription {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSScriptExecutionContext {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSScriptExecutionContext {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSScriptObjectSpecifier {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSScriptObjectSpecifier {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSIndexSpecifier {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSIndexSpecifier {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMiddleSpecifier {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMiddleSpecifier {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSNameSpecifier {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSNameSpecifier {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSPositionalSpecifier {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSPositionalSpecifier {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSPropertySpecifier {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSPropertySpecifier {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSRandomSpecifier {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSRandomSpecifier {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSRangeSpecifier {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSRangeSpecifier {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSRelativeSpecifier {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSRelativeSpecifier {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUniqueIDSpecifier {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUniqueIDSpecifier {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSWhoseSpecifier {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSWhoseSpecifier {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSCloneCommand {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSCloneCommand {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSCloseCommand {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSCloseCommand {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSCountCommand {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSCountCommand {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSCreateCommand {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSCreateCommand {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSDeleteCommand {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSDeleteCommand {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSExistsCommand {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSExistsCommand {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSGetCommand {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSGetCommand {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSMoveCommand {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSMoveCommand {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSQuitCommand {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSQuitCommand {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSSetCommand {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSSetCommand {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSScriptSuiteRegistry {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSScriptSuiteRegistry {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSScriptWhoseTest {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSScriptWhoseTest {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSLogicalTest {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSLogicalTest {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSSpecifierTest {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSSpecifierTest {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSSpellServer {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSSpellServer {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUserNotification {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUserNotification {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUserNotificationAction {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUserNotificationAction {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUserNotificationCenter {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUserNotificationCenter {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUserScriptTask {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUserScriptTask {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUserUnixTask {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUserUnixTask {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUserAppleScriptTask {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUserAppleScriptTask {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
unsafe impl objc2::encode::RefEncode for NSUserAutomatorTask {
    const ENCODING_REF: objc2::encode::Encoding = objc2::encode::Encoding::Pointer(&<Self as objc2::encode::Encode>::ENCODING);
}
unsafe impl objc2::encode::Encode for NSUserAutomatorTask {
    const ENCODING: objc2::encode::Encoding = objc2::encode::Encoding::Object;
}
