Here's an interesting discussion of Tennent's Correspondence Principle, and a brief description from Neal Gafter:
The principle dictates that an expression or statement, when wrapped in a closure and then immediately invoked, ought to have the same meaning as it did before being wrapped in a closure. Any change in semantics when wrapping code in a closure is likely a flaw in the language.
Does the Groovy language follow this principle?