Property delegation with super

Sometimes I need to add an annotation to a field of a super class. To do this, I write this:

open class B {
    open var x: Int = 0
}

class A : B() {
    @get:SomeAnnotation
    override var x: Int
        get() = super.x
        set(value) {
            super.x = value
        }
}

That’s a lot of code just to annotate an existing field, especially compared to the decorator version:

interface Api {
    var x: Int
}

class B : Api {
    override var x: Int = 0
}

class A(private val b: B) : Api by b {
    @get:SomeAnnotation
    override var x by b::x // short and simple
}

Unfortunately, I can’t use the delegation in example 1:

class A : B() {
    @get:SomeAnnotation
    override var x by super::x // doesn't work
}

Is there another possibility?

Try override var x by B::x. I think this should work.
But why not simply override it and let it alone?

class A : B() {
    @get:SomeAnnotation
    override var x = 0
}

Unfortunately, this leads to a stackoverflow…

I delegate to the parent class, because in my usecase it actually does (or may do) something in the getter or setter and I don’t want to redefine this.