public bool MoveNext() { if (typeof(ISearchable).IsAssignableFrom(typeof(T)) == false) { return(m_Enumerable.MoveNext()); } if (string.IsNullOrWhiteSpace(SearchProvider.SearchString)) { return(m_Enumerable.MoveNext()); } while (m_Enumerable.MoveNext()) { var result = SearchProvider.IsMatch( ((ISearchable)m_Enumerable.Current).GetSearchString(), m_Package); if (result) { return(true); } } return(false); }