code: 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 = Optional.of(charset);
      return withCharset;
    }
docs: Returns a new instance with the same type and subtype as this instance, with the {@code
  charset} parameter set to the {@link 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}.