public DataType toDataType() throws DuplicateNameException {
		StructureDataType struct = new StructureDataType(NAME, 0);

		struct.add(WORD, 2, "Revision", null);
		struct.add(WORD, 2, "Flags", null);

		StructureDataType s0 = new StructureDataType(NAME0, 0);
		StructureDataType s1 = new StructureDataType(NAME1, 0);
		StructureDataType s2 = new StructureDataType(NAME2, 0);
		StructureDataType s3 = new StructureDataType(NAME3, 0);

		s0.add(DWORD, 4, "TimerResolution", null);
		s0.add(DWORD, 4, "PageSize", null);
		s0.add(DWORD, 4, "NumberOfPhysicalPages", null);
		s0.add(DWORD, 4, "LowestPhysicalPageNumber", null);
		s0.add(DWORD, 4, "HighestPhysicalPageNumber", null);
		s0.add(DWORD, 4, "AllocationGranularity", null);
		s0.add(QWORD, 8, "MinimumUserModeAddress", null);
		s0.add(QWORD, 8, "MaximumUserModeAddress", null);
		s0.add(QWORD, 8, "ActiveProcessorsAffinityMask", null);
		s0.add(DWORD, 4, "NumberOfProcessors", null);

		struct.add(s0, s0.getLength(), NAME0, null);

		s1.add(QWORD, 8, "CurrentSize", null);
		s1.add(QWORD, 8, "PeakSize", null);
		s1.add(DWORD, 4, "PageFaultCount", null);
		s1.add(QWORD, 8, "MinimumWorkingSet", null);
		s1.add(QWORD, 8, "MaximumWorkingSet", null);
		s1.add(QWORD, 8, "CurrentSizeIncludingTransitionInPages", null);
		s1.add(QWORD, 8, "PeakSizeIncludingTransitionInPages", null);
		s1.add(DWORD, 4, "TransitionRePurposeCount", null);
		s1.add(DWORD, 4, "Flags", null);

		struct.add(s1, s1.getLength(), NAME1, null);

		s2.add(QWORD, 8, "AvailablePages", null);
		s2.add(QWORD, 8, "CommittedPages", null);
		s2.add(QWORD, 8, "CommitLimit", null);
		s2.add(QWORD, 8, "PeakCommitment", null);

		struct.add(s2, s2.getLength(), NAME2, null);

		s3.add(QWORD, 8, "IdleProcessTime", null);
		s3.add(QWORD, 8, "IoReadTransferCount", null);
		s3.add(QWORD, 8, "IoWriteTransferCount", null);
		s3.add(QWORD, 8, "IoOtherTransferCount", null);
		s3.add(DWORD, 4, "IoReadOperationCount", null);
		s3.add(DWORD, 4, "IoWriteOperationCount", null);
		s3.add(DWORD, 4, "IoOtherOperationCount", null);
		s3.add(DWORD, 4, "AvailablePages", null);
		s3.add(DWORD, 4, "CommittedPages", null);
		s3.add(DWORD, 4, "CommitLimit", null);
		s3.add(DWORD, 4, "PeakCommitment", null);
		s3.add(DWORD, 4, "PageFaultCount", null);
		s3.add(DWORD, 4, "CopyOnWriteCount", null);
		s3.add(DWORD, 4, "TransitionCount", null);
		s3.add(DWORD, 4, "CacheTransitionCount", null);
		s3.add(DWORD, 4, "DemandZeroCount", null);
		s3.add(DWORD, 4, "PageReadCount", null);
		s3.add(DWORD, 4, "PageReadIoCount", null);
		s3.add(DWORD, 4, "CacheReadCount", null);
		s3.add(DWORD, 4, "CacheIoCount", null);
		s3.add(DWORD, 4, "DirtyPagesWriteCount", null);
		s3.add(DWORD, 4, "DirtyWriteIoCount", null);
		s3.add(DWORD, 4, "MappedPagesWriteCount", null);
		s3.add(DWORD, 4, "MappedWriteIoCount", null);
		s3.add(DWORD, 4, "PagedPoolPages", null);
		s3.add(DWORD, 4, "NonPagedPoolPages", null);
		s3.add(DWORD, 4, "PagedPoolAllocs", null);
		s3.add(DWORD, 4, "PagedPoolFrees", null);
		s3.add(DWORD, 4, "NonPagedPoolAllocs", null);
		s3.add(DWORD, 4, "NonPagedPoolFrees", null);
		s3.add(DWORD, 4, "FreeSystemPtes", null);
		s3.add(DWORD, 4, "ResidentSystemCodePage", null);
		s3.add(DWORD, 4, "TotalSystemDriverPages", null);
		s3.add(DWORD, 4, "TotalSystemCodePages", null);
		s3.add(DWORD, 4, "NonPagedPoolLookasideHits", null);
		s3.add(DWORD, 4, "PagedPoolLookasideHits", null);
		s3.add(DWORD, 4, "AvailablePagedPoolPages", null);
		s3.add(DWORD, 4, "ResidentSystemCachePage", null);
		s3.add(DWORD, 4, "ResidentPagedPoolPage", null);
		s3.add(DWORD, 4, "ResidentSystemDriverPage", null);
		s3.add(DWORD, 4, "CcFastReadNoWait", null);
		s3.add(DWORD, 4, "CcFastReadWait", null);
		s3.add(DWORD, 4, "CcFastReadResourceMiss", null);
		s3.add(DWORD, 4, "CcFastReadNotPossible", null);
		s3.add(DWORD, 4, "CcFastMdlReadNoWait", null);
		s3.add(DWORD, 4, "CcFastMdlReadWait", null);
		s3.add(DWORD, 4, "CcFastMdlReadResourceMiss", null);
		s3.add(DWORD, 4, "CcFastMdlReadNotPossible", null);
		s3.add(DWORD, 4, "CcMapDataNoWait", null);
		s3.add(DWORD, 4, "CcMapDataWait", null);
		s3.add(DWORD, 4, "CcMapDataNoWaitMiss", null);
		s3.add(DWORD, 4, "CcMapDataWaitMiss", null);
		s3.add(DWORD, 4, "CcPinMappedDataCount", null);
		s3.add(DWORD, 4, "CcPinReadNoWait", null);
		s3.add(DWORD, 4, "CcPinReadWait", null);
		s3.add(DWORD, 4, "CcPinReadNoWaitMiss", null);
		s3.add(DWORD, 4, "CcPinReadWaitMiss", null);
		s3.add(DWORD, 4, "CcCopyReadNoWait", null);
		s3.add(DWORD, 4, "CcCopyReadWait", null);
		s3.add(DWORD, 4, "CcCopyReadNoWaitMiss", null);
		s3.add(DWORD, 4, "CcCopyReadWaitMiss", null);
		s3.add(DWORD, 4, "CcMdlReadNoWait", null);
		s3.add(DWORD, 4, "CcMdlReadWait", null);
		s3.add(DWORD, 4, "CcMdlReadNoWaitMiss", null);
		s3.add(DWORD, 4, "CcMdlReadWaitMiss", null);
		s3.add(DWORD, 4, "CcReadAheadIos", null);
		s3.add(DWORD, 4, "CcLazyWriteIos", null);
		s3.add(DWORD, 4, "CcLazyWritePages", null);
		s3.add(DWORD, 4, "CcDataFlushes", null);
		s3.add(DWORD, 4, "CcDataPages", null);
		s3.add(DWORD, 4, "ContextSwitches", null);
		s3.add(DWORD, 4, "FirstLevelTbFills", null);
		s3.add(DWORD, 4, "SecondLevelTbFills", null);
		s3.add(DWORD, 4, "SystemCalls", null);

		s3.add(QWORD, 8, "CcTotalDirtyPages", null);
		s3.add(QWORD, 8, "CcDirtyPageThreshold", null);

		s3.add(QWORD, 8, "ResidentAvailablePages", null);
		s3.add(QWORD, 8, "SharedCommittedPages", null);

		struct.add(s3, s3.getLength(), NAME3, null);

		return struct;
	}
@see ghidra.app.util.bin.StructConverter#toDataType()
Ghidra/Features/FileFormats/src/main/java/ghidra/file/formats/dump/mdmp/SystemMemoryInfoStream.java