private static ITextCorrector GetTextCorrector(TextCorrectorSetting textCorrectorSetting)
        {
            if (textCorrectorSetting.CustomTextCorrector != null)
            {
                return(textCorrectorSetting.CustomTextCorrector);
            }

            return(textCorrectorSetting.UseDefaultSpellChecker ? new LevenshteinTextCorrector() : null);
        }
        /// <summary>
        /// Gets IndexerConfiguration from settings
        /// </summary>
        /// <param name="splitterSetting">Splitter Setting. Cannot be null.</param>
        /// <param name="dictionarySetting">Cannot be null.</param>
        /// <param name="textExtractorSetting">Cannot be null.</param>
        /// <param name="textCorrectorSetting">Cannot be null.</param>
        /// <param name="stemmerSetting">Cannot be null.</param>
        /// <param name="filesToScan">Cannot be null.</param>
        /// <param name="notificationHandler">Notification updater</param>
        /// <returns></returns>
        public static IndexerConfiguration GetIndexerConfiguration(SplitterSetting splitterSetting, DictionarySetting dictionarySetting,
                                                                   TextExtractorSetting textExtractorSetting, TextCorrectorSetting textCorrectorSetting, StemmerSetting stemmerSetting,
                                                                   List <IndexerFile> filesToScan, INotificationHandler notificationHandler = null)
        {
            if (splitterSetting == null)
            {
                throw new ArgumentNullException(nameof(splitterSetting));
            }

            if (dictionarySetting == null)
            {
                throw new ArgumentNullException(nameof(dictionarySetting));
            }

            if (textExtractorSetting == null)
            {
                throw new ArgumentNullException(nameof(textExtractorSetting));
            }

            if (textCorrectorSetting == null)
            {
                throw new ArgumentNullException(nameof(textCorrectorSetting));
            }

            if (stemmerSetting == null)
            {
                throw new ArgumentNullException(nameof(stemmerSetting));
            }

            if (filesToScan == null)
            {
                throw new ArgumentNullException(nameof(filesToScan));
            }

            IndexerConfiguration indexerConfiguration = new IndexerConfiguration(GetSplitter(splitterSetting), GetSplitType(textExtractorSetting),
                                                                                 GetDictionary(dictionarySetting), GetTextExtractors(textExtractorSetting), GetTextCorrector(textCorrectorSetting),
                                                                                 GetStemmer(stemmerSetting), filesToScan, notificationHandler);

            return(indexerConfiguration);
        }