title: Require a possibly nullable generic to be not null
body: <p>In Kotlin I'm able to write a function which takes a generic possibly nullable argument from a super class - let's call it <code>Person</code> - and returns the exact same type like this:</p>
  
  <pre><code>fun &lt;V: Person?&gt; identity(arg1: V): V = arg1
  
  val p1: Person? = identity(null) // works fine
  val p2: Person = identity(Person()) // works fine
  val p3: Person = identity(null) // does not work
  </code></pre>
  
  <p>Is it also possible to write a function like the one above which takes a second argument of type <code>V</code> which must not be null? I think about something like this where <code>arg2</code> can not be null:</p>
  
  <pre><code>fun &lt;V: Person?&gt; identity(arg1: V, args2: V): V
  </code></pre>
  
  <p>Not that both args should have the exact same type so <code>&lt;V: Person?, W: Person&gt;</code> would not work.</p>