public void ConstructorTest()
        {
            // Arrange.
            var words = new[] { "aaa::", "bbb::", "ccc::" };
            var data = Encoding.UTF8.GetBytes(string.Join(Environment.NewLine, words));
            var culture = new CultureInfo("en-US");

            // Act.
            var dictionary = new GenericDictionary(culture, data);

            // Assert.
            Assert.AreEqual(culture, dictionary.Culture);

            Assert.AreEqual(3, dictionary.Words.Count());
            Assert.IsTrue(dictionary.Words.Contains("aaa"));
            Assert.IsTrue(dictionary.Words.Contains("bbb"));
            Assert.IsTrue(dictionary.Words.Contains("ccc"));

            // Argument validation.
            TestsHelper.VerifyThrow<ArgumentNullException>(() => new GenericDictionary(null, data));
            TestsHelper.VerifyThrow<ArgumentNullException>(() => new GenericDictionary(culture, null));
        }
        private async Task<IWordDictionary> GetDictionaryInternal(CultureInfo culture)
        {
            foreach (var lazyDictionary in _exportedDictionaries.Value)
            {
                var cultureName = lazyDictionary.Metadata.CultureName;
                if (cultureName == string.Empty)
                    cultureName = "en-US";

                if (culture.Name == cultureName)
                    return lazyDictionary.Value;
            }

            try
            {
                var dictionaryBytes = await DictionaryManager.GetDictionaryAsync(culture.Name);
                var dictionary = new GenericDictionary(culture, dictionaryBytes);

                return dictionary;
            }
            catch (Exception ex)
            {
                Logger.Log(LogSeverity.Error, "Spell Checking Service", ex);
            }

            return null;
        }