private void processConstructorAndDestructors(List<RecoveredClass> recoveredClasses)
			throws CancelledException, InvalidInputException, DuplicateNameException, Exception {

		List<Address> allVftables = getAllVftables();

		// update the class lists to narrow the class objects possible cd lists and indeterminate 
		// lists to remove functions that are also on vfunction lists
		trimConstructorDestructorLists(recoveredClasses, allVftables);

		determineOperatorDeleteAndNewFunctions(allVftables);

		// find deleting destructors 
		findDeletingDestructors(recoveredClasses, allVftables);

		// use atexit param list to find more destructors
		findDestructorsUsingAtexitCalledFunctions(recoveredClasses);

		// figure out which are inlined and put on separate list to be processed later
		separateInlinedConstructorDestructors(recoveredClasses);

		// figure out which member functions are constructors and which are destructors
		// using the order their parents are called		
		processRegularConstructorsAndDestructorsUsingCallOrder(recoveredClasses);

		// determine which of the inlines are constructors and which are destructors
		processInlinedConstructorsAndDestructors(recoveredClasses);

		findConstructorsAndDestructorsUsingAncestorClassFunctions(recoveredClasses);

		findInlineConstructorsAndDestructorsUsingRelatedClassFunctions(recoveredClasses);

		// use the load/store information from decompiler to figure out as many of the 
		// ones that could not be determined in earlier stages
		processRemainingIndeterminateConstructorsAndDestructors(recoveredClasses);

		// use the known constructors and known vfunctions to figure out basic clone functions
		findBasicCloneFunctions(recoveredClasses);

		// This has to be here. It needs all the info from the previously run methods to do this.
		// Finds the constructors that have multiple basic blocks, reference the vftable not in the 
		// first block, and call non-parent constructors and non operator new before the vftable ref
		findMoreInlinedConstructors(recoveredClasses);

		findDestructorsWithNoParamsOrReturn(recoveredClasses);

		// use vftables with references to all the same function (except possibly one deleting 
		// destructor)to find the purecall function
		identifyPureVirtualFunction(recoveredClasses);

		findRealVBaseFunctions(recoveredClasses);

		// make constructors and destructors _thiscalls 
		makeConstructorsAndDestructorsThiscalls(recoveredClasses);

	}
Method to call the various methods to determine whether the functions that make references to
the vftables are constructors, destructors, deleting destructors, clones, or vbase functions
@param recoveredClasses List of classes
@throws CancelledException if cancelled
@throws InvalidInputException if issues setting function return
@throws DuplicateNameException if try to create same symbol name already in namespace
@Exception if issues making labels
Ghidra/Features/Decompiler/ghidra_scripts/classrecovery/RTTIWindowsClassRecoverer.java