public static DataType getDataTypeOfDescriptor(String descriptor, DataTypeManager dtManager) {
		//all references to objects start with "L"
		//all references to arrays start with "["
		//all other descriptors are just one letter. 
		if (descriptor.startsWith("[")) {
			return getPointerType(descriptor, dtManager);
		}
		switch (descriptor.charAt(0)) {
			case BASE_TYPE_BYTE:
				return SignedByteDataType.dataType;
			case BASE_TYPE_CHAR:
				return CharDataType.dataType;
			case BASE_TYPE_INT:
				return IntegerDataType.dataType;
			case BASE_TYPE_SHORT:
				return ShortDataType.dataType;
			case BASE_TYPE_BOOLEAN:
				return BooleanDataType.dataType;
			case BASE_TYPE_FLOAT:
				return FloatDataType.dataType;
			case BASE_TYPE_REFERENCE:  //object reference		
				return getReferenceTypeOfDescriptor(descriptor, dtManager, true);
			case BASE_TYPE_DOUBLE:
				return DoubleDataType.dataType;
			case BASE_TYPE_LONG:
				return LongDataType.dataType;
			case BASE_TYPE_VOID:  //void (only for return types)
				return DataType.VOID;
			default:
				throw new IllegalArgumentException("Invalid type descriptor: " + descriptor);
		}
	}
Returns the datatype that the JVM uses to store a given parameter or field descriptor.
@param descriptor
@return
Ghidra/Processors/JVM/src/main/java/ghidra/javaclass/format/DescriptorDecoder.java