serialize
open suspend override fun serialize(contentType: ContentType, charset: Charset, typeInfo: TypeInfo, value: Any?): OutgoingContent?(source)
Writes value as application/problem+json, or null if it isn't a Problem. That is the interface's way of saying "not mine", so ContentNegotiation tries the next converter.
The response is always labelled application/problem+json, regardless of the contentType this converter was matched under. Echoing back application/json (see acceptPlainJson) would strip the only wire-level marker that the body is a problem document. RFC 9457 §3 permits the override.