public DWARFAttributeValue readValue(DWARFFormContext context) throws IOException {
		switch (this) {
			case DW_FORM_addrx1:
			case DW_FORM_addrx2:
			case DW_FORM_addrx3:
			case DW_FORM_addrx4: {
				long index = context.reader().readNextUnsignedValue(size);
				return new DWARFIndirectAttribute(index, context.def());
			}

			case DW_FORM_data1:
			case DW_FORM_data2:
			case DW_FORM_data4:
			case DW_FORM_data8: {
				long val = context.reader().readNextValue(size);
				return new DWARFNumericAttribute(size * 8, val, true, true, context.def());
			}
				
			case DW_FORM_ref1:
			case DW_FORM_ref2:
			case DW_FORM_ref4:
			case DW_FORM_ref8: {
				long uoffset = context.reader().readNextUnsignedValue(size);
				return new DWARFNumericAttribute(uoffset + context.compUnit().getStartOffset(),
					context.def());
			}

			case DW_FORM_strx1:
			case DW_FORM_strx2:
			case DW_FORM_strx3:
			case DW_FORM_strx4: {
				long index = context.reader().readNextUnsignedValue(size);
				return new DWARFDeferredStringAttribute(index, context.def());
			}

			default:
				throw new IllegalArgumentException("Unsupported DWARF Form: " + this);
		}
	}
Reads a DIE attribute value from a stream.

@param context {@link DWARFFormContext}
@return {@link DWARFAttributeValue}
@throws IOException if error reading
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/dwarf/attribs/DWARFForm.java