Data class inheritance

Delegation in the kotlin style still means that FooBar inherits from Foo and Bar. Do you mean composition? Then you can generate getters and setters for the properties of the component types.

Also this is something that could easily be done with annotation processing. Given an input like this

data class Foo(val x: A, var y: B)
data class Bar(val z: C)
data class FooBar(@GenerateAccessors foo: Foo, @GenerateAccessors bar: Bar)

you can use kapt to generate the following extension properties

val FooBar.x get() = foo.x
val FooBar.y
   get() = foo.y
   set(value) { foo.y = value}
val FooBar.z get() = bar.z

This would also work for non data classes which means that it can work with java classes. The only problem is that it might be a bit harder to find the right getters and setter if you don’t rely on kotlin meta data, but it should still be possible.