При сборке Android-приложения Java-код сначала компилируется обычным компилятором Java в class-файлы, а потом конвертируется в DEX-файл с помощью R8
(
источник 1,
источник 2)
Kotlin код тоже компилируется в Java байткод, т.к. JVM язык.
Следовательно, если написать Android приложение на Kotlin не задумавшись о JMM, то можно получить Java байткод, который некорректно опысывает ваши намерения, а он будет транслирован в некорректный Dalvik байткод и поведение получится соответствующим.
В общем нужно (на мой взгляд) заморачиваться с изучением
JMM.