/// Fixed-size list based lookup table, optimized for small positive integer /// keys. class FastLookupTable { FastLookupTable(Map data) { var maxIndex = data.keys.first; for (var key in data.keys) { if (key > maxIndex) { maxIndex = key; } } this._maxIndex = maxIndex; _table = List.filled(maxIndex + 1, null); for (var entry in data.entries) { _table[entry.key] = entry.value; } } late final List _table; late final int _maxIndex; T? operator [](int index) { if (index > _maxIndex) { return null; } return _table[index]; } }