public void upgrade(ProgramDB upgradeProgram, TaskMonitor monitor)
			throws CancelledException, IOException {

		if (this.program != null) {
			throw new AssertException("Function manager already upgraded");
		}
		this.program = upgradeProgram;
		dataManager = upgradeProgram.getDataTypeManager();

		monitor.setMessage("Upgrading Functions...");
		monitor.initialize(getFunctionCount());
		int cnt = 0;

		OldFunctionIteratorDB iter = getFunctions();
		while (iter.hasNext()) {
			monitor.checkCancelled();
			upgradeFunction(iter.next());
			monitor.setProgress(++cnt);
		}
		dispose();
	}
Actually does the work of upgrading the old program function manager.
@param upgradeProgram the program to upgrade
@param monitor the task monitor to allow the user to cancel the upgrade
@throws CancelledException if the user cancels the upgrade
@throws IOException if an i/o error occurs
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/oldfunction/OldFunctionManager.java