/**
   * Test whether a given string is a valid Java identifier.
   *
   * @param id string which should be checked
   * @return <code>true</code> if a valid identifier
   */
  public static final boolean isJavaIdentifier(String id) {
    if (id == null) {
      return false;
    }

    if (id.equals("")) {
      return false;
    }

    if (!(java.lang.Character.isJavaIdentifierStart(id.charAt(0)))) {
      return false;
    }

    for (int i = 1; i < id.length(); i++) {
      if (!(java.lang.Character.isJavaIdentifierPart(id.charAt(i)))) {
        return false;
      }
    }

    return Arrays.binarySearch(keywords, id) < 0;
  }