public static List<JavaComputationalCategory> getParameterCategories(String methodDescriptor) {
		ArrayList<JavaComputationalCategory> categories = new ArrayList<>();
		int closeParenIndex = methodDescriptor.indexOf(")");
		String argString = methodDescriptor.substring(1, closeParenIndex);
		int currentPosition = 0;
		int len = argString.length();
		while (currentPosition < len) {
			String currentParam = argString.substring(currentPosition, currentPosition + 1);
			JavaComputationalCategory category =
				DescriptorDecoder.getComputationalCategoryOfDescriptor(currentParam);

			switch (category) {
				case CAT_1:
					categories.add(JavaComputationalCategory.CAT_1);
					break;
				case CAT_2:
					categories.add(JavaComputationalCategory.CAT_2);
					break;
				default:
					throw new IllegalArgumentException("Bad category for param:" + category.name());
			}

			//advance to next type in argString
			//if it's a reference, it starts with L and ends with a ;
			//if it's an array, it has one "[" for each dimension, then the type (which might be a reference)
			//otherwise you only need to advance one character
			switch (currentParam) {
				case "L":
					int semiColonIndex = argString.indexOf(";", currentPosition);
					currentPosition = semiColonIndex + 1; //advance past ;
					break;
				case "[":
					//advance past all the ['s
					while (argString.charAt(currentPosition) == '[') {
						currentPosition++;
					}
					//advance past the base type of the array
					if (argString.charAt(currentPosition) == 'L') {
						semiColonIndex = argString.indexOf(";", currentPosition);
						currentPosition = semiColonIndex + 1;
					}
					else {
						currentPosition++;
					}
					break;
				default:
					currentPosition++;  //getComputationalCategoryOfDescriptor has already validated currentParam
			}

		}
		return categories;
	}
Returns a list of JavaComputationalCategory objects corresponding to the 
parameters of a method (read in left-to-right order).
@param methodDescriptor
@return
Ghidra/Processors/JVM/src/main/java/ghidra/javaclass/format/DescriptorDecoder.java