import kotlin.reflect.KProperty0 class Sample { companion object { const val maxValue = 1 } } abstract class Checker { fun check(): String { return run( Sample::maxValue, { x -> x == 1 } ) } abstract fun run(method: KProperty0, fn: (T1) -> Boolean): String } fun box(): String { var result = ( object : Checker() { override fun run(method: KProperty0, fn: (T1) -> Boolean): String { return "OK" } } ).check() return result }