GroovyのAST変換はcompiler phasesで定義されている9つのうちの一つで実行されなければなりません。
グローバル変換は任意のフェーズで適用される可能性がありますが、ローカル変換は意味解析フェーズかその後でのみ適用される可能性があります。手短かに言えばコンパイラフェーズは、
一般的に言えば、後フェーズになるほど、より多くの型情報を扱えるようになります。
もし変換がAST読み込みフェーズの場合、より豊富な後フェーズよい選択となるかもしれません。
もし変換がAST書き込みフェーズの場合、木がまばらな初期フェーズが便利かもしれません。
具体例として、Groovyの積極的で静的型付け、クラスの静的プロパティをここに示します。
なので、もしAST変換で静的プロパティを作りたい場合は、このチェックが実行される前にフックする必要があります。とりわけ、これは変換フェーズです(意味解析部分が捕獲されるところ)。早期のフェーズを使用したとしても、ほとんどの型は解決されていません。そしてだから型解決する限りにおいて重要な意味があります(例として、特定クラスへのアノテーション)。そして手巻きしなければならなくなります。
ASTが各々のフェーズで何を生成するかを学ぶために、GroovyコンソールのASTビューワを利用することで、違ったフェースでの出力を調査することができます。