public override void WriteTo()

in src/Elastic.Apm/Libraries/Newtonsoft.Json/Linq/JValue.cs [629:714]


		public override void WriteTo(JsonWriter writer, params JsonConverter[] converters)
		{
			if (converters != null && converters.Length > 0 && _value != null)
			{
				var matchingConverter = JsonSerializer.GetMatchingConverter(converters, _value.GetType());
				if (matchingConverter != null && matchingConverter.CanWrite)
				{
					matchingConverter.WriteJson(writer, _value, JsonSerializer.CreateDefault());
					return;
				}
			}

			switch (_valueType)
			{
				case JTokenType.Comment:
					writer.WriteComment(_value?.ToString());
					return;
				case JTokenType.Raw:
					writer.WriteRawValue(_value?.ToString());
					return;
				case JTokenType.Null:
					writer.WriteNull();
					return;
				case JTokenType.Undefined:
					writer.WriteUndefined();
					return;
				case JTokenType.Integer:
					if (_value is int i)
						writer.WriteValue(i);
					else if (_value is long l)
						writer.WriteValue(l);
					else if (_value is ulong ul)
						writer.WriteValue(ul);
#if HAVE_BIG_INTEGER
                    else if (_value is BigInteger integer)
                    {
                        writer.WriteValue(integer);
                    }
#endif
					else
						writer.WriteValue(Convert.ToInt64(_value, CultureInfo.InvariantCulture));
					return;
				case JTokenType.Float:
					if (_value is decimal dec)
						writer.WriteValue(dec);
					else if (_value is double d)
						writer.WriteValue(d);
					else if (_value is float f)
						writer.WriteValue(f);
					else
						writer.WriteValue(Convert.ToDouble(_value, CultureInfo.InvariantCulture));
					return;
				case JTokenType.String:
					writer.WriteValue(_value?.ToString());
					return;
				case JTokenType.Boolean:
					writer.WriteValue(Convert.ToBoolean(_value, CultureInfo.InvariantCulture));
					return;
				case JTokenType.Date:
#if HAVE_DATE_TIME_OFFSET
                    if (_value is DateTimeOffset offset)
                    {
                        writer.WriteValue(offset);
                    }
                    else
#endif
				{
					writer.WriteValue(Convert.ToDateTime(_value, CultureInfo.InvariantCulture));
				}
					return;
				case JTokenType.Bytes:
					writer.WriteValue((byte[]?)_value);
					return;
				case JTokenType.Guid:
					writer.WriteValue(_value != null ? (Guid?)_value : null);
					return;
				case JTokenType.TimeSpan:
					writer.WriteValue(_value != null ? (TimeSpan?)_value : null);
					return;
				case JTokenType.Uri:
					writer.WriteValue((Uri?)_value);
					return;
			}

			throw MiscellaneousUtils.CreateArgumentOutOfRangeException(nameof(Type), _valueType, "Unexpected token type.");
		}