You can, apparently, add state to classes with extension properties with almost no overhead (a.k.a. mixins in Kotlin)

Yeah ig you could even use the same delegate that I created and just define the actual extension property inside of a scope using by Delegate(). The problem is that you will need to pass around that context, which sort of increases boilerplate but might actually be more readable in certain cases. For the proper life-time part, I think that as long as you aren’t using like a million of those delegates the overhead is only going to be the Delegate object and the Map object for each property (but not per object, so it isn’t that high and could scale well with a lot of objects of the same type).