// FIR_IDENTICAL import kotlin.reflect.KMutableProperty0 class Module class Context class Model( private val value: KMutableProperty0, private val context: Context ) abstract class Reference { abstract var v : V } class ModuleReference(m : Module) : Reference() { override var v : Module = m } abstract class SettingComponent( val reference: Reference ) { var value: V get() = reference.v set(value) { reference.v = value } } class Component( reference: Reference, context: Context ) : SettingComponent(reference) { private val model = Model(::value, context) }