private List<HighVariable> getVariableThatStoresVftablePointer(HighFunction highFunction,
			Address vftableReference) throws CancelledException {

		List<HighVariable> highVars = new ArrayList<HighVariable>();

		Iterator<PcodeOpAST> pcodeOps = highFunction.getPcodeOps();
		while (pcodeOps.hasNext()) {
			monitor.checkCancelled();
			PcodeOp pcodeOp = pcodeOps.next();
			if (pcodeOp.getOpcode() == PcodeOp.STORE) {

				Address address = getTargetAddressFromPcodeOp(pcodeOp);
				if (address.equals(vftableReference)) {
					Varnode input = pcodeOp.getInput(1);
					if (input.getDef() != null && input.getDef().getOpcode() == PcodeOp.CAST) {
						input = input.getDef().getInput(0);
					}
					if (input.getHigh() != null) {
						highVars.add(input.getHigh());
					}
				}
			}
		}
		return highVars;

	}
Method to determine which variable in the decompiler stores the vftable address
@param highFunction the decompiler high function
@param vftableReference the address that points to a vftable
@return the list of variables in the given function that store the vftable address
@throws CancelledException if cancelled
Ghidra/Features/Decompiler/ghidra_scripts/classrecovery/RecoveredClassHelper.java