public override List <SearcherItem> Search(string query, out float localMaxScore) { localMaxScore = 0; if (!string.IsNullOrEmpty(query)) { var filter = FilterUtility.CreateAddComponentFilter(query); MatchFilter = (s, item) => { if (!(item is TypeSearcherItem)) { return(false); } return(filter.Keep(item.Name)); }; } else { MatchFilter = null; return(m_ItemList); } var finalResults = new List <SearcherItem> { null }; var max = new Result(); // ReSharper disable once RedundantLogicalConditionalExpressionOperand if (m_ItemList.Count > 100) { SearchMultithreaded(query, max, finalResults); } else { SearchSingleThreaded(query, max, finalResults); } localMaxScore = max.maxScore; if (max.item != null) { finalResults[0] = max.item; } else { finalResults.RemoveAt(0); } return(finalResults); }