@Override
	public void markup(Program program, boolean isBinary, TaskMonitor monitor, MessageLog log,
			NTHeader nt) throws DuplicateNameException, CodeUnitInsertionException,
			IOException, MemoryAccessException {

		if (metadataRoot == null) {
			return;
		}

		monitor.setMessage("[" + program.getName() + "]: CLI metadata...");

		// Get our program address
		Address addr = PeUtils.getMarkupAddress(program, isBinary, nt, virtualAddress);
		if (!program.getMemory().contains(addr)) {
			return;
		}

		// Create bookmark
		createDirectoryBookmark(program, addr);

		// Create data type
		DataType dt = metadataRoot.toDataType();
		dt.setCategoryPath(new CategoryPath("/PE/CLI"));
		PeUtils.createData(program, addr, dt, log);

		// Markup metadata header
		metadataRoot.markup(program, isBinary, monitor, log, nt);
	}
Gets the Metadata root.

@return header The Metadata root.
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/pe/cli/CliMetadataDirectory.java