@Override
	public boolean closeProgram(Program program, boolean ignoreChanges) {
		if (program == null) {
			return false;
		}
		Runnable r = () -> {
			// Note: The tool.canCloseDomainObject() call must come before the
			// programSaveMgr.canClose() call since plugins may save changes to the program
			// so that they can close.
			if (ignoreChanges || program.isClosed() || programMgr.isPersistent(program) ||
				(tool.canCloseDomainObject(program) && programSaveMgr.canClose(program))) {
				programMgr.removeProgram(program);
				contextChanged();
			}
		};
		Swing.runNow(r);
		return !programMgr.contains(program);
	}
Method called if the plugin supports this domain file.

@param data the data to be used by the running tool
@return false if data is not a Program object.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/ProgramManagerPlugin.java