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;
  }());
}