private Timer Toggle(IClient client, bool?state)
        {
            Items.Timer timer    = client.GetTimer(_id);
            bool        newState = state ?? !timer.State;

            timer.State = newState;
            return(Timer.Create(timer).WithIsEnabled(newState));
        }
        public Timer SetTime([Service] IClient client, int hour, int minute)
        {
            if (hour < 0 || hour > 23)
            {
                throw new ArgumentOutOfRangeException(nameof(hour), "Value must be in the range [0, 23]");
            }

            if (minute < 0 || minute > 59)
            {
                throw new ArgumentOutOfRangeException(nameof(minute), "Value must be in the range [0, 59]");
            }

            Items.Timer timer = client.GetTimer(_id);
            timer.Hour   = (byte)hour;
            timer.Minute = (byte)minute;
            return(Timer.Create(timer).WithTime(hour: hour, minute: minute));
        }
 internal static Timer Create(Items.Timer timer)
 => new Timer(