public int getLength(Memory memory, Address address, byte[] bytes) {
		Program program = memory.getProgram();
		// RTTI4 should start on a 4 byte boundary.
		if (address.getOffset() % 4 != 0) {
			return 0;
		}
		// check RTTI4 length in bytes.
		if (bytes.length < LENGTH) {
			return 0;
		}

		// First 12 bytes is 3 dword numeric values.
		// Next there may be bytes to align the rtti0 pointer.

		// Next component should refer to RTTI0.
		Address rtti0CompAddress = address.add(RTTI_0_OFFSET);
		Address rtti0Address = getReferencedAddress(program, rtti0CompAddress);
		if (rtti0Address == null || !memory.contains(rtti0Address)) {
			return 0;
		}

		// Last component should refer to RTTI3.
		Address rtti3CompAddress = address.add(RTTI_3_OFFSET);
		Address rtti3Address = getReferencedAddress(program, rtti3CompAddress);
		if (rtti3Address == null || !memory.contains(rtti3Address)) {
			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/RTTI4DataType.java