class SynchronizedProperty {
  synchronized def bar
}
-----
public class SynchronizedProperty extends groovy.lang.GroovyObjectSupport implements groovy.lang.GroovyObject {
public java.lang.Object getBar() {
return null;
}

public void setBar(java.lang.Object bar) {
return ;
}

public java.lang.Object getProperty(java.lang.String property) {
return null;
}

public void setProperty(java.lang.String property, java.lang.Object newValue) {
return ;
}

public java.lang.Object invokeMethod(java.lang.String name, java.lang.Object args) {
return null;
}

public groovy.lang.MetaClass getMetaClass() {
return null;
}

public void setMetaClass(groovy.lang.MetaClass metaClass) {
return ;
}

private java.lang.Object bar = null;
}
---