private static int IndexOfNull <TValue>( byte[] buffer, int index, int count, ref BsonTrieNode <TValue> bsonTrieNode) { for (; count > 0; index++, count--) { // bsonTrieNode might be null on entry or it might become null while navigating the trie if (bsonTrieNode == null) { return(Array.IndexOf <byte>(buffer, 0, index, count)); } var keyByte = buffer[index]; if (keyByte == 0) { return(index); } bsonTrieNode = bsonTrieNode.GetChild(keyByte); // might return null } return(-1); }