Ответ
При компиляции Kotlin-кода с расширением класса (extension function), байт-код будет содержать статический метод в классе-компаньоне (если функция объявлена в файле) или в отдельном классе. Этот метод принимает первым параметром экземпляр класса, который расширяется.
Пример:
fun String.addExclamation() = "$this!"
В байт-коде это превратится примерно в:
public static String addExclamation(String receiver) {
return receiver + "!";
}
Расширения не модифицируют исходный класс, а являются синтаксическим сахаром. Вызов "Hi".addExclamation() в байт-коде будет заменён на статический вызов StringExtensionsKt.addExclamation("Hi").