public override void Write()

in src/Elastic.CommonSchema/Serialization/MetadataDictionaryConverter.cs [56:96]


		public override void Write(Utf8JsonWriter writer, MetadataDictionary value, JsonSerializerOptions options)
		{
			writer.WriteStartObject();

			List<MetaDataSerializationFailure>? failures = null;

			foreach (var kvp in value)
			{
				var propertyName = kvp.Key;

				if (kvp.Value == null)
				{
					writer.WritePropertyName(propertyName);
					writer.WriteNullValue();
				}
				else
				{
					try
					{
						// The following is not safe
						// JsonSerializer.Serialize(writer, kvp.Value, inputType, options);
						// If a getter throws an exception we risk not logging anything

						var bytes = JsonSerializer.SerializeToUtf8Bytes(kvp.Value, options);
						writer.WritePropertyName(propertyName);
						writer.WriteRawValue(bytes);
					}
					catch (Exception e)
					{
						failures ??= new List<MetaDataSerializationFailure>();
						failures.Add(new MetaDataSerializationFailure { Property = propertyName, SerializationFailure = e.Message });
					}
				}
			}
			if (failures != null)
			{
				writer.WritePropertyName("__failures__");
				JsonSerializer.Serialize(writer, failures, typeof(List<MetaDataSerializationFailure>), options);
			}
			writer.WriteEndObject();
		}