/// <summary>
        /// Initializes an AutoCorrect object to use locally
        /// </summary>
        private static AutoCorrect InitializeAutoCorrect()
        {
            Console.WriteLine($"Initializing autocorrect with words");
            var autoCorrect   = new AutoCorrect();
            var wordCount     = 0;
            var printInterval = 300;

            using (var stream = GetWordStream())
            {
                var word = stream.ReadLine();
                while (word != null)
                {
                    if (autoCorrect.AddWord(word))
                    {
                        wordCount++;
                    }
                    if ((wordCount % printInterval) == 0)
                    {
                        Console.WriteLine($"Completed Autocorrect {wordCount} words");
                    }
                    word = stream.ReadLine();
                }
            }

            Console.WriteLine($"Completed autocorrect {wordCount} words");
            return(autoCorrect);
        }
        /// <summary>
        /// Initializes WordSearch with dictionary words
        /// </summary>
        public async Task Initialize()
        {
            if (initialized)
            {
                return;
            }

            //Start initialization in background
            await Task.Factory.StartNew(() =>
            {
                trei        = treiInitializer.Value;
                autoCorrect = autoCorrectInitializer.Value;
                initialized = true;
            }
                                        );
        }