/// <summary>
        /// Sets the specified key.
        /// </summary>
        /// <param name="key">The key.</param>
        /// <param name="value">The value.</param>
        /// <param name="editorType">Type of the editor.</param>
        public void Set(string key, string value, VisualEditorType editorType)
        {
            LoadAll(settingCache);

            if (settingCache.ContainsKey(key))
            {
                UpdateSetting(key, value, editorType);
                settingCache[key] = value;
            }
            else
            {
                settingCache.TryAdd(key, value);
                AddSetting(key, value, editorType);
            }
        }
 /// <summary>
 /// Adds the setting.
 /// </summary>
 /// <param name="key">The key.</param>
 /// <param name="value">The value.</param>
 /// <param name="editorType">Type of the editor.</param>
 protected abstract void AddSetting(string key, string value, VisualEditorType editorType);