``` state::class.declaredMemberProperties ...
# reflect
a
Copy code
state::class.declaredMemberProperties
        .filter { (it::get).call(state) !== null }
        .map { (it::get).call(state) }
        .filter { it!!::class.companionObject !== null }
        .forEach {
            val clazz = it!!
            val companion = clazz::class.companionObject

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