Inferencia incorrecta para el parámetro de tipo reificado en Kotlin

Dado el siguiente código en Kotlin:

import com.fasterxml.jackson.module.kotlin.* data class MyReply<R> ( val results : Array<R>? = null ) class ErrorClient() { val JSON = jacksonObjectMapper() inline fun<reified R> request(): Array<R>? { val json_in = """{"results": [2]}""" val res: MyReply<R> = JSON.readValue(json_in) return res.results } fun read(): Array<Int>? { val res: Array<Int>? = request() return res } } 

y las siguientes testings:

 import org.junit.Test class ErrorTest { val client = ErrorClient() @Test fun `direct`() { val res: Array<Int>? = client.request() println(res) } @Test fun `indirect`() { val res : Array<Int>? = client.read() println(res) } } 

Cuento corto: la primera testing pasa y la segunda falla. ¿Por qué?

Larga historia: estoy experimentando una inferencia de tipo incorrecto del parámetro reificado R cuando llamo a la function en línea a través del método de class read() , pero funciona la llamada directa a request() . En el caso indirecto, se deduce erróneamente que el tipo es java.lang.Object y, por lo tanto, la testing falla con

 java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer; at ErrorClient.read(Error.kt:17) at ErrorTest.indirect(ErrorTest.kt:14) 

    Esto no se trata de reified . Probé el código con

     val res: MyReply<R> = MyReply() 

    No arroja ningún error. Este problema es su JSON.readValue devuelve un Object lugar de Integer . Kotlin intenta lanzarlo a Integer pero falla.