public void processInlineConstructor(RecoveredClass recoveredClass,
			Function inlinedConstructorFunction, Map<Address, RecoveredClass> referenceToClassMap)
			throws CancelledException, InvalidInputException, DuplicateNameException,
			CircularDependencyException {

		if (referenceToClassMap.isEmpty()) {
			return;
		}

		List<Address> referencesToVftables = new ArrayList<Address>();

		List<Address> referenceAddresses = new ArrayList<Address>(referenceToClassMap.keySet());
		for (Address reference : referenceAddresses) {
			monitor.checkCancelled();
			Address vftableAddress = getVftableAddress(reference);
			if (vftableAddress != null) {
				referencesToVftables.add(reference);
			}
		}

		if (referencesToVftables.isEmpty()) {
			return;
		}

		Collections.sort(referencesToVftables);

		int numRefs = referencesToVftables.size();
		Address lastRef = referencesToVftables.get(numRefs - 1);

		for (Address refToVftable : referencesToVftables) {
			monitor.checkCancelled();
			RecoveredClass referencedClass = referenceToClassMap.get(refToVftable);

			// last reference is the constructor
			if (refToVftable.equals(lastRef)) {
				addConstructorToClass(referencedClass, inlinedConstructorFunction);
			}
			// the rest are inlined constructors
			else {
				addInlinedConstructorToClass(referencedClass, inlinedConstructorFunction);

			}
			referencedClass.removeIndeterminateInline(inlinedConstructorFunction);
		}

		return;

	}
Method to process a found inlined constructor
@param recoveredClass the class being processed
@param inlinedConstructorFunction the function containing an inlined ancestor constructor
@param referenceToClassMap the map of references to classes
@throws CancelledException if cancelled
@throws InvalidInputException if issue setting return type
@throws DuplicateNameException if try to create same symbol name already in namespace
@throws CircularDependencyException if parent namespace is descendant of given namespace
Ghidra/Features/Decompiler/ghidra_scripts/classrecovery/RecoveredClassHelper.java