public int getLength(Memory memory, Address address, byte[] bytes) {
		// RTTI3 should start on a 4 byte boundary.
		if (address.getOffset() % 4 != 0) {
			return 0;
		}
		// RTTI3 is 16 bytes.
		if (bytes.length < LENGTH) {
			return 0;
		}

		// First 8 bytes is 2 dword numeric values.
		// Next four bytes should be number of RTTI1 pointers in RTTI2.
		long rtti1Count = getRtti1Count(memory, address);
		if (rtti1Count < 0 || rtti1Count > 500) { // For now assume we shouldn't be seeing more than 500 pointers in RTTI2.
			return 0;
		}

		// Last component is either a direct reference or an image base offset to RTTI2.
		Address rtti2Address = getRtti2Address(memory, address);
		if (!memory.contains(rtti2Address)) {
			return 0;
		}

		return LENGTH;
	}
Gets the total length of the data created when this data type is placed at the indicated 
address in memory.
@param memory the program memory for this data.
@param address the start address of the data.
@param bytes the bytes for this data.
@return the length of the data. zero is returned if valid data can't be created at the 
indicated address using this data type.
Ghidra/Features/Base/src/main/java/ghidra/app/util/datatype/microsoft/RTTI3DataType.java