private void initManagers(OpenMode openMode, TaskMonitor monitor)
			throws CancelledException, IOException {
		globalNamespace = new GlobalNamespace(getMemory());
		for (int i = 0; i < NUM_MANAGERS; i++) {
			monitor.checkCancelled();
			managers[i].setProgram(this);
		}
		listing.setProgram(this);

		if (openMode == OpenMode.CREATE) {
			getDataTypeManager().saveDataOrganization();
		}

		monitor.checkCancelled();

		if (openMode == OpenMode.UPGRADE) {
			if (oldFunctionMgr != null) {
				// Upgrade Function Manager 
				oldFunctionMgr.upgrade(this, monitor);
			}
		}

		for (int i = 0; i < NUM_MANAGERS; i++) {
			monitor.checkCancelled();
			managers[i].programReady(openMode, getStoredVersion(), monitor);
		}

	}
Initialize the following fields from the database and check the database version for an existing database:
<ul>
<li>name</li>
<li>languageName</li>
<li>languageVersion</li>
<li>LanguageMinorVersion</li>
</ul>
@param openMode program open mode
@return version exception if the current version is out of date and can be upgraded
@throws IOException if there is an exception at the database level
@throws VersionException if the data is newer than this version of Ghidra and can not be
upgraded or opened.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/ProgramDB.java