public void assignConstructorsAndDestructorsUsingExistingName(
			List<RecoveredClass> recoveredClasses) throws CancelledException, InvalidInputException,
			DuplicateNameException, CircularDependencyException {

		for (RecoveredClass recoveredClass : recoveredClasses) {
			monitor.checkCancelled();
			List<Function> indeterminateFunctions = recoveredClass.getIndeterminateList();
			Iterator<Function> functionIterator = indeterminateFunctions.iterator();
			while (functionIterator.hasNext()) {

				monitor.checkCancelled();

				Function function = functionIterator.next();
				Namespace namespace = function.getParentNamespace();
				if (!namespace.equals(recoveredClass.getClassNamespace())) {
					Symbol functionSymbol = function.getSymbol();
					if (functionSymbol.getSource().equals(SourceType.IMPORTED)) {
						functionIterator.remove(); // remove named functions belonging to other class
					}
					continue; // continue in either case to skip functions in other namespaces
				}
				String name = function.getName();
				if (name.equals(recoveredClass.getName())) {
					addConstructorToClass(recoveredClass, function);
					functionIterator.remove();
					continue;
				}
				if (name.equals("~" + recoveredClass.getName())) {
					addDestructorToClass(recoveredClass, function);
					functionIterator.remove();
					continue;
				}
			}

		}
	}
Method to use existing pdb names to assign class constructors and destructors
@param recoveredClasses List of classes
@throws CircularDependencyException if parent namespace is descendant of given namespace
@throws DuplicateNameException if try to create same symbol name already in namespace
@throws InvalidInputException if error setting return type
@throws CancelledException if cancelled
Ghidra/Features/Decompiler/ghidra_scripts/classrecovery/RecoveredClassHelper.java