@Override
	public boolean isValid(Program program, Address startAddress,
			DataValidationOptions validationOptions) {

		Memory memory = program.getMemory();
		Listing listing = program.getListing();

		if (!memory.contains(startAddress)) {
			return false;
		}

		Address endAddress = startAddress.add(LENGTH - 1);
		try {
			MSDataTypeUtils.getBytes(memory, startAddress, LENGTH);
		}
		catch (InvalidDataTypeException e) {
			return false; // Couldn't get enough bytes from memory for an RTTI1.
		}

		if (!validationOptions.shouldIgnoreInstructions() &&
			containsInstruction(listing, startAddress, endAddress)) {
			return false;
		}

		if (!validationOptions.shouldIgnoreDefinedData() &&
			containsDefinedData(listing, startAddress, endAddress)) {
			return false;
		}

		// RTTI1 should start on 4 byte boundary.
		if (startAddress.getOffset() % 4 != 0) {
			return false;
		}

		return validateComponents(program, startAddress, validationOptions);
	}
Gets the address of the RTTI 0 or null if one isn't indicated.
@param program the program  containing the address
@param rtti1Address the address for the RTTI 1 that refers to the RTTI 0
@return the address of the RTTI 0 or null.
Ghidra/Features/Base/src/main/java/ghidra/app/util/datatype/microsoft/RTTI1DataType.java