API:
void objc_setAssociatedObject(id _Nonnull object, const void * _Nonnull key,
id _Nullable value, objc_AssociationPolicy policy)
id _Nullable objc_getAssociatedObject(id _Nonnull object, const void * _Nonnull key)
void objc_removeAssociatedObjects(id _Nonnull object)