public class methodParamInClosureImplicitReturn extends groovy.lang.Script {
public static void main(java.lang.String[] args) {
new methodParamInClosureImplicitReturn(new groovy.lang.Binding(args)).run();
}

public java.lang.Object run() {

return null;

}

public void foo(int x) {final groovy.lang.Reference<java.lang.Integer> i = new groovy.lang.Reference<java.lang.Integer>(x);

org.codehaus.groovy.runtime.DefaultGroovyMethods.each(new java.util.ArrayList<java.lang.Integer>(java.util.Arrays.asList(1, 2, 3)), new groovy.lang.Closure<java.lang.Integer>(this, this) {
public java.lang.Integer doCall(java.lang.Integer it) {
print(i.get());
return setGroovyRef(i, i.get() + 1);
}

public java.lang.Integer doCall() {
return doCall(null);
}

});

org.codehaus.groovy.runtime.DefaultGroovyMethods.each(new java.util.ArrayList<java.lang.Integer>(java.util.Arrays.asList(1, 2, 3)), new groovy.lang.Closure<java.lang.Integer>(this, this) {
public java.lang.Integer doCall(java.lang.Integer it) {
print(i.get());
i.set(i.get() + 1);
return i.get();
}

public java.lang.Integer doCall() {
return doCall(null);
}

});

print(i.get());
}

public methodParamInClosureImplicitReturn(groovy.lang.Binding binding) {
super(binding);
}
public methodParamInClosureImplicitReturn() {
super();
}
private static <T> T setGroovyRef(groovy.lang.Reference<T> ref, T newValue) {
ref.set(newValue);
return newValue;
}}
