code: public static String arglistFromJvm(String arglist) {
      if (!(arglist.startsWith("(") && arglist.endsWith(")"))) {
        throw new Error("Malformed arglist: " + arglist);
      }
      String result = "(";
      @Positive int pos = 1;
      while (pos < arglist.length() - 1) {
        if (pos > 1) {
          result += ", ";
        }
        int nonarrayPos = pos;
        while (arglist.charAt(nonarrayPos) == '[') {
          nonarrayPos++;
          if (nonarrayPos >= arglist.length()) {
            throw new Error("Malformed arglist: " + arglist);
          }
        }
        char c = arglist.charAt(nonarrayPos);
        if (c == 'L') {
          int semicolonPos = arglist.indexOf(';', nonarrayPos);
          if (semicolonPos == -1) {
            throw new Error("Malformed arglist: " + arglist);
          }
          String fieldDescriptor = arglist.substring(pos, semicolonPos + 1);
          result += fieldDescriptorToBinaryName(fieldDescriptor);
          pos = semicolonPos + 1;
        } else {
          String maybe = fieldDescriptorToBinaryName(arglist.substring(pos, nonarrayPos + 1));
          if (maybe == null) {
            // return null;
            throw new Error("Malformed arglist: " + arglist);
          }
          result += maybe;
          pos = nonarrayPos + 1;
        }
      }
      return result + ")";
    }
docs: Convert an argument list from JVML format to Java format. For example, convert
  "([Ljava/lang/Integer;I[[Ljava/lang/Integer;)" to "(java.lang.Integer[], int,
  java.lang.Integer[][])".
  
  @param arglist an argument list, in JVML format
  @return argument list, in Java format