``` typedef __attribute__((NSObject)) struct Foo *FooRef; NSArray<FooRef> *array; ``` Currently gives you the error `type argument 'FooRef' (aka 'const struct Foo *') is neither an Objective-C object nor a block type` which is not true given that it has `__attribute__((NSObject))` and as per https://clang.llvm.org/docs/AutomaticReferenceCounting.html#retainable-object-pointers is a retainable type.