AbstractHttpMessageConverter has a constructor (Charset defaultCharset, MediaType... supportedMediaTypes).

AbstractGenericHttpMessageConverter extends it, but provides no access to that constructor.

That forces implementors to call setDefaultCharset in their constructors, which gives a this-escape warning since Java 18 unless they are declared final.