@Override
	public DataType toDataType() throws DuplicateNameException, IOException {
		StructureDataType struct;
		if (isScattered()) {
			struct = new StructureDataType("scattered_relocation_info", 0);
			try {
				struct.insertBitFieldAt(0, DWORD.getLength(), 0, DWORD, 24, "r_address", "");
				struct.insertBitFieldAt(0, DWORD.getLength(), 24, DWORD, 4, "r_type", "");
				struct.insertBitFieldAt(0, DWORD.getLength(), 28, DWORD, 2, "r_length", "");
				struct.insertBitFieldAt(0, DWORD.getLength(), 30, DWORD, 1, "r_pcrel", "");
				struct.insertBitFieldAt(0, DWORD.getLength(), 31, DWORD, 1, "r_scattered", "");
			}
			catch (InvalidDataTypeException e) {				
				struct.add(DWORD, "r_mask", "{r_address,r_type,r_length,r_pcrel,r_scattered}");
			}
			struct.add(DWORD, "r_value", null);
		}
		else {
			struct = new StructureDataType("relocation_info", 0);
			struct.add(DWORD, "r_address", null);
			try {
				struct.insertBitFieldAt(4, DWORD.getLength(), 0, DWORD, 24, "r_symbolnum", "");
				struct.insertBitFieldAt(4, DWORD.getLength(), 24, DWORD, 1, "r_pcrel", "");
				struct.insertBitFieldAt(4, DWORD.getLength(), 25, DWORD, 2, "r_length", "");
				struct.insertBitFieldAt(4, DWORD.getLength(), 27, DWORD, 1, "r_extern", "");
				struct.insertBitFieldAt(4, DWORD.getLength(), 28, DWORD, 4, "r_type", "");
			}
			catch (InvalidDataTypeException e) {
				struct.add(DWORD, "r_mask", "{r_symbolnum,r_pcrel,r_length,r_extern,r_type}");
			}
		}
		struct.setCategoryPath(new CategoryPath(MachConstants.DATA_TYPE_CATEGORY));
		return struct;
	}
Returns the values array for storage into the program's relocation table.
@return the values array for storage into the program's relocation table
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/macho/RelocationInfo.java