Source:
<code>protected Serializable getFieldValue(Field field, String stringValue, ZipFile zip) { Serializable fieldValue = null; Type type = field.getType(); if (type.isSimpleType()) { if (type instanceof SimpleTypeImpl) { type = type.getSuperType(); } if (type instanceof StringType) { fieldValue = stringValue; } else if (type instanceof IntegerType) { fieldValue = Integer.parseInt(stringValue); } else if (type instanceof LongType) { fieldValue = Long.parseLong(stringValue); } else if (type instanceof DateType) { try { Date date; if (stringValue.length() == 10) { date = new SimpleDateFormat("dd/MM/yyyy").parse(stringValue); } else if (stringValue.length() == 8) { date = new SimpleDateFormat("dd/MM/yy").parse(stringValue); } else { log.warn("Unknown date format :" + stringValue); return null; } fieldValue = date; } catch (ParseException e) { log.error("Error during date parsing", e); } } else { log.warn(String.format("Unsupported field type '%s'", type)); return null; } <START> } else if (type.isComplexType()) { if (TypeConstants.CONTENT.equals(field.getName().getLocalName())) { ZipEntry blobIndex = zip.getEntry(stringValue); if (blobIndex != null) { <END> Blob blob; try { blob = Blobs.createBlob(zip.getInputStream(blobIndex)); } catch (IOException e) { throw new NuxeoException(e); } blob.setFilename(stringValue); fieldValue = (Serializable) blob; } } } else if (type.isListType()) { Type listFieldType = ((ListType) type).getFieldType(); if (listFieldType.isSimpleType()) { fieldValue = stringValue.split("\\|"); } } return fieldValue; }</code><technical_language>approaching early return mindset simplify complexity ? find a break if statement I added a boolean:</technical_language>

Target:
protected Serializable getFieldValue(Field field, String stringValue, ZipFile zip) { Serializable fieldValue = null; Type type = field.getType(); if (type.isSimpleType()) { if (type instanceof SimpleTypeImpl) { type = type.getSuperType(); } if (type instanceof StringType) { fieldValue = stringValue; } else if (type instanceof IntegerType) { fieldValue = Integer.parseInt(stringValue); } else if (type instanceof LongType) { fieldValue = Long.parseLong(stringValue); } else if (type instanceof DateType) { try { Date date; if (stringValue.length() == 10) { date = new SimpleDateFormat("dd/MM/yyyy").parse(stringValue); } else if (stringValue.length() == 8) { date = new SimpleDateFormat("dd/MM/yy").parse(stringValue); } else { log.warn("Unknown date format :" + stringValue); return null; } fieldValue = date; } catch (ParseException e) { log.error("Error during date parsing", e); } } else { log.warn(String.format("Unsupported field type '%s'", type)); return null; } } else if (type.isComplexType()) { boolean returnEarly = true; if (TypeConstants.CONTENT.equals(field.getName().getLocalName())) { returnEarly = false; } ZipEntry blobIndex = zip.getEntry(stringValue); if (!returnEarly) { returnEarly = blobIndex == null; } if (!returnEarly) { Blob blob; try { blob = Blobs.createBlob(zip.getInputStream(blobIndex)); } catch (IOException e) { throw new NuxeoException(e); } blob.setFilename(stringValue); fieldValue = (Serializable) blob; } } else if (type.isListType()) { Type listFieldType = ((ListType) type).getFieldType(); if (listFieldType.isSimpleType()) { fieldValue = stringValue.split("\\|"); } } return fieldValue; }