Идея довольно проста. Есть некоторая функция с ресивером, отражающим контекст отрисовки. Теперь берем именно эту функцию, выдираем ее и подставляем ей свой ресивер, который будет отрисовывать все в нашем теством окошке. Это можно сделать даже без очень большой компиляторной магии. Достаточно выдрать функцию и скормить ей другой ресивер
компиляторная магия начинается, когда мы этот код скармливаем другому компилятру. Например если этот блок на JVM, а мы подменяем ресивер и скармливаем JS-компилятору