public static List<DataType> getDataTypeList(String methodDescriptor,
			DataTypeManager dtManager) {
		ArrayList<DataType> paramDataTypes = new ArrayList<>();
		int closeParenIndex = methodDescriptor.indexOf(")");
		String argString = methodDescriptor.substring(1, closeParenIndex);
		DataType currentParamType;

		int currentPosition = 0;
		int len = argString.length();
		String currentParam = null;
		while (currentPosition < len) {
			int arrayDimensions = 0;
			//if it's an array, decode the number of dimensions
			while (argString.charAt(currentPosition) == '[') {
				arrayDimensions++;
				currentPosition++;
			}
			switch (argString.charAt(currentPosition)) {
				case BASE_TYPE_BYTE:
				case BASE_TYPE_CHAR:
				case BASE_TYPE_SHORT:
				case BASE_TYPE_INT:
				case BASE_TYPE_LONG:
				case BASE_TYPE_FLOAT:
				case BASE_TYPE_DOUBLE:
				case BASE_TYPE_BOOLEAN:
					currentParam = argString.substring(currentPosition, currentPosition + 1);
					currentPosition++;
					break;
				case BASE_TYPE_REFERENCE:
					int semiColonIndex = argString.indexOf(";", currentPosition);
					currentParam = argString.substring(currentPosition, semiColonIndex + 1);
					currentPosition = semiColonIndex + 1;
					break;
			}
			currentParamType = getDataTypeOfDescriptor(currentParam, dtManager);
			if (arrayDimensions > 0) {
				paramDataTypes.add(dtManager.getPointer(currentParamType));
			}
			else {
				paramDataTypes.add(currentParamType);
			}
		}
		return paramDataTypes;
	}
Returns an ordered list of the JVM data types corresponding to the parameters of a method.
@param methodDescriptor
@return
Ghidra/Processors/JVM/src/main/java/ghidra/javaclass/format/DescriptorDecoder.java