val test1: Int /* by */ field = Cell(value = 1) @A(x = "test1.get") get(): Int { return #test1$delegate.getValue(thisRef = null, kProp = ::test1) } var test2: Int /* by */ field = Cell(value = 2) @A(x = "test2.get") get(): Int { return #test2$delegate.getValue(thisRef = null, kProp = ::test2) } @A(x = "test2.set") set(@A(x = "test2.set.param") : Int) { return #test2$delegate.setValue(thisRef = null, kProp = ::test2, newValue = ) } open annotation class A : Annotation { val x: String field = x get constructor(x: String) /* primary */ { super/*Any*/() /* () */ } } class Cell { var value: Int field = value get set constructor(value: Int) /* primary */ { super/*Any*/() /* () */ } operator fun getValue(thisRef: Any?, kProp: Any?): Int { return .() } operator fun setValue(thisRef: Any?, kProp: Any?, newValue: Int) { .( = newValue) } }