aimozg
02/12/2017, 2:40 AMlateinit var prop:Type is a
private @JvmField("prop") var prop$backing: Type? = null
var prop: Type
get() = prop$backing ?: throw UPAE()
So if private field is non-null, lateinit property is initialized.
But lateinit is supposed to be a contract "I guarantee the property will be initialized before the first access", so I'd strongly suggest making these fields nullable