final ClassInfo fieldType, final boolean staticField,
final boolean transientField, final int index)
throws ConversionException {
try {
// FIXMELUC ______known field
final FieldInfo fieldInfo = new FieldInfo(declaringClass,
fieldName, fieldType, Boolean.valueOf(staticField),
Boolean.valueOf(transientField));
final Integer previousIndex = fieldValueIndexByFieldInfoMap
.get(fieldInfo);
final ObjectAndPersistInfo fieldValue = fieldsValue.get(index);
if (previousIndex == null) {
fieldValueIndexByFieldInfoMap.put(fieldInfo, index);
fieldInfoByIndex.put(index, fieldInfo);
// if (fieldValue != null) {
// FIXMELUC x explain case not assignable accepted
// assertFieldAssignable(fieldInfo, fieldValue);
// }
} else {
final int iPreviousIndex = previousIndex.intValue();
if (iPreviousIndex != index) {
throw new ConversionException("field \"" + fieldInfo
+ "\" have index " + iPreviousIndex
+ ", can not be set to index " + index);
}
final FieldInfo previousFieldInfo = fieldInfoByIndex
.get(iPreviousIndex);
if (!previousFieldInfo.equals(fieldInfo)) {
throw new ConversionException("try to set field #" + index
+ " to \"" + fieldInfo + "\" and already set to \""
+ previousFieldInfo + "\"");
}
}