in src/main/java/com/univocity/parsers/common/DefaultConversionProcessor.java [170:210]
public final boolean reverseConversions(boolean executeInReverseOrder, Object[] row, String[] headers, int[] indexesToWrite) {
boolean keepRow = true;
boolean[] convertedFlags = conversionsByType != null ? new boolean[row.length] : null;
if (conversions != null) {
if (!conversionsInitialized) {
conversionsInitialized = true;
conversions.prepareExecution(true, headers != null ? headers : new String[row.length]);
this.fieldIndexes = indexesToWrite;
}
if(executeInReverseOrder){
keepRow = validateAllValues(row);
}
final int last = fieldIndexes == null ? row.length : fieldIndexes.length;
for (int i = 0; i < last; i++) {
try {
if (fieldIndexes == null || fieldIndexes[i] == -1) {
row[i] = conversions.reverseConversions(executeInReverseOrder, i, row[i], convertedFlags);
} else {
int index = fieldIndexes[i];
row[index] = conversions.reverseConversions(executeInReverseOrder, index, row[index], convertedFlags);
}
} catch (Throwable ex) {
keepRow = handleConversionError(ex, row, i);
}
}
}
if (keepRow && convertedFlags != null) {
keepRow = applyConversionsByType(true, row, convertedFlags);
}
if(executeInReverseOrder){
return keepRow;
}
return keepRow && validateAllValues(row);
}