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);
        }