synchronized TransientProjectData getTransientProject(GhidraProtocolConnector protocolConnector,
			boolean readOnly) throws IOException {

		String repoName = protocolConnector.getRepositoryName();
		if (repoName == null) {
			throw new IllegalArgumentException(
				"specified protocol connector does not correspond to a repository");
		}

		RepositoryInfo repositoryInfo =
			new RepositoryInfo(protocolConnector.getRepositoryRootGhidraURL(), repoName, readOnly);

		TransientProjectData projectData = repositoryMap.get(repositoryInfo);

		if (projectData == null || !projectData.stopCleanupTimer()) { // cleanup suspended

			StatusCode statusCode = protocolConnector.connect(readOnly);
			if (statusCode != StatusCode.OK) {
				throw new NotConnectedException(statusCode.getDescription());
			}

			RepositoryAdapter repositoryAdapter = protocolConnector.getRepositoryAdapter();
			if (repositoryAdapter == null || !repositoryAdapter.isConnected()) {
				throw new NotConnectedException("Not connected to repository");
			}

			projectData = createTransientProject(repositoryAdapter, repositoryInfo);
			if (projectData != null) {
				repositoryMap.put(repositoryInfo, projectData);
			}
		}
		else {

			Msg.debug(this, "Reusing existing TransientProjectData: " + projectData.repositoryInfo);

			try {
				RepositoryAdapter repository = projectData.getRepository();
				repository.connect();
				protocolConnector.connect(repository);
			}
			finally {
				projectData.startCleanupTimer(); // resume cleanup timer
			}

		}

		Msg.debug(this, "Number of active TransientProjectData instances: " + repositoryMap.size());

		return projectData;
	}
Get the transient project associated with a specific Ghidra protocol 
connector.  This method will establish a connection if needed.
@param protocolConnector Ghidra protocol connector
@param readOnly true if project data should be treated as read-only
@return transient project data
@throws IOException if an IO error occurs
Ghidra/Framework/Project/src/main/java/ghidra/framework/protocol/ghidra/TransientProjectManager.java