// WITH_STDLIB // WITH_REFLECT // DUMP_LOCAL_DECLARATION_SIGNATURES // MUTE_SIGNATURE_COMPARISON_K2: ANY // ^ KT-57430 import kotlin.properties.ReadWriteProperty import kotlin.reflect.KClass import kotlin.reflect.KProperty class SettingType( val type : KClass ) class SettingReference>( var t : T, var v : V ) class IdeWizard { var projectTemplate by setting(SettingReference(SettingType(42::class), 42)) private fun > setting(reference: SettingReference) = object : ReadWriteProperty { override fun setValue(thisRef: Any?, property: KProperty<*>, value: V?) { if (value == null) return reference.t = SettingType(value::class) as T reference.v = value } override fun getValue(thisRef: Any?, property: KProperty<*>): V? { return reference.v } } }