<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">Greet</span> {
    <span class="hljs-keyword">public</span> Either&lt;Integer, String&gt; <span class="hljs-title function_">f</span><span class="hljs-params">(<span class="hljs-type">int</span> val)</span> {
        <span class="hljs-keyword">new</span> <span class="hljs-title class_">Type</span>();
        <span class="hljs-keyword">if</span> (val) {
            <span class="hljs-keyword">return</span> getType();
        } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (!val) {
            <span class="hljs-keyword">throw</span> getError();
        }
    }
}

<span class="hljs-keyword">sealed</span> <span class="hljs-keyword">interface</span> <span class="hljs-title class_">Command</span> <span class="hljs-keyword">permits</span> LoginCommand {
    <span class="hljs-keyword">void</span> <span class="hljs-title function_">run</span><span class="hljs-params">()</span>;
}

<span class="hljs-keyword">non-sealed</span> <span class="hljs-keyword">abstract</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">UserPluginCommand</span> <span class="hljs-keyword">extends</span> <span class="hljs-title class_">Command</span> {
    <span class="hljs-keyword">void</span> <span class="hljs-title function_">runAsUser</span><span class="hljs-params">()</span>;
}
