title: Why covariance is needed in the following example?
body: <p>This might be a dumb question but I cannot wrap my head around this example:</p>
  <pre><code>open class Case&lt;T&gt; {}
  class InheritedCase: Case&lt;Nothing&gt;()
  fun getCase(): Case&lt;out String&gt; = InheritedCase()
  </code></pre>
  <p>Can someone explain why <code>out</code> must be specified and why a compile error is thrown when only using <code>String</code>?</p>