¿Por qué == crea error de compilation en diferentes types en Kotlin?

El siguiente código no puede ser comstackdo:

if ("2" == 3) { //do something } 

Error: Kotlin: Operator '==' cannot be applied to 'String' and 'Int'

Sin embargo, Kotlin dice que esto es igualdad estructural y se traduce en a?.equals(b) ?: (b === null) : https://kotlinlang.org/docs/reference/equality.html .

Entonces, ¿qué está pasando realmente aquí? ¿Como funciona?