die(String.format("Field %s of type %s is already present on path from the owner type %s: %s",
fieldName, fieldType.getQualifiedSourceName(), ownerType.getQualifiedSourceName(),
grandParents.toString()));
}
WithElementId idAnnotation = field.getAnnotation(WithElementId.class);
String fieldId = idAnnotation.value();
if ("".equals(fieldId)) {
fieldId = fieldName;
}
String elementId = idPrefix + ID_ELEMENT_SEPARATOR + fieldId;
String fieldExpression = ElementIdHandlerGenerator.ElementIdHandler_generateAndSetIds_owner
+ parentFieldExpression + fieldName;
ElementIdStatement statement = new ElementIdStatement(fieldExpression, elementId);
if (statements.contains(statement)) {
die(String.format("Duplicate element ID %s for field %s of type %s",
elementId, fieldName, fieldType.getQualifiedSourceName()));
}
statements.add(statement);
if (idAnnotation.processType()) {
List<JClassType> newGrandParents = new ArrayList<JClassType>(grandParents);
newGrandParents.add(fieldType);
doParse(fieldType, newGrandParents, parentFieldExpression + fieldName + ".", elementId);
}