public class X { public void foo() { final groovy.lang.Reference<java.lang.Integer> ab = new groovy.lang.Reference<java.lang.Integer>(4); org.codehaus.groovy.runtime.DefaultGroovyMethods.each(this, new groovy.lang.Closure<X>(this, this) { public X doCall(java.lang.Object it) { return org.codehaus.groovy.runtime.DefaultGroovyMethods.each(X.this, new groovy.lang.Closure<java.lang.Integer>(X.this, X.this) { public java.lang.Integer doCall(java.lang.Object it) { return setGroovyRef(ab, 2); } public java.lang.Integer doCall() { return doCall(null); } }); } public X doCall() { return doCall(null); } }); org.codehaus.groovy.runtime.DefaultGroovyMethods.print(this, ab.get()); } private static <T> T setGroovyRef(groovy.lang.Reference<T> ref, T newValue) { ref.set(newValue); return newValue; }}