debugAssertConsistent method
void
debugAssertConsistent()
Debug-only: asserts the order and reverse-index agree on every live
entry, and that the number of non-sentinel reverse-index entries
matches length. Wrapped in assert(...) so release builds skip it.
Implementation
void debugAssertConsistent() {
assert(() {
int visibleCount = 0;
for (int i = 0; i < _len; i++) {
final nid = _orderNids[i];
final idx = _indexByNid[nid];
if (idx != i) {
final key = _nids.keyOf(nid);
throw StateError(
"Index mismatch: visible[$i] = $key (nid $nid), "
"but indexByNid[$nid] = $idx",
);
}
}
for (int nid = 0; nid < _nids.length; nid++) {
if (_indexByNid[nid] != kNotVisible) {
visibleCount++;
}
}
if (visibleCount != _len) {
throw StateError(
"Length mismatch: indexByNid has $visibleCount visible entries, "
"but length = $_len",
);
}
return true;
}());
}