private void determineVftableOffsetsfromRTTI(List<RecoveredClass> recoveredClasses)
			throws AddressOutOfBoundsException, Exception {

		PointerDataType pointerDataType = new PointerDataType();

		for (RecoveredClass recoveredClass : recoveredClasses) {
			monitor.checkCancelled();
			List<Address> vftableAddresses = recoveredClass.getVftableAddresses();
			for (Address vftableAddress : vftableAddresses) {
				monitor.checkCancelled();
				Address ptrToColAddress = vftableAddress.subtract(defaultPointerSize);

				Data pointerToCompleteObjLocator = extendedFlatAPI.getDataAt(vftableAddress);
				if (pointerToCompleteObjLocator == null) {
					pointerToCompleteObjLocator =
						extendedFlatAPI.createData(ptrToColAddress, pointerDataType);
				}

				Address colAddress = extendedFlatAPI.getReferencedAddress(ptrToColAddress, false);

				if (colAddress == null) {
					Msg.debug(this, recoveredClass.getName() +
						" couldn't get referenced col from " + ptrToColAddress.toString());
					continue;
				}

				Address addressOfOffset = colAddress.add(4);

				int offset = extendedFlatAPI.getInt(addressOfOffset);

				recoveredClass.addClassOffsetToVftableMapping(offset, vftableAddress);
			}

		}

	}
Method to create map for each class containing offset in class structure for each class vftable using information
found in the class's complete object locator structure(s)
@param recoveredClasses List of classes
@throws Exception when cancelled
Ghidra/Features/Decompiler/ghidra_scripts/classrecovery/RTTIWindowsClassRecoverer.java