if (fieldStrictness[i] && SCJavaDefn.canTypeBeUnboxed(fieldTypes[i])) {
jf = new JavaField.Instance (null, javaFieldNames[i], SCJavaDefn.typeExprToTypeName(fieldTypes[i]));
jf = SCJavaDefn.boxExpression(fieldTypes[i], jf);
javaMethod.addStatement(new ReturnStatement(jf));
} else {
JavaField field = new JavaField.Instance (null, javaFieldNames[i], JavaTypeNames.RTVALUE);
jf = field;
if (!fieldStrictness[i]) {
// We have a non-strict field of type RTValue. In order to reduce space usage
// we want to update the field value to be the result of the original suspension.
// If the field value is an RTResultFunction we want to re-assign the field with