private void Randomize <T>() where T : ColorSpace, new()
        {
            var useLargeIncrement = CheckBoxIncrement.IsChecked == true;

            if (typeof(T) == typeof(Cmyk) || typeof(T) == typeof(Rgba))
            {
                RandomColor = ColorSpace.Random <T>(
                    new DiscreteRange <double>(
                        SliderA1.Value,
                        SliderA2.Value,
                        useLargeIncrement ? SliderA1.TickFrequency : SliderA1.SmallChange),
                    new DiscreteRange <double>(
                        SliderB1.Value,
                        SliderB2.Value,
                        useLargeIncrement ? SliderB1.TickFrequency : SliderB1.SmallChange),
                    new DiscreteRange <double>(
                        SliderC1.Value,
                        SliderC2.Value,
                        useLargeIncrement ? SliderC1.TickFrequency : SliderC1.SmallChange),
                    new DiscreteRange <double>(
                        SliderD1.Value,
                        SliderD2.Value,
                        useLargeIncrement ? SliderD1.TickFrequency : SliderD1.SmallChange));
            }
            else
            {
                RandomColor = ColorSpace.Random <T>(
                    new DiscreteRange <double>(
                        SliderA1.Value,
                        SliderA2.Value,
                        useLargeIncrement ? SliderA1.TickFrequency : SliderA1.SmallChange),
                    new DiscreteRange <double>(
                        SliderB1.Value,
                        SliderB2.Value,
                        useLargeIncrement ? SliderB1.TickFrequency : SliderB1.SmallChange),
                    new DiscreteRange <double>(
                        SliderC1.Value,
                        SliderC2.Value,
                        useLargeIncrement ? SliderC1.TickFrequency : SliderC1.SmallChange));
            }
        }