/// <summary>
        /// Determines if the given value represents a valid state of this property.
        /// </summary>
        /// <param name="value">The state that should be used.</param>
        /// <returns>True if the state is valid, otherwise false.</returns>
        protected override Boolean IsValid(CSSValue value)
        {
            var mode = value.ToBorderRepeat();

            if (mode != null)
            {
                _horizontal = _vertical = mode.Value;
            }
            else if (value is CSSValueList)
            {
                var          list       = (CSSValueList)value;
                BorderRepeat?horizontal = null;
                BorderRepeat?vertical   = null;

                if (list.Length > 2)
                {
                    return(false);
                }

                foreach (var entry in list)
                {
                    mode = entry.ToBorderRepeat();

                    if (mode == null)
                    {
                        return(false);
                    }
                    else if (horizontal == null)
                    {
                        horizontal = mode;
                    }
                    else
                    {
                        vertical = mode;
                    }
                }

                _horizontal = horizontal.Value;
                _vertical   = vertical.Value;
            }
            else
            {
                return(false);
            }

            return(true);
        }