debugAssertConsistent method

void debugAssertConsistent()

Debug-only: asserts the bulk member mirror matches _group.members ∪ pendingRemoval exactly across live nids.

Implementation

void debugAssertConsistent() {
  assert(() {
    final g = _group;
    // Build expected from the group.
    final expected = <int>{};
    if (g != null) {
      for (final key in g.members) {
        final nid = _nids[key];
        if (nid != null) expected.add(nid);
      }
      for (final key in g.pendingRemoval) {
        final nid = _nids[key];
        if (nid != null) expected.add(nid);
      }
    }
    // Walk the mirror — every set bit must be in `expected`, and every
    // expected nid must have its bit set.
    for (int nid = 0; nid < _isMemberByNid.length; nid++) {
      final isSet = _isMemberByNid[nid] != 0;
      final shouldBeSet = expected.contains(nid);
      if (isSet != shouldBeSet) {
        final key = _nids.keyOf(nid);
        throw StateError(
          "BulkAnimator._isMemberByNid[$nid] (key=$key) = $isSet, "
          "expected $shouldBeSet",
        );
      }
    }
    return true;
  }());
}