void forcedDispose() {

		synchronized (cleanupTimer) {
			if (disposed) {
				return;
			}
			stopCleanupTimer();
			disposed = true;

			String msgTail = " transient project (" + repositoryInfo.toShortString() + "): " +
				getProjectLocator().getProjectDir() + ", URL: " + repositoryInfo.getURL();
			if (instanceUseCount != 0) {
				Msg.error(this, "Premature removal of active" + msgTail);
			}
			else {
				Msg.debug(this, "Removing idle" + msgTail);
			}
		}

		dataMgr.cleanupProjectData(repositoryInfo, this);

		super.dispose(); // disconnects repository

		// Remove temporary project storage
		// NOTE: This could be affected by project files which still remain open
		ProjectLocator locator = getProjectLocator();
		FileUtilities.deleteDir(locator.getProjectDir());
		locator.getMarkerFile().delete();
	}
@return true if timer was running and has been stopped
Ghidra/Framework/Project/src/main/java/ghidra/framework/protocol/ghidra/TransientProjectData.java