private Statement lazyBody(ClassNode classNode, FieldNode fieldNode) {
final Expression instanceExpression = varX(fieldNode);
return ifElseS(
notNullX(instanceExpression),
returnS(instanceExpression),
new SynchronizedStatement(
classX(classNode),
ifElseS(
notNullX(instanceExpression),
returnS(instanceExpression),
returnS(assignX(instanceExpression, ctorX(classNode)))