@Override
	public void setLanguage(Language newLanguage, CompilerSpecID newCompilerSpecID,
			boolean forceRedisassembly, TaskMonitor monitor)
			throws IllegalStateException, IncompatibleLanguageException, LockException {
		if (newLanguage == language) {
			setLanguage((LanguageTranslator) null, newCompilerSpecID, forceRedisassembly, monitor);
		}
		else {
			LanguageTranslator languageTranslator =
				LanguageTranslatorFactory.getLanguageTranslatorFactory()
						.getLanguageTranslator(language, newLanguage);
			if (languageTranslator == null) {
				throw new IncompatibleLanguageException("Language translation not supported");
			}
			setLanguage(languageTranslator, newCompilerSpecID, forceRedisassembly, monitor);
		}
		try {
			updateMetadata();
		}
		catch (IOException e) {
			dbError(e);
		}
	}
Moves all information stored in the given range to the new location

@param fromAddr the first address in the range to be moved
@param toAddr the address to move to
@param length the number of addresses to move
@param monitor the task monitor to use while deleting information in the given range
@throws AddressOverflowException if there is a problem moving address ranges
@throws RollbackException if the user cancelled the operation via the task monitor
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/ProgramDB.java