title: Kotlin Generics type parameters
body: <p>At the following source code</p>
  
  <pre><code>fun main(args: Array&lt;String&gt;) {
      println("Hello, world!")
  
      val mutableIntList = mutableListOf(1, 2, 3)
  
      addInt(4, mutableIntList) // No compile-time error
      addAnotherInt(5, mutableIntList) // Compile-time error
  
      println(mutableIntList)
  
  }
  
  fun &lt;T: Number&gt; addInt(item:T,
                         list:MutableList&lt;in T&gt;){
      list.add(item)
  }
  
  fun &lt;T: Number&gt; addAnotherInt(item:T,
                                list:MutableList&lt;in Number&gt;){
      list.add(item)
  }
  </code></pre>
  
  <p>The functions <code>addInt</code> and <code>addAnotherInt</code> take as an argument a contravariant <code>MutableList</code> of <code>Number</code>. But at the <code>main</code> function one line compiles normally and the other is not. </p>
  
  <p>I also checked the generated java code from these functions and they seem identical.</p>
  
  <p>What could be the difference between the functions <code>addInt</code> and <code>addAnotherInt</code>?</p>