 way to recover.</p>
<p>The least happy case is (4) because the resulting program will almost
certainly either crash or just silently do the wrong thing.
If this is a new method or you control the callers, you can use
<tt>NSParameterAssert()</tt> (or the equivalent) to check the precondition and
remove the nil return. But if you don't control the callers and they rely on
this behavior, you should return mark the method <tt>_Nonnull</tt> and return
nil <a href="#nullability_intentional_violation">cast to _No