Non null val initialization: alternative to lateinit/Delegates.notNull()

Unless I am missing something (and I was based on my next reply), in your example can’t you just use interface for Parent:

interface Parent {
	val type: String
	val commonProperty1: Any
	val commonProperty2: Any
	/* and so on with all common properties */
}

or if it really needs to be an abstract class just make the properties abstract in the parent:

abstract class Parent {
	abstract val type: String
	abstract val commonProperty1: Any
	abstract val commonProperty2: Any
	/* and so on with all common properties */
}