public override object CreateInstance(ITypeDescriptorContext context, IDictionary propertyValues)
        {
            if (propertyValues == null)
            {
                throw new ArgumentNullException(nameof(propertyValues));
            }

            object obj1 = propertyValues[(object)"Color1"];
            object obj2 = propertyValues[(object)"Color2"];
            object obj3 = propertyValues[(object)"Style"];
            object obj4 = propertyValues[(object)"GammaCorrection"];

            var defalt = new GradientBrush(GetHost(context));

            if (obj1 == null)
            {
                obj1 = defalt.Color1;
            }
            if (obj2 == null)
            {
                obj2 = defalt.Color2;
            }
            if (obj3 == null)
            {
                obj3 = defalt.Style;
            }
            if (obj4 == null)
            {
                obj4 = defalt.GammaCorrection;
            }

            if (!(obj1 is Color) || !(obj2 is Color) || !(obj3 is GradientStyle) || !(obj4 is bool))
            {
                throw new ArgumentException("One or more entries are not valid in the IDictionary parameter. Verify that all values match up to the object's properties.");
            }

            return((object)new GradientBrush(GetHost(context), (Color)obj1, (Color)obj2, (GradientStyle)obj3, (bool)obj4));
        }