class IdeWizard { var projectTemplate: Int? /* by */ field = .setting>(reference = SettingReference>(t = SettingType(type = 42::class), v = 42)) get(): Int? { return .#projectTemplate$delegate.getValue(thisRef = , property = IdeWizard::projectTemplate) } set(: Int?) { return .#projectTemplate$delegate.setValue(thisRef = , property = IdeWizard::projectTemplate, value = ) } constructor() /* primary */ { super/*Any*/() /* () */ } private fun > setting(reference: SettingReference): { return { // BLOCK local class : ReadWriteProperty { constructor() /* primary */ { super/*Any*/() /* () */ } override operator fun getValue(thisRef: Any?, property: KProperty<*>): V? { return reference.() } override operator fun setValue(thisRef: Any?, property: KProperty<*>, value: V?) { when { EQEQ(arg0 = value, arg1 = null) -> return Unit } reference.( = SettingType(type = value::class) as T) reference.( = value) } } () } } } class SettingReference> { var t: T field = t get set var v: V field = v get set constructor(t: T, v: V) /* primary */ { super/*Any*/() /* () */ } } class SettingType { val type: KClass field = type get constructor(type: KClass) /* primary */ { super/*Any*/() /* () */ } }