protected virtual IEnumerable <TValue> SearchDeep(string query, int position) { TrieNodeBase <TValue> nextNode = GetChildOrNull(query, position); return(nextNode != null ? nextNode.Retrieve(query, position + nextNode.KeyLength) : Enumerable.Empty <TValue>()); }