As mentioned by @Elberet in #23 and #25, to benefit from other plugins transformation process, the plugin should run in the Program#exit phase. This ensures that e.g. custom code for TypeScript isn't needed to process e.g. the constructor parameter properties, or to let the decorator plugin handle them. But therefore the plugin still needs to partially run in the Program#enter phase to collect informations about imports, custom decorators or any processing relevant information which may get lost during the transformation phase.