Quoting Kotlin documentation on 'Backing properties'.
A backing field will be generated for a property if it uses the default implementation of at least one of the accessors, or if a custom accessor references it through the
fieldidentifier.For example, there would be no backing field in the following case:
val isEmpty: Boolean get() = this.size == 0
At least one of the accessors (setter) is using the default implementation, then why would there be no backing field in the above case?