@Override
	public void markup(Program program, Address addr, MachHeader header, TaskMonitor monitor,
			MessageLog log) throws CancelledException {

		try {
			if (identOffset != 0) {
				Address identAddr = addr.add(identOffset);
				DataUtilities.createData(program, identAddr, STRING, -1,
					DataUtilities.ClearDataMode.CHECK_FOR_SPACE);
				program.getListing()
						.setComment(identAddr, CommentType.PRE, "CS_CodeDirectory identifer");
			}
			if (teamOffset != 0) {
				Address teamAddr = addr.add(teamOffset);
				DataUtilities.createData(program, teamAddr, STRING, -1,
					DataUtilities.ClearDataMode.CHECK_FOR_SPACE);
				program.getListing()
						.setComment(teamAddr, CommentType.PRE, "CS_CodeDirectory team identifier");
			}
			if (hashOffset != 0 && hashSize != 0) {
				Address hashAddr = addr.add(hashOffset);
				DataType hashArrayDt = new ArrayDataType(BYTE, hashSize, 1);
				DataType hasheArrayArrayDt = new ArrayDataType(hashArrayDt, nCodeSlots, 1);
				DataUtilities.createData(program, hashAddr, hasheArrayArrayDt, -1,
					DataUtilities.ClearDataMode.CHECK_FOR_SPACE);
				program.getListing()
						.setComment(hashAddr, CommentType.PRE, "CS_CodeDirectory hashes");
			}
		}
		catch (Exception e) {
			log.appendMsg(CodeSignatureCodeDirectory.class.getSimpleName(),
				"Failed to markup CS_CodeDirectory");
		}
	}
Creates a new {@link CodeSignatureCodeDirectory}

@param reader A {@link BinaryReader} positioned at the start of the structure
@throws IOException if there was an IO-related problem creating the structure
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/macho/commands/codesignature/CodeSignatureCodeDirectory.java