Expression _initializer = field.getInitializer();
boolean _tripleEquals = (_initializer == null);
if (_tripleEquals) {
context.addError(field, "A lazy field must have an initializer.");
}
MutableTypeDeclaration _declaringType = field.getDeclaringType();
String _simpleName = field.getSimpleName();
String _plus = ("_init" + _simpleName);
final Procedure1<MutableMethodDeclaration> _function = new Procedure1<MutableMethodDeclaration>() {
public void apply(final MutableMethodDeclaration it) {
it.setVisibility(Visibility.PRIVATE);
TypeReference _type = field.getType();
it.setReturnType(_type);
Expression _initializer = field.getInitializer();
it.setBody(_initializer);
}
};
_declaringType.addMethod(_plus, _function);
MutableTypeDeclaration _declaringType_1 = field.getDeclaringType();
String _simpleName_1 = field.getSimpleName();
String _firstUpper = StringExtensions.toFirstUpper(_simpleName_1);
String _plus_1 = ("get" + _firstUpper);
final Procedure1<MutableMethodDeclaration> _function_1 = new Procedure1<MutableMethodDeclaration>() {
public void apply(final MutableMethodDeclaration it) {
TypeReference _type = field.getType();
it.setReturnType(_type);
final CompilationStrategy _function = new CompilationStrategy() {
public CharSequence compile(final CompilationStrategy.CompilationContext it) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("if (");
String _simpleName = field.getSimpleName();
_builder.append(_simpleName, "");
_builder.append("==null)");
_builder.newLineIfNotEmpty();
_builder.append(" ");
String _simpleName_1 = field.getSimpleName();
_builder.append(_simpleName_1, " ");
_builder.append(" = _init");
String _simpleName_2 = field.getSimpleName();
_builder.append(_simpleName_2, " ");
_builder.append("();");
_builder.newLineIfNotEmpty();
_builder.append("return ");
String _simpleName_3 = field.getSimpleName();
_builder.append(_simpleName_3, "");
_builder.append(";");
_builder.newLineIfNotEmpty();
return _builder;
}
};
it.setBody(_function);
}
};
_declaringType_1.addMethod(_plus_1, _function_1);
}