private DataType getDataType(Program program) {

		if (program != lastProgram || lastElementCount == NO_LAST_COUNT) {
			setIsDataTypeAlreadyBasedOnCount(true);

			lastProgram = program;
			lastDataType = null;
			lastElementCount = elementCount;
			
			if (lastElementCount > 0) {
				DataTypeManager dataTypeManager = program.getDataTypeManager();
				PointerDataType pointerDt = new PointerDataType(dataTypeManager);

				// Create an array of pointers and return it.
				ArrayDataType arrayDataType = new ArrayDataType(pointerDt, lastElementCount,
					pointerDt.getLength(), dataTypeManager);

				lastDataType = MSDataTypeUtils.getMatchingDataType(program, arrayDataType);
			}
			else {
				lastDataType = null;
			}
		}
		return lastDataType;
	}
This gets the vf table structure for the indicated program.
@param program the program which will contain this data. 
@return the vf table structure as an array.
Ghidra/Features/MicrosoftCodeAnalyzer/src/main/java/ghidra/app/cmd/data/rtti/VfTableModel.java