<span class="hljs-keyword">func</span> <span class="hljs-title function_">f1</span><
<span class="hljs-type">X</span>,
<span class="hljs-type">Y</span>: <span class="hljs-type">A</span>,
<span class="hljs-comment">// documentation</span>
<span class="hljs-type">Z</span>: <span class="hljs-type">B</span> & <span class="hljs-type">C</span><<span class="hljs-type">D</span>>
>() <span class="hljs-keyword">where</span> <span class="hljs-type">X</span> <span class="hljs-operator">==</span> <span class="hljs-type">Y</span>, <span class="hljs-type">Y</span>: <span class="hljs-type">A</span>, <span class="hljs-type">Z</span>: <span class="hljs-type">B</span> & <span class="hljs-type">C</span><<span class="hljs-type">D</span>> { }
<span class="hljs-keyword">func</span> <span class="hljs-title function_"><</span> <<span class="hljs-type">T</span>>() { }
<span class="hljs-keyword">func</span> <span class="hljs-title function_">f2</span>(<span class="hljs-keyword">_</span> <span class="hljs-params">p</span>: <span class="hljs-keyword">@escaping</span> () <span class="hljs-keyword">throws</span> -> <span class="hljs-type">Void</span>) <span class="hljs-keyword">rethrows</span> -> <span class="hljs-keyword">some</span> <span class="hljs-type">Collection</span> { }
<span class="hljs-keyword">func</span> <span class="hljs-title function_">f3</span>(
<span class="hljs-params">p1e</span> <span class="hljs-params">p1i</span>: <span class="hljs-keyword">inout</span> <span class="hljs-type">Int</span> <span class="hljs-operator">=</span> <span class="hljs-number">5</span>,
<span class="hljs-keyword">_</span> <span class="hljs-params">p2</span>: (x: <span class="hljs-type">Int</span>, y: <span class="hljs-type">Int</span>),
<span class="hljs-params">p3</span>: (var: <span class="hljs-type">Int</span>, let: <span class="hljs-type">Int</span>) <span class="hljs-keyword">throws</span> -> <span class="hljs-type">Int</span>,
<span class="hljs-params">p4</span>: <span class="hljs-type">Int</span>...
<span class="hljs-params">p5</span>: <span class="hljs-meta">@attribute</span> <span class="hljs-type">String</span>? <span class="hljs-operator">=</span> <span class="hljs-string">"text"</span>
) { }
<span class="hljs-keyword">init</span><<span class="hljs-type">X</span>: <span class="hljs-type">A</span>>(<span class="hljs-keyword">_</span> <span class="hljs-params">p</span>: <span class="hljs-meta">@attribute</span> <span class="hljs-keyword">inout</span> (x: <span class="hljs-type">Int</span>, var: <span class="hljs-type">Int</span>) <span class="hljs-operator">=</span> (<span class="hljs-number">0</span>, <span class="hljs-number">0</span>)) { }
<span class="hljs-keyword">init?</span>(<span class="hljs-keyword">_</span> <span class="hljs-params">p</span>: <span class="hljs-meta">@attribute</span> <span class="hljs-keyword">inout</span> (x: <span class="hljs-type">Int</span>, var: <span class="hljs-type">Int</span>) <span class="hljs-operator">=</span> (<span class="hljs-number">0</span>, <span class="hljs-number">0</span>)) { }
<span class="hljs-keyword">init!</span> (<span class="hljs-keyword">_</span> <span class="hljs-params">p</span>: <span class="hljs-meta">@attribute</span> <span class="hljs-keyword">inout</span> (x: <span class="hljs-type">Int</span>, var: <span class="hljs-type">Int</span>) <span class="hljs-operator">=</span> (<span class="hljs-number">0</span>, <span class="hljs-number">0</span>)) { }
<span class="hljs-keyword">subscript</span><<span class="hljs-type">X</span>: <span class="hljs-type">A</span>>(<span class="hljs-keyword">_</span> <span class="hljs-params">p</span>: <span class="hljs-meta">@attribute</span> <span class="hljs-keyword">inout</span> (x: <span class="hljs-type">Int</span>, var: <span class="hljs-type">Int</span>) <span class="hljs-operator">=</span> (<span class="hljs-number">0</span>, <span class="hljs-number">0</span>)) { }
<span class="hljs-keyword">protocol</span> <span class="hljs-title class_">Comparable</span>: <span class="hljs-title class_">Equatable</span> {
<span class="hljs-keyword">static</span> <span class="hljs-keyword">func</span> <span class="hljs-title function_"><</span> (<span class="hljs-params">lhs</span>: <span class="hljs-keyword">Self</span>, <span class="hljs-params">rhs</span>: <span class="hljs-keyword">Self</span>) -> <span class="hljs-type">Bool</span>
<span class="hljs-keyword">static</span> <span class="hljs-keyword">func</span> <span class="hljs-title function_"><=</span> (<span class="hljs-params">lhs</span>: <span class="hljs-keyword">Self</span>, <span class="hljs-params">rhs</span>: <span class="hljs-keyword">Self</span>) -> <span class="hljs-type">Bool</span>
<span class="hljs-keyword">static</span> <span class="hljs-keyword">func</span> <span class="hljs-title function_">></span> (<span class="hljs-params">lhs</span>: <span class="hljs-keyword">Self</span>, <span class="hljs-params">rhs</span>: <span class="hljs-keyword">Self</span>) -> <span class="hljs-type">Bool</span>
<span class="hljs-keyword">static</span> <span class="hljs-keyword">func</span> <span class="hljs-title function_">>=</span> (<span class="hljs-params">lhs</span>: <span class="hljs-keyword">Self</span>, <span class="hljs-params">rhs</span>: <span class="hljs-keyword">Self</span>) -> <span class="hljs-type">Bool</span>
}