/// <summary>
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="item"></param>
        /// <param name="serializationOptions">The serialization options. When the value is null the
        /// the serialization options should be provided by the serializer, otherwise the given options should be used.</param>
        /// <returns></returns>

        public override byte[] Serialize <T>(T item, ApiClientSerializationOptions serializationOptions)
        {
            // When no options passed use the default.
            if (serializationOptions == null)
            {
                serializationOptions = DefaultOptions;
            }

            var jsonSettings = new JsonSerializerSettings
            {
                NullValueHandling = serializationOptions.IgnoreNullValues ? NullValueHandling.Ignore : NullValueHandling.Include
            };

            if (serializationOptions.UseStringEnumConversion)
            {
                var stringEnumConverter = new StringEnumConverter();
                jsonSettings.Converters.Add(stringEnumConverter);
            }

            if (serializationOptions.UseCamelCasePropertyNames)
            {
                jsonSettings.ContractResolver = new CamelCasePropertyNamesExceptDictionaryContractResolver();
            }

            string json = JsonConvert.SerializeObject(item, jsonSettings);

            return(Encoding.UTF8.GetBytes(json));
        }
 /// <summary>
 /// Serializes the specified object to a sequence of bytes,
 /// following the provided rules for camel case property name and null value handling.
 /// </summary>
 /// <typeparam name="T">The type of the object to serialize.</typeparam>
 /// <param name="item">The object to serialize.</param>
 /// <param name="serializationOptions">The serialization options. When the value is null the
 /// the serialization options should be provided by the serializer, otherwise the given options should be used.</param>
 /// <returns></returns>
 public abstract byte[] Serialize <T>(T item, ApiClientSerializationOptions serializationOptions);