text: Перечислим некоторые из них: поиск и модификация конструкций исходного кода (блоков, классов, методов, интерфейсов (протоколов) и т. п.) как объектов первого класса во время выполнения; изменение имён классов и функций во время выполнения; анализ и выполнение строк кода, поступающих извне; создание интерпретатора байткода нового языка.