private void markupClassOffsets(Program program, Symbol oatDataSymbol, OatHeader oatHeader,
			Data headerData, TaskMonitor monitor, MessageLog log) throws CancelledException {

		SymbolTable symbolTable = program.getSymbolTable();
		ReferenceManager referenceManager = program.getReferenceManager();
		EquateTable equateTable = program.getEquateTable();

		for (int i = 0; i < headerData.getNumComponents(); ++i) {
			monitor.checkCancelled();
			if (!headerData.getComponent(i).getFieldName().equals("executable_offset_") &&
				headerData.getComponent(i).getFieldName().endsWith("_offset_")) {
				Scalar scalar = headerData.getComponent(i).getScalar(0);
				if (scalar.getUnsignedValue() > 0) {
					Address toAddr = oatDataSymbol.getAddress().add(scalar.getUnsignedValue());
					toAddr = OatUtilities.adjustForThumbAsNeeded(oatHeader, program, toAddr, log);

					referenceManager.addMemoryReference(headerData.getComponent(i).getMinAddress(),
						toAddr, RefType.DATA, SourceType.ANALYSIS, 0);
					try {
						symbolTable.createLabel(toAddr, headerData.getComponent(i).getFieldName(),
							SourceType.ANALYSIS);

						disassembleAsNeeded(program, toAddr);
					}
					catch (Exception e) {
						//ignore...
					}
				}
			}
			else if (headerData.getComponent(i)
					.getFieldName()
					.equals(OatInstructionSet.DISPLAY_NAME)) {
				try {
					Scalar scalar = headerData.getComponent(i).getScalar(0);
					OatInstructionSet instructionSet =
						OatInstructionSet.valueOf((int) scalar.getUnsignedValue());
					Equate equate =
						equateTable.createEquate(instructionSet.name(), scalar.getUnsignedValue());
					equate.addReference(headerData.getComponent(i).getMinAddress(), 0);
				}
				catch (Exception e) {
					//ignore...
				}
			}
		}
	}
Annotates the listing for the ".oat_patches" section(s).  
The format of the section changes based on the OAT version.
Ghidra/Features/FileFormats/src/main/java/ghidra/file/formats/android/oat/OatHeaderAnalyzer.java