A lot of the language rules are required to make its approach to nullability work. Hence odd keywords like "lateinit var".