/// <summary>
        /// Gets corrected form of the text
        /// </summary>
        /// <param name="text">Text to be corrected</param>
        /// <returns>Corrected text. Null is returned if no match is found.</returns>
        public string Correct(string text)
        {
            CorrectionResult result = new CorrectionResult(null, TextCorrectorResources.MaxDistance + 1);
            int minDictionaryLength = Math.Max(text.Length - TextCorrectorResources.MaxDistance, 1);
            int maxDictionaryLength = text.Length + TextCorrectorResources.MaxDistance;

            if (_useDictionary)
            {
                CorrectionResult dictionaryCorrectionResult = GetBestDistance(text, _dictionary.GetWordList().Where(x => x.Length <= maxDictionaryLength && x.Length >= minDictionaryLength));
                if (dictionaryCorrectionResult.IsBetterThan(result))
                {
                    result = dictionaryCorrectionResult;
                }
            }

            if (_useTokenDictionary)
            {
                CorrectionResult dictionaryCorrectionResult = GetBestDistance(text, _tokenDictionary.GetProjectIdentifiedsAndTokens().Where(x => x.Length <= maxDictionaryLength && x.Length >= minDictionaryLength));
                if (dictionaryCorrectionResult.IsBetterThan(result))
                {
                    result = dictionaryCorrectionResult;
                }
            }

            return(result.Text);
        }
 internal bool IsBetterThan(CorrectionResult result)
 {
     return(Distance < result.Distance);
 }