else if (Character.isJavaIdentifierStart((char) ch)) {
else if (isValidIniKeyChar((char) ch)) {
  private static ArrayValue parseIni(Env env,				     ReadStream is,				     boolean processSections)    throws IOException  {    ArrayValue top = new ArrayValueImpl();    ArrayValue section = top;        int ch;    while ((ch = is.read()) >= 0) {      if (Character.isWhitespace(ch)) {      }      else if (ch == ';') {	for (; ch >= 0 && ch != '\r' && ch != '\n'; ch = is.read()) {	}      }      else if (ch == '[') {	StringBuilder sb = new StringBuilder();	for (ch = is.read(); ch >= 0 && ch != ']'; ch = is.read()) {	  sb.append((char) ch);	}	String name = sb.toString().trim();	if (processSections) {	  section = new ArrayValueImpl();	  top.put(new StringValueImpl(name), section);	}      }      else if (Character.isJavaIdentifierStart((char) ch)) {	StringBuilder sb = new StringBuilder();	for (; Character.isJavaIdentifierPart((char) ch); ch = is.read()) {	  sb.append((char) ch);	}	String key = sb.toString().trim();	for (; ch >= 0 && ch != '='; ch = is.read()) {	}	for (ch = is.read(); ch == ' ' || ch == '\t'; ch = is.read()) {	}	Value value = parseIniValue(env, ch, is);	section.put(new StringValueImpl(key), value);      }    }    return top;  }