@Override
	public DataType toDataType() throws DuplicateNameException, IOException {
		Structure struct = new StructureDataType(NAME, 0);
		struct.setCategoryPath(new CategoryPath(PATH));
		struct.add(DWORD, "Signature", "must be 0x424a5342");
		struct.add(WORD, "MajorVersion", null);
		struct.add(WORD, "MinorVersion", null);
		struct.add(DWORD, "Reserved", "should be 0");
		struct.add(DWORD, "VersionLength", null);
		struct.add(new ArrayDataType(CharDataType.dataType, this.versionLength, 1), "Version",
			null);
		struct.add(WORD, "Flags", "should be 0");
		struct.add(WORD, "StreamsCount", "number of stream headers to follow");
		for (CliStreamHeader hdr : streamHeaderMap.values()) {
			struct.add(hdr.toDataType(), hdr.getName(), null);
		}
		return struct;
	}
Constructs a new CLI Metadata Root datatype. Matches ISO 23271 II.24.2.

@param reader A binary reader set to start reading at the start of this header.
@param rva The RVA of this header.
@throws IOException if there is a problem reading the header.
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/pe/cli/CliMetadataRoot.java