private boolean createTableTerminator() throws CancelledException, InvalidDataTypeException {

		Program program = model.getProgram();

		// Create a zero pointer at the end of the vf table.
		DataType dataType = getDataType();
		if (dataType == null) {
			return false;
		}
		long displacement = dataType.getLength();
		Address terminatorAddress = getDataAddress().add(displacement);
		try {
			Address referencedAddress = getAbsoluteAddress(program, terminatorAddress);
			if (referencedAddress == null || referencedAddress.getOffset() != 0) {
				return false;
			}
			Data data = DataUtilities.createData(program, terminatorAddress,
				PointerDataType.dataType, -1, getClearDataMode());
			TypeDescriptorModel rtti0Model = model.getRtti0Model();
			if (rtti0Model != null) {
				monitor.checkCancelled();
				String demangledTypeDescriptor = rtti0Model.getDemangledTypeDescriptor();
				String prefixString = ((demangledTypeDescriptor != null)
						? (demangledTypeDescriptor + Namespace.DELIMITER)
						: "");
				data.setComment(CommentType.EOL, "terminator for " + prefixString + VF_TABLE_LABEL);
				return true;
			}
			return false;
		}
		catch (CodeUnitInsertionException e) {
			Msg.error(this, "Couldn't create vf table's null terminator pointer. " + e.getMessage(),
				e);
			return false;
		}
	}
Constructs a command for applying a vf table dataType at the address indicated by the 
model.
@param vfTableModel the model for the data type
@param applyOptions the options for creating the new data structure and its associated
markup in the program as well as whether to follow other data references and create their 
data too.
Ghidra/Features/MicrosoftCodeAnalyzer/src/main/java/ghidra/app/cmd/data/rtti/CreateVfTableBackgroundCmd.java