private static Object unbox(DexValue value) {
		if (value instanceof DexValue.DexValueString dexString) {
			return dexString.toString();
		} else if (value instanceof DexValue.DexValueBoolean dexBoolean) {
			return dexBoolean.getValue();
		} else if (value instanceof DexValue.DexValueByte dexByte) {
			return dexByte.getValue();
		} else if (value instanceof DexValue.DexValueChar dexChar) {
			return dexChar.getValue();
		} else if (value instanceof DexValue.DexValueShort dexShort) {
			return dexShort.getValue();
		} else if (value instanceof DexValue.DexValueInt dexInt) {
			return dexInt.getValue();
		} else if (value instanceof DexValue.DexValueFloat dexFloat) {
			return dexFloat.getValue();
		} else if (value instanceof DexValue.DexValueLong dexLong) {
			return dexLong.getValue();
		} else if (value instanceof DexValue.DexValueDouble dexFloat) {
			return dexFloat.getValue();
		} else if (value instanceof DexValue.DexValueAnnotation dexAnnotation) {
			return mapAnno(dexAnnotation.getValue());
		} else if (value instanceof DexValue.DexValueArray dexArray) {
			DexValue[] values = dexArray.getValues();
			Object[] unboxed = new Object[values.length];
			for (int i = 0; i < values.length; i++) {
				unboxed[i] = unbox(values[i]);
			}
			return unboxed;
		} else if (value instanceof DexValue.DexValueEnum dexEnum) {
			DexField field = dexEnum.getValue();
			return field.getHolderType().getTypeName() + " " +
					field.getName() +
					field.getType().toDescriptorString();
		} else if (value instanceof DexValue.DexValueField dexField) {
			DexField field = dexField.getValue();
			return field.getHolderType().getTypeName() + " " +
					field.getName() +
					field.getType().toDescriptorString();
		} else if (value instanceof DexValue.DexValueMethod dexMethod) {
			DexMethod method = dexMethod.getValue();
			return method.getHolderType().getTypeName() + " " +
					method.getName() +
					method.getProto().toDescriptorString();
		} else if (value instanceof DexValue.DexValueMethodHandle dexMethodHandle) {
			return dexMethodHandle.getValue().toAsmHandle(null);
		} else if (value instanceof DexValue.DexValueMethodType dexMethodType) {
			return dexMethodType.getValue().toDescriptorString();
		} else if (value instanceof DexValue.DexValueType dexType) {
			return dexType.getValue().getTypeName();
		} else if (value instanceof DexValue.DexValueNull) {
			return null;
		}
		throw new UnsupportedOperationException("Unsupported dex value type: " + value);
	}
Copies over values by pulling values from the contents of the given class model.

@param dexClass
		D8 Class structure to pull data from.

@return Builder.
recaf-core/src/main/java/software/coley/recaf/info/builder/AndroidClassInfoBuilder.java