В Kotlin, как я могу создать экземпляр класса с использованием собственного параметра java?

Я изучаю использование BDB JE (Berkeley DB Java Edition) с Kotlin. Знание BDB не обязательно для ответа на этот вопрос.

У BDB есть метод, который выглядит так:

store.getPrimaryIndex(Int::class.java, "Int", Person::class.java, "Person") 

Я хочу делать вещи в целом, поэтому я написал это

 inline fun <reified TModel : Any, reified TKey : Any> getIndex() = return store.getPrimaryIndex(TKey::class.java, TKey::class.simpleName, TModel::class.java, Model::class.simpleName) 

Все идет нормально. Теперь я хочу передать этот индексный объект классу, который выглядит так:

 class ModelStore<TModel, TKey>(index : PrimaryIndex<TKey, TModel>) { private val index = index fun get(key : TKey): TModel = index.get(key) fun put(model : TModel) = index.put(model) } 

Но если я попытаюсь передать вывод из getIndex<User, Int>() в ModelStore<User, Int> я получаю следующую ошибку:

Ошибка вывода типа: ожидаемое несоответствие типа: тип Inferred – PrimaryIndex<TModel!, TKey!>! но PrimaryIndex<TModel, TKey> .

Мой вопрос: могу ли я передать индекс в ModelStore ? Как мне убедить систему типов, что это кошерная?

Простейшим обходным путем является использование типов:

 ModelStore<User, Int>(getIndex<User, Int>() as PrimaryIndex<User, Int>) 

Также я бы ожидал, что он будет работать без указания типов:

 ModelStore(getIndex<User, Int>())