Entendendo a sintaxe groovy em uma definição de tarefa gradle

Eu sou novo no Gradle e no Groovy e estou tentando entender o que está acontecendo no nível do groovy quando uma tarefa do gradle é definida.

task hello  { 
   println "configuring task hello" 
   doLast {
     println "hello there" 
   }
}

Ao ler o livro "Gradle In Action", sei que otask hello {} é realmente uma chamada para otask() método do groovyProject interface. Na página 77, mostra que existem 4 métodos chamados tarefa noProject interface

task(args: Map<String,?>, name:String)
task(args: Map<String,?>, name:String, c:Closure)
task(name: String)
task(name: String, c:Closure)

Eu entendo que o{} é o corpo de fechamento.

O que eu não entendo é como o groovy interpretahello notask hello { } de acordo comhttps://stackoverflow.com/a/25592665/438319 existe um plug-in compilador groovy que convertetask hello { } para dentrotask('hello', { })

Minhas perguntas:

Onde posso encontrar informações sobre o plug-in do Gradle Groovy Compiler que faz a conversão?

A alegação de que os scripts Gradle são programas groovy tecnicamente incorretos, já que o gradle de alguma forma estende a linguagem de programação Groovy?

Existe uma maneira de obter ogradle comando para imprimir o código groovy base que é gerado após a execução do plug-in do compilador?

questionAnswers(1)

yourAnswerToTheQuestion