private VersionException initializeDatabase()
			throws IOException, VersionException, LanguageNotFoundException {
		boolean requiresUpgrade = false;

		table = dbh.getTable(TABLE_NAME);
		registryTable = dbh.getTable(REGISTRY_TABLE_NAME);
		if (table == null || registryTable == null) {
			throw new IOException("Unsupported User Data File Content");
		}

		DBRecord record = table.getRecord(new StringField(LANGUAGE_ID));
		languageID = new LanguageID(record.getString(VALUE_COL));

		record = table.getRecord(new StringField(LANGUAGE_VERSION));
		languageVersion = 1;
		try {
			languageVersion = Integer.parseInt(record.getString(VALUE_COL));
		}
		catch (Exception e) {
			// Ignore
		}

		int storedVersion = 1;
		record = table.getRecord(new StringField(STORED_DB_VERSION));
		try {
			storedVersion = Integer.parseInt(record.getString(VALUE_COL));
		}
		catch (NumberFormatException e) {
			// assume version 1 - value not stored
		}
		if (storedVersion > DB_VERSION) {
			throw new VersionException(VersionException.NEWER_VERSION, false);
		}
		if (storedVersion < UPGRADE_REQUIRED_BEFORE_VERSION) {
			requiresUpgrade = true;
		}
		loadMetadata();
		return requiresUpgrade ? new VersionException(true) : null;
	}
Language specified by languageName was not found.  Check for
valid language translation/migration.  Old language version specified by
languageVersion.
@param e language not found exception
@return true if language upgrade required
@throws LanguageNotFoundException if a suitable replacement language not found
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/ProgramUserDataDB.java