Publication
Every newly created object goes through several initialization states: starting from a state where all fields are uninitialized until all of them are assigned. Any operation on the object during its initialization process, which usually happens in the constructor via this, has to observe the initialization states of the object for correctness, i.e. only initialized fields may be used. Checking safe usage of this statically, without manual annotation of initialization states in the source code, is a challenge, due to abasing and virtual method calls on this.
Martin Odersky, Yichen Xu, Aleksander Slawomir Boruch-Gruszecki
Romain Christophe Rémy Fleury, Bakhtiyar Orazbayev, Matthieu Francis Malléjac, Stefan Rotter