pub trait NSArray: Sized {
    // Required methods
    unsafe fn init(self) -> *mut Object;
    unsafe fn count(self) -> u64;
    unsafe fn arrayByAddingObjectFromArray(
        self,
        object: *mut Object
    ) -> *mut Object;
    unsafe fn arrayByAddingObjectsFromArray(
        self,
        objects: *mut Object
    ) -> *mut Object;
    unsafe fn objectAtIndex(self, index: u64) -> *mut Object;
    // Provided methods
    unsafe fn array(_: Self) -> *mut Object { ... }
    unsafe fn arrayWithObjects(_: Self, objects: &[*mut Object]) -> *mut Object { ... }
    unsafe fn arrayWithObject(_: Self, object: *mut Object) -> *mut Object { ... }
}