@Override
	protected void close() {
		if (programUserData != null && changed && languageUpgradeTranslator != null) {
			// Prevent user data from being saved if program and user data 
			// have gone through a major language upgrade and the program
			// was not saved.
			programUserData.setChanged(false);
		}
		super.close();
		intRangePropertyMap.clear();
		addrSetPropertyMap.clear();
		for (ManagerDB manager : managers) {
			// have to check for null in case we are closing after a failed open. This happens during
			// testing where we first try to open a program and if it fails, we upgrade and re-open.
			if (manager != null) {
				manager.dispose();
			}
		}
	}
Translate language
@param translator language translator, if null only re-disassembly will occur.
@param newCompilerSpecID new compiler specification which corresponds to new language, may be null.
@param forceRedisassembly if true a redisassembly will be forced even if not required
@param monitor task monitor
@throws LockException if exclusive access is missing
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/ProgramDB.java