Sorry if I’m being unclear, but my argument is this:
If you have have initialization order issues, rather than wanting to modify the language to better support complex initialization schemes, rather try to make your initialization scheme simpler.
We do know that overriding a val with a val is weird. The solution is not to do that.
Relying on laziness will make accidental cycles more likely. Instead, organize you initialization to make the order more clear.