public static void RemoveBulbFromGroup(this ILifxNetwork network, IBulbGroup bulbGroup, IBulb bulb)
        {
            var n     = (LifxNetwork)network;
            var group = (BulbGroup)bulbGroup;

            group.Remove(bulb);

            var groups = n.Groups.Where(g => g.Contains(bulb)).ToList();

            SetGroups(n, bulb, groups);
        }
        public static void RenameGroup(this ILifxNetwork network, IBulbGroup bulbGroup, string name)
        {
            var n     = (LifxNetwork)network;
            var group = (BulbGroup)bulbGroup;

            group.Name = name;

            foreach (var bulb in group.GetBulbs())
            {
                UpdateGroupName(n, group, bulb);
            }
        }
        public static void RemoveGroup(this ILifxNetwork network, IBulbGroup bulbGroup)
        {
            var n     = (LifxNetwork)network;
            var group = (BulbGroup)bulbGroup;

            n.Remove(group);

            var allGroups = n.Groups.ToList();

            foreach (var bulb in group.GetBulbs())
            {
                var groups = allGroups.Where(g => g.Contains(bulb) && !Equals(g, group)).ToList();
                SetGroups(n, bulb, groups);
            }
        }
        public static void AddBulbToGroup(this ILifxNetwork network, IBulbGroup bulbGroup, IBulb bulb)
        {
            var n     = (LifxNetwork)network;
            var group = (BulbGroup)bulbGroup;

            if (group.Contains(bulb))
            {
                return;
            }

            group.Add(bulb);

            var groups = n.Groups.Where(g => g.Contains(bulb)).ToList();

            SetGroups(n, bulb, groups);

            UpdateGroupName(n, group, bulb);
        }