``` state::class.primaryConstructor!!.parameters ...
# reflect
a
Copy code
state::class.primaryConstructor!!.parameters
        .filter {
            val clazz = it.type.classifier!! as KClass<*>
            clazz.companionObject !== null
        }
        .map {
            val clazz = it.type.classifier as KClass<*>
            val companion = clazz.companionObject!!

            listOf(clazz, companion)
        }
        .forEach {
            val clazz = it[0]
            val companion = it[1]

            companion.declaredFunctions.forEach { f ->
                if (f.name === "persist") {
                    println(companion.javaObjectType)
                    println(clazz.javaObjectType)
                    val params = f.parameters
                    f.callBy(
                        mapOf(
                            params[0] to companion.objectInstance,
                            params[1] to context,
                            params[2] to clazz.createInstance()
                        )
                    )
                }
            }
        }