クロージャー内のクロージャーで親のクロージャーを再帰的に呼ぶ方法は?

タイトルが既によくわからない。

ネストしているクロージャーで親のクロージャーを呼べないか?と言うこと。
まぁ、コード見てください。

フォルダ内の全てのファイル名を出力

def f = {}
f = {
  if (it.isFile()) {
    println it
  } else {
    it.eachFile{
      f(it)
    }
  }
}
def str =/C:\work/
f(new File(str))

通常、再帰的な処理を行う場合にはクロージャー内でcallメソッドを使用すれば自分を呼び出せますが、↑のような場合callするとeachFileのクロージャーが呼ばれちゃいます。

なんかうまい方法ないんですかね?
というか、見た目も悪いし設計の問題かな??

// 初gist。
// デフォルトだと背景色が酷かったので↓参考にcss修正してみた。
// http://d.hatena.ne.jp/snaka72/20081218/1229622900

追記(2011/08/06)
3bcさんにコメントでowner.call()を使用すれば親を呼べることを教えていただきました。