Verificación del tipo genérico del método Kotlin

Intento escribir un método que tome un KProperty1 y un object de R como

inline fun <T: Any, R: Any> List<T>.test(prop1: KProperty1<T, R>, prop2: R): List<T> 

excepto que no estoy recibiendo verificación de tipo en prop2. ¿Hay alguna manera de asegurar que prop2 es de tipo R?

Aquí hay un ejemplo más completo

 class Foo class Bar(val foo: Foo) fun main(args: Array<String>): Unit { val list = listOf(Bar(Foo())) list.test(Bar::foo, Foo()) // This should work list.test(Bar::foo, "") // I want this to be a type error since a string is not a Foo } inline fun <T: Any, R: Any> List<T>.test(prop1: KProperty1<T, R>, prop2: R): List<T> { println(prop1.invoke(this.first())::class == prop2::class) return listOf() }