public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
            {
                var wrapper = new SelectedIndexWrapper(value);
                var token   = JToken.FromObject(wrapper.SelectedIndex);

                token.WriteTo(writer);
            }
            public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
            {
                var wrapper = new SelectedIndexWrapper(value);
                var jo      = new JObject {
                    { "SelectedIndex", wrapper.SelectedIndex }
                };

                jo.WriteTo(writer);
            }
        public SetSelectedIndexAction(IRef context, object value)
        {
            Context = context;

            SelectedIndexContext = new ProxyRef <int>(
                () => Context.Value is not null ? new SelectedIndexWrapper(Context.Value).SelectedIndex : 0,
                o =>
            {
                if (Context.Value is not null)
                {
                    new SelectedIndexWrapper(Context.Value).SelectedIndex = o;
                }
            });
            Value    = new SelectedIndexWrapper(value).SelectedIndex;
            Original = SelectedIndexContext.Value;
        }
            public override object?ReadJson(JsonReader reader, Type objectType, object?existingValue, JsonSerializer serializer)
            {
                try
                {
                    existingValue ??= _settingsFormat.FindExistingValue(reader.Path);
                    if (existingValue is null)
                    {
                        return(null);
                    }

                    var wrapper = new SelectedIndexWrapper(existingValue);
                    var token   = JToken.Load(reader);
                    wrapper.SelectedIndex = int.TryParse(token["SelectedIndex"].ToString(), out var res) ? res : wrapper.SelectedIndex;
                }
                catch (Exception e)
                {
                    _logger.LogError(e, "Error while deserializing Dropdown");
                }
                return(existingValue);
            }