ファイラ

まだストリーム開けるだけ。

/**
 * @when
 */
public void always(Filer filer, CtClass<?> klass) throws IOException {
  // 宣言以外はいらない (1)
  if (!klass.isMaster()) {
    return;
  }
  CtFolder folder = filer.getFolder("sample/tmp/filer"); // (2)
  CtFile file = folder.getFile(klass.getName()); // (3)
  PrintWriter writer = new PrintWriter(file.openOutputStream()); // (4)
  try {
    writer.println(klass.toString()); // (5)
  }
  finally {
    writer.close(); // (6)
  }
}

という感じのファイラを動かすHack。
Eclipse上で動作させる場合、ルートフォルダがIWorkspaceRootで、その直下のフォルダがIProjectです。
上記のプログラムでは、

  1. クラス/列挙型のうち、宣言(マスタ参照)を探す
  2. "sample"プロジェクトの "tmp/filer" フォルダを取得。現時点で存在していなければファントムとして扱う
  3. (2)のフォルダの下に(1)で探した型の完全限定名と同じ名前のファイルを作成
  4. (3)のファイルに書き込むストリームを開く
  5. 書き込み
  6. 閉じる(現在の実装ではここでコミット)

ファントムを扱えるため、トランザクション切ってワーキングコピーに書き出す→最後にコミットとかやりたいところだけど、Eclipseに関して不勉強なので後回しに。