private static CppCompositeType createP2_struct(DataTypeManager dtm) {
		String name = "P2NS::P2";
		SymbolPath classSp = new SymbolPath(SymbolPathParser.parse(name));
		CppCompositeType struct = createStruct(dtm, name, 16);
		struct.addVirtualFunctionTablePointer(ClassUtils.VXPTR_TYPE, 0);
		struct.addMember("p2", intT, false, publicDirectAttributes, 8, null);
		struct.addVirtualMethod(0, 0, new SymbolPath(classSp, "fp2_3"), fintvoidT);
		struct.addVirtualMethod(0, 8, new SymbolPath(classSp, "fp2_4"), fintintT);
		struct.addVirtualMethod(0, 16, new SymbolPath(classSp, "fp2_4"), fintvoidT);
		struct.addVirtualMethod(0, 24, new SymbolPath(classSp, "fp2_5"), fintvoidT);
		struct.addVirtualMethod(0, 32, new SymbolPath(classSp, "fp2_6"), fintintT);
		struct.addVirtualMethod(0, 40, new SymbolPath(classSp, "fp2_6"), fintvoidT);
		struct.addVirtualMethod(0, 48, new SymbolPath(classSp, "fp2_7"), fintvoidT);
		struct.addVirtualMethod(0, 56, new SymbolPath(classSp, "fp2_8"), fintintT);
		struct.addVirtualMethod(0, 64, new SymbolPath(classSp, "fp2_8"), fintvoidT);
		struct.addVirtualMethod(0, 72, new SymbolPath(classSp, "fp2_9"), fintvoidT);
		struct.addVirtualMethod(0, 80, new SymbolPath(classSp, "fp2_10"), fintintT);
		struct.addVirtualMethod(0, 88, new SymbolPath(classSp, "fp2_10"), fintvoidT);
		return struct;
	}
Class to create the vftm 64-bit program and mock PDB
Ghidra/Features/PDB/src/test/java/ghidra/app/util/pdb/Vftm64ProgramCreator.java