private void detectConflict(Analysis analysis, RowDetector otherRowDetector) {
boolean overlappingCondition = true;
boolean hasUnrecognizedCondition = false;
for (Map.Entry<ConditionDetectorKey, ConditionDetector> entry : conditionDetectorMap.entrySet()) {
ConditionDetectorKey key = entry.getKey();
ConditionDetector conditionDetector = entry.getValue();
ConditionDetector otherConditionDetector = otherRowDetector.getConditionDetector(key);
// If 1 field is in both
if (otherConditionDetector != null) {
ConditionDetector mergedConditionDetector = conditionDetector.merge(otherConditionDetector);
if (mergedConditionDetector.isImpossibleMatch()) {
// If 1 field is in both and not overlapping then the entire 2 rows are not overlapping
overlappingCondition = false;
}
if (mergedConditionDetector.hasUnrecognizedConstraint()) {
// If 1 field is in both and unrecognized, then the 2 rows might not be overlapping
hasUnrecognizedCondition = true;
}
}
}