Delegated properties let you reuse getter/setter logic (lazy initialization, observable changes, validation) without boilerplate. You delegate the property to another object that provides `getValue`/`setValue`.
var name: String by Delegates.observable("<init>") { _, old, new ->
println("$old -> $new")
}
name = "Ala"