code: public static Charset forName(String charsetName) {
          // Is this charset in our cache?
          Charset cs;
          synchronized (CACHED_CHARSETS) {
              cs = CACHED_CHARSETS.get(charsetName);
              if (cs != null) {
                  return cs;
              }
          }
  
          if (charsetName == null) {
              throw new IllegalCharsetNameException(null);
          }
  
          // Is this a built-in charset supported by iOS?
          checkCharsetName(charsetName);
          cs = IOSCharset.charsetForName(charsetName);
          if (cs != null) {
              return cacheCharset(charsetName, cs);
          }
  
          throw new UnsupportedCharsetException(charsetName);
      }
docs: Returns a {@code Charset} instance for the named charset.
  
  @param charsetName a charset name (either canonical or an alias)
  @throws IllegalCharsetNameException
  if the specified charset name is illegal.
  @throws UnsupportedCharsetException
  if the desired charset is not supported by this runtime.