Q:

Accessing field of a different instance of the same class in Kotlin

Consider this Kotlin code:
var parent: T?  = null
    get() = if (isParent) this as T else field
    set(value) { field = if (value == null) null else value.parent }

val isParent: Boolean
    get() = parent == null

var description = ""
    get() = if (isParent) field else parent!!.description
    set(value) { if (isParent) field = value else parent!!.description = value }

Assume that isParent returns true if this instance is a parent instance.  If not getParent() will return the parent instance.  In Java you are allowed to access directly field of a different instance of same class like this:
String getDescription() { return getParent().description; }
void setDescription(String value) { getParent().description = value; }

(I am not saying that is a best thing to do, I simplified it for demostration).  Comparing to Java, it would be nice to be able to do following:
var description = ""
    get() = parent.field
    set(value) { parent.field = value }

However this does not work and unfortunately it makes the code less readable.  Especially if you have a lot of such variables, which are bound to this parent. 

A:

A backing field of a property can only be accessed from a getter or setter of that property, and only for the instance on which the getter or setter has been invoked.  If you need to provide multiple ways to access an attribute of a class, you need to define two distinct properties, one of which has a backing field to store the data and another has a getter and setter referring to the first property. 
class Foo {
    var parent: Foo?  = null

    val parentOrSelf: Foo get() = parent ?:  this

    private var _description: String?  = null

    var description = ""
         get() = parentOrSelf._description
         set(value) { parentOrSelf._description = value }
 }

