public MediaType withCharset(Charset charset) {
        checkNotNull(charset);
        MediaType withCharset = withParameter(CHARSET_ATTRIBUTE, charset.name());
        // precache the charset so we don't need to parse it
        withCharset.parsedCharset = charset;
        return withCharset;
    }
Returns a new instance with the same type and subtype as this instance, with the {@code
charset} parameter set to the {@linkplain Charset#name() name} of the given charset. Only one {@code
charset} parameter will be present on the new instance regardless of the number set on this
one.

<p>If a charset must be specified that is not supported on this JVM (and thus is not
representable as a {@link Charset} instance, use {@link #withParameter}.
core/src/main/java/com/linecorp/armeria/common/MediaType.java