/// <summary>
        /// When overridden in a derived class, sets the value of the component to a different value.
        /// </summary>
        /// <param name="component">The component with the property value that is to be set.
        ///                 </param><param name="value">The new value.
        ///                 </param>
        public override void SetValue(object component, object value)
        {
            JToken token = (value is JToken) ? (JToken)value : new JValue(value);

            CastInstance(component)[Name] = token;
        }
        /// <summary>
        /// When overridden in a derived class, gets the current value of the property on a component.
        /// </summary>
        /// <returns>
        /// The value of a property for a given component.
        /// </returns>
        /// <param name="component">The component with the property for which to retrieve the value.
        ///                 </param>
        public override object GetValue(object component)
        {
            JToken token = CastInstance(component)[Name];

            return(token);
        }