Custom getter/setter for properties created by type params

Hi! I found one behavior I don’t understand:

class User( nameParam: String ) {
    var name : String = nameParam  // why is nameParam saved directly into name.field here ?!?
        set(value) {
            println("Set is invoked")
            field = value.toUpperCase() + "!!!"
        }
}

fun main(args: Array<String>) {
    val ivan = User("Ivan")  // <<- setter is not invoked here!
    println(ivan.name)

    ivan.name = "Ivan" // <<- but now it is invoked 
    println(ivan.name)
}

Result of execution I expect:

Set is invoked
IVAN!!!
Set is invoked
IVAN!!!

BUT I SEE THIS:

Ivan
Set is invoked
IVAN!!! 

(tested on https://try.kotlinlang.org on all available Kotlin’s versions)