private static XElement WriteBouncer(Bouncer bouncer)
        {
            var bouncerEl = new XElement("bouncer");

            if (bouncer.Min != default)
            {
                bouncerEl.Add(new XAttribute("min", bouncer.Min));
            }
            if (bouncer.Max != default)
            {
                bouncerEl.Add(new XAttribute("max", bouncer.Max));
            }
            if (bouncer.Power != default)
            {
                bouncerEl.Add(new XAttribute("power", bouncer.Power));
            }
            if (bouncer.Steps != default)
            {
                bouncerEl.Add(new XAttribute("steps", bouncer.Steps));
            }

            return(bouncerEl);
        }
        private Bouncer ReadBouncer(XElement bouncerEl)
        {
            var bouncer = new Bouncer();

            foreach (var bouncerAttr in bouncerEl.Attributes())
            {
                var bouncerAttrName = bouncerAttr.Name.ToString();
                switch (bouncerAttrName)
                {
                case "min": bouncer.Min = double.Parse(bouncerAttr.Value); break;

                case "max": bouncer.Max = double.Parse(bouncerAttr.Value); break;

                case "power": bouncer.Power = double.Parse(bouncerAttr.Value); break;

                case "steps": bouncer.Steps = int.Parse(bouncerAttr.Value); break;

                default: log.Debug($"Unknown bouncer attribute: '{bouncerAttrName}'."); break;
                }
            }

            return(bouncer);
        }