public override string SearchResultLabel(object item, string query)
        {
            if (item is Type)
            {
                return(TypeOption.SearchResultLabel((Type)item, query));
            }
            else if (item is Member)
            {
                return(MemberOption.SearchResultLabel((Member)item, query, direction, expectingBoolean));
            }

            throw new NotSupportedException();
        }
        public override IEnumerable <object> OrderedSearchResults(string query, CancellationToken cancellation)
        {
            // Exclude duplicate inherited members, like the high amount of "Destroy()" or "enabled",
            // if their declaring type is also available for search.

            foreach (var member in codebase.members
                     .Cancellable(cancellation)
                     .UnorderedSearchFilter(query, m => MemberOption.Haystack(m, direction, expectingBoolean))
                     .Where(m => !m.isPseudoInherited || !codebase.types.Contains(m.declaringType))
                     .OrderBy(m => BoltCore.Configuration.groupInheritedMembers && m.isPseudoInherited)
                     .ThenByDescending(m => SearchUtility.Relevance(query, MemberOption.Haystack(m, direction, expectingBoolean))))
            {
                yield return(member);
            }

            foreach (var type in codebase.types
                     .Cancellable(cancellation)
                     .Where(t => !t.IsEnum)
                     .OrderedSearchFilter(query, TypeOption.Haystack))
            {
                yield return(type);
            }
        }