Swift3 changes to UnsafeMutablePointer
<p>I am porting one of my iOS Apps to Swift3 / Xcode8. 
I have embedded a C library, which expects a function parameter of type: </p>

<pre><code>char ***
</code></pre>

<p>In Swift2.3 this was translated into a:</p>

<pre><code>UnsafeMutablePointer&lt;UnsafeMutablePointer&lt;UnsafeMutablePointer&lt;Int8&gt;&gt;&gt;
</code></pre>

<p>So i could declare that pointer in my swift code like that:</p>

<pre><code>let myPointer = UnsafeMutablePointer&lt;UnsafeMutablePointer&lt;UnsafeMutablePointer&lt;Int8&gt;&gt;&gt;.alloc(1)
</code></pre>

<p>This worked well until i updated to Xcode8 with Swift3, now i am getting a compiler error:</p>

<pre><code>Cannot convert value of type 'UnsafeMutablePointer&lt;UnsafeMutablePointer&lt;UnsafeMutablePointer&lt;Int8&gt;&gt;&gt;' to expected argument type 'UnsafeMutablePointer&lt;UnsafeMutablePointer&lt;UnsafeMutablePointer&lt;Int8&gt;?&gt;?&gt;!'
</code></pre>

<p>Can i anybody help me to understand the changes in swift3? What does this Optional, Optional, Implicit Unwrapped Optional (?) mean in this context and how i can i declare a pointer with this type?</p>