private Win32FileSystemEnumerableIterator(String fullPath, String normalizedSearchPath, String searchCriteria, String userPath, SearchOption searchOption, SearchResultHandler <TSource> resultHandler)
        {
            this._fullPath             = fullPath;
            this._normalizedSearchPath = normalizedSearchPath;
            this._searchCriteria       = searchCriteria;
            this._resultHandler        = resultHandler;
            this._userPath             = userPath;
            this._searchOption         = searchOption;

            _searchStack = new List <Directory.SearchData>();

            if (searchCriteria != null)
            {
                PathHelpers.CheckInvalidPathChars(fullPath, true);

                _searchData = new Directory.SearchData(normalizedSearchPath, userPath, searchOption);
                CommonInit();
            }
            else
            {
                _empty = true;
            }
        }