Groovy :: Mapa Encontre Recursivo

Edita Veja a solução da @ tim abaixo para obter a abordagem "correta" no estilo Groovy para mapear a recursão. Como o Map findRecursive ainda não existe no Groovy, se você precisar dessa funcionalidade em várias partes do seu aplicativo, adicione-o ao Map metaClass:

Map.metaClass.findRecursive = {String key->
    if(delegate.containsKey(key)) return delegate."$key"
    else
        for(m in delegate) {
            if(m.value in Map) return m.value.findRecursive(key)
        }
}
// then anywhere in your app
someMap.findRecursive('foo')

Origina Esperava que algo como findResult {it.key == 'foo'} se repetisse nos elementos do mapa além de 1 d de profundidade, mas parece não ser esse o cas

Rolled meu próprio localizador de mapa recursivo, mas estou querendo saber se há uma maneira melhor de fazer isso. Talvez exista uma função interna que esteja faltando ou uma maneira ainda mais Groovier (concisa) de executar o abaixo:

Map map = [school:[id:'schoolID', table:'_school',
    children:[team:[id:'teamID',table:'_team',
        children:[player:[id:'playerID',table:'_roster']]
    ]]
]]

class Foo {
    static finder = {Map map, String key->
        if(map.containsKey(key)) return map[key]
        else
            for(m in map) {
                if(m.value in Map) return this.finder(m.value,key)
            }
    }
}
println Foo.finder(map,'team') 

questionAnswers(1)

yourAnswerToTheQuestion