private void OnOptionGUI(string name)
        {
            EnsureOptions();
            string[] values;
            if (!_options.TryGetValue(name, out values) || values.Length == 0)
            {
                return;
            }

            var option = BuilderPreferences.GetLastOption(name);

            int selected = -1;

            if (!string.IsNullOrEmpty(option))
            {
                selected = Array.IndexOf(values, option);

                if (selected <= 0 && !string.IsNullOrEmpty(option))
                {
                    BuilderPreferences.SetLastOption(name, EditorGUILayout.TextField(name, option));
                    return;
                }
            }

            selected = EditorGUILayout.Popup(name, selected, values);
            BuilderPreferences.SetLastOption(name, selected > 0 ? values[selected] : null);
        }
        private Dictionary <string, string> GetCurrentOptions()
        {
            Dictionary <string, string> result = null;

            EnsureOptions();
            foreach (var p in _options)
            {
                var val = BuilderPreferences.GetLastOption(p.Key);
                if (val == null || Array.IndexOf(p.Value, val) < 0)
                {
                    continue;
                }
                if (result == null)
                {
                    result = new Dictionary <string, string>(_options.Count);
                }
                result[p.Key] = val;
            }
            return(result);
        }