static void markupLookupTableData(Class<?> caller, Address address, DexHeader dexHeader,
			OatHeader oatHeader, Program program, TaskMonitor monitor, MessageLog log) {

		if (dexHeader == null) {
			log.appendMsg(
				caller.getSimpleName() + "- markupLookupTableData() - no dex header, skipping...");
			return;
		}

		monitor.setMessage("OAT - Processing Lookup Table Data...");
		monitor.setMaximum(dexHeader.getClassDefsIdsSize());
		monitor.setProgress(0);

		Symbol oatDataSymbol = OatUtilities.getOatDataSymbol(program);
		DataType dword = new DWordDataType();
		try {
			for (int i = 0; i < dexHeader.getClassDefsIdsSize(); ++i) {
				program.getListing().clearCodeUnits(address, address, false, monitor);
				program.getListing().createData(address, dword);
				int value = program.getMemory().getInt(address);
				Address destinationAddress = oatDataSymbol.getAddress().add(value);

				program.getReferenceManager()
						.addMemoryReference(address, destinationAddress, RefType.DATA,
							SourceType.ANALYSIS, 0);
				address = address.add(dword.getLength());

				ClassDefItem classDefItem = dexHeader.getClassDefs().get(i);
				String className =
					DexUtil.convertTypeIndexToString(dexHeader, classDefItem.getClassIndex());
				Namespace classNameSpace =
					DexUtil.createNameSpaceFromMangledClassName(program, className);

				ByteProvider oatClassHeaderProvider =
					new MemoryByteProvider(program.getMemory(), destinationAddress);
				BinaryReader oatClassHeaderReader =
					new BinaryReader(oatClassHeaderProvider, !program.getLanguage().isBigEndian());

				OatClass oatClassHeader = OatClassFactory.getOatClass(oatClassHeaderReader,
					classDefItem.getClassDataItem(), oatHeader.getVersion());

				markupMethod(oatHeader, oatClassHeader, dexHeader, classDefItem, program,
					oatDataSymbol, classNameSpace, log, monitor);

				markupClassHeaderData(program, oatDataSymbol, destinationAddress, oatHeader,
					oatClassHeader, log, monitor);

				monitor.setProgress(i);
			}
		}
		catch (Exception e) {
			log.appendException(e);
		}
	}
Table size is determined by the DexHeader's "classDefsIdsSize" field.
@param caller the caller class
@param address the address to perform markup
@param dexHeader the dex header
@param oatHeader the oat header
@param program the program to markup
@param monitor the task monitor for canceling
@param log the message log for logging messages
Ghidra/Features/FileFormats/src/main/java/ghidra/file/formats/android/oat/oatdexfile/OatDexFileUtilities.java