¿Cuál es una forma adecuada de crear una instancia de class a partir de KType?

Tengo dos classs que pueden verse así

class MyClass { var myProperty: AnotherClass? } class AnotherClass { } 

A través de la reflexión, repito las properties de MyClass y cuando encuentro un KMutableProperty<*> que es nulo, quiero crear una instancia de esa class. En este momento estoy haciendo algo como esto

 val instance = MyClass() val property = MyClass::myProperty var subInstance = it.getter.call(instance) if (subInstance == null) { it.setter.call(instance, property.returnType.jvmErasure.createInstance()) } 

pero esto parece un truco terrible que necesita conocer aspectos internos y usar la magia de Java en lugar de ser Kotlin puro, ¿hay una forma adecuada de hacer lo que quiero? ¿O es esta la manera correcta?

Puede usar (property.returnType.classifier as KClass).createInstance() lugar.