In Objective-C, it's common for some frameworks to mark some methods like init as unavailable in the @interface to prohibit their usage.
However, these frameworks then often implemented said method and refer to it in another method that acts as a factory for that object. The recent change to how messages to self are type checked in clang (r349841) introduced a regression which started to prohibit this pattern with an X is unavailable error. This patch addresses the aforementioned regression.
rdar://47134898
Maybe add a sentence: In this context, we interpret unavailable as a form of access control.