Модель предметной области сложна. Поэтому её построение выполняется в несколько этапов.

Но главное - модель предметной области содержит циклы (объекты ссылаются друг на друга, связаны между собой в двух направлениях).
В то время, как API для потоков - одномерное. Вперёд-вперёд-вперёд.

Логично ли тащить модель потоков до самого верха?
Делать поток токенов?

Может быть сразу разбивать процесс анализа на направления (например разбиение на строки для текстового процессора, подсветка синтаксиса, вычисление типов), и предоставлять с каждого этапа специфичное для этого этапа API ?