protected boolean archiveCharsetFromType( JarX[] type) {
    String charset = null;
    int i = 3;

    while ( i < type.length ) {
      if ( ! type[i].holds( ";", TSPECIAL) )
      	break;
      if ( type[++i].holdsIgnoreCase( "charset", ATOM) ) {
	if ( ! type[++i].holds( "=", TSPECIAL) )
	  break;
	if ( ! type[++i].is( ATOM, QUOTEDSTRING) )
	  break;
	charset = type[i].value;
	break;
      }
      if ( ! type[++i].holds( "=", TSPECIAL) )
	break;
      if ( ! type[++i].is( ATOM, QUOTEDSTRING) )
	break;
      ++i;
    }

    if ( null != charset ) {
      archiveCharset = Charset.forName( charset);
      return true;
    }

    if ( i < type.length ) {
      System.err.println( "Malformed Content-Type specification!");
      System.exit( 1);
    }

    return false;
  }