https://www.lianja.com/doc/index.php/Understanding_Dynamic_Compilation