<div dir="ltr">On 30 October 2017 at 22:38, Adam Kemp <span dir="ltr">&lt;<a href="mailto:adam_kemp@apple.com" target="_blank">adam_kemp@apple.com</a>&gt;</span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space"><div><div><br></div><div>“specialprivate&quot;, by allowing any extension to access the API, would imply the same set of files as either internal or public. You can’t know ahead of time whether some random file in your module might make an extension that access that API so you have to search all files within that module. You would perform the search exactly the same way. It doesn’t help you as a library maintainer. You’re not going to save work by making something “specialprivate” instead of internal. Worst case is you actually convince yourself that you don’t have to search the whole module, and then you break something because of that misunderstanding. That’s why internal is better. It avoids obfuscating the actual implications of that access level.</div></div></div></blockquote></div><br></div><div class="gmail_extra">i still see a value in it:</div><div class="gmail_extra"><br></div><div class="gmail_extra">- i do a search for, say, &quot;foo&quot; (all files in the module)</div><div class="gmail_extra">- let&#39;s say 50 usages will be legitimate use from within the class or it&#39;s extensions</div><div class="gmail_extra">- another 10 usages will be wrong, that mistakenly treated it&#39;s &quot;internal / public&quot; as a permission to use.</div><div class="gmail_extra">- i found those instances which shall not be there (that mistakenly use it as it is effectively public)</div><div class="gmail_extra">- i ask developers who did it to not do this again / fix the problem / etc</div><div class="gmail_extra">- some time later i can do the same mistake myself again or other people will do the same mistake again and the process repeats.</div><div class="gmail_extra">- compiler doesn&#39;t help as it can&#39;t check</div><div class="gmail_extra">- it becomes a manual and error prone process</div><div class="gmail_extra"><br></div><div class="gmail_extra">&quot;classprivate&quot; helps to resolve this problem. if it is marked so developer will at least think twice before making an extension to use it - similar to how marking a method &quot;protected&quot; stops people from using it without subclassing - (and creating an extension for the sole purpose of using despite of it&#39;s access level would qualify as &quot;cheating&quot;, which we can leave aside). with &quot;internal / public&quot; there is nothing stopping them for a second and they can use it without even realising they are doing something wrong. all IMHO.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Mike<br></div><div class="gmail_extra"><br></div></div>