public static void Add([NotNull] AppearanceDescriptor appearanceDescriptor)
        {
            Assert.ArgumentNotNull(appearanceDescriptor, nameof(appearanceDescriptor));

            if (appearanceDescriptor.ItemId != ItemId.Empty)
            {
                var descriptor = descriptors.FirstOrDefault(d => d.ItemId == appearanceDescriptor.ItemId);
                if (descriptor != null)
                {
                    descriptors.Remove(descriptor);
                }
            }

            if (appearanceDescriptor.TemplateId != ItemId.Empty)
            {
                var descriptor = descriptors.FirstOrDefault(d => d.TemplateId == appearanceDescriptor.TemplateId);
                if (descriptor != null)
                {
                    descriptors.Remove(descriptor);
                }
            }

            if (appearanceDescriptor.IsDefault)
            {
                var descriptor = descriptors.FirstOrDefault(d => d.IsDefault);
                if (descriptor != null)
                {
                    descriptors.Remove(descriptor);
                }
            }

            descriptors.Add(appearanceDescriptor);
        }
        public static AppearanceDescriptor GetDefaultAppearanceDescriptor()
        {
            var result = new AppearanceDescriptor();

            var panels = PanelManager.Panels.Where(descriptor => descriptor.IsVisible).ToList();

            panels.Sort((d1, d2) => d1.Priority.CompareTo(d2.Priority));

            foreach (var panel in panels)
            {
                result.Panels.Add(panel);
            }

            return(result);
        }
        public static void Remove([NotNull] AppearanceDescriptor appearanceDescriptor)
        {
            Assert.ArgumentNotNull(appearanceDescriptor, nameof(appearanceDescriptor));

            descriptors.Remove(appearanceDescriptor);
        }