public unsafe AutomataNode SearchNextSafe(byte[] p, ref int offset, ref int rest) { var key = AutomataKeyGen.GetKeySafe(p, ref offset, ref rest); if (_count < 4) { // linear search for (var i = 0; i < _count; i++) { if (_nextKeys[i] == key) { return(_nexts[i]); } } } else { // binary search var index = BinarySearch(_nextKeys, 0, _count, key); if (index >= 0) { return(_nexts[index]); } } return(null); }