in lib/src/line_splitting/solve_state.dart [235:271]
bool _isOverlapping(SolveState other) {
// Lines that contain both bound and unbound rules must have the same
// bound values.
if (_boundRulesInUnboundLines.length !=
other._boundRulesInUnboundLines.length) {
return false;
}
for (var rule in _boundRulesInUnboundLines) {
if (!other._boundRulesInUnboundLines.contains(rule)) return false;
if (_ruleValues.getValue(rule) != other._ruleValues.getValue(rule)) {
return false;
}
}
if (_constraints.length != other._constraints.length) return false;
for (var rule in _constraints.keys) {
if (_constraints[rule] != other._constraints[rule]) return false;
}
if (_unboundConstraints.length != other._unboundConstraints.length) {
return false;
}
for (var rule in _unboundConstraints.keys) {
var disallowed = _unboundConstraints[rule]!;
var otherDisallowed = other._unboundConstraints[rule]!;
if (disallowed.length != otherDisallowed.length) return false;
for (var value in disallowed) {
if (!otherDisallowed.contains(value)) return false;
}
}
return true;
}