public static String Ask(String key, String question)
        {
            if (question == null)
            {
                throw new ArgumentNullException(nameof(question));
            }
            if (key == null)
            {
                throw new ArgumentNullException(nameof(key));
            }
            Object value;

            while (!Settings.TryGetValue(key, out value))
            {
                var questionBox = new QuestionBox(question);
                var result      = questionBox.ShowDialog();
                if (result == DialogResult.OK)
                {
                    Settings[key] = questionBox.Response;
                }
                else
                {
                    if (ThreadingExtensions.IsRunningFromNUnit)
                    {
                        throw new NotImplementedException();
                    }
                }
            }
            return(value as String);
        }