@Nonnull
	protected static NameType getInfo(@Nonnull String name, @Nonnull String descriptor) throws ExpressionCompileException {
		int size;
		String className;
		if (Types.isPrimitive(descriptor)) {
			PrimitiveType primitiveType = Types.primitiveFromDesc(descriptor);
			size = Types.category(primitiveType);
			className = primitiveType.name();
		} else if (descriptor.charAt(0) == '[') {
			ArrayType arrayParameterType = Types.arrayTypeFromDescriptor(descriptor);
			ClassType componentReturnType = arrayParameterType.componentType();
			if (componentReturnType instanceof PrimitiveType primitiveParameter) {
				className = primitiveParameter.name();
			} else if (componentReturnType instanceof InstanceType instanceType) {
				className = instanceType.internalName().replace('/', '.').replace('$', '.');
			} else {
				throw new ExpressionCompileException("Illegal component type: " + componentReturnType);
			}
			className += "[]".repeat(arrayParameterType.dimensions());
			size = 1;
		} else {
			size = 1;
			className = Types.instanceTypeFromDescriptor(descriptor).internalName().replace('/', '.').replace('$', '.');
		}
		return new NameType(size, name, className);
	}
@param name
		Variable name.
@param descriptor
		Variable descriptor.

@return Variable info wrapper.

@throws ExpressionCompileException
		When the variable descriptor is malformed.
recaf-core/src/main/java/software/coley/recaf/services/compile/stub/ClassStubGenerator.java