@Override
	public void validateModelSpecificInfo() throws InvalidDataTypeException {

		Program program = getProgram();
		Address startAddress = getAddress();

		// Get the model from the meta pointer.
		Address metaAddress = getMetaAddress();
		Address rtti4Address = getAbsoluteAddress(program, metaAddress);
		rtti4Model = new Rtti4Model(program, rtti4Address, validationOptions);

		// Get the table
		DataType individualEntryDataType = new PointerDataType(program.getDataTypeManager());
		long entrySize = individualEntryDataType.getLength();

		// Each entry is a pointer to where a function can possibly be created.
		long numEntries = elementCount;
		if (numEntries == 0) {
			throw new InvalidDataTypeException(
				getName() + " data type at " + getAddress() + " doesn't have a valid vf table.");
		}

		Address vfTableFieldAddress = startAddress;
		for (int ordinal = 0; ordinal < numEntries && vfTableFieldAddress != null; ordinal++) {

			// Each component is a pointer (to a function).
			Address functionAddress = getAbsoluteAddress(program, vfTableFieldAddress);
			if (functionAddress == null) {
				throw new InvalidDataTypeException(
					getName() + " at " + getAddress() + " doesn't refer to a valid function.");
			}

			try {
				vfTableFieldAddress = vfTableFieldAddress.add(entrySize); // Add the data type size.
			}
			catch (AddressOutOfBoundsException e) {
				if (ordinal < (numEntries - 1)) {
					throw new InvalidDataTypeException(
						getName() + " at " + getAddress() + " isn't valid.");
				}
				break;
			}
		}
	}
Get the number of vftable elements in this vftable
@return number of elements
Ghidra/Features/MicrosoftCodeAnalyzer/src/main/java/ghidra/app/cmd/data/rtti/VfTableModel.java