private void indexProject(ProjectData projectData) {
		int fileCount = projectData.getFileCount();
		if (fileCount < 0 || fileCount > ProjectDataTablePanel.MAX_FILE_COUNT) {
			return;
		}

		indexThread = new Thread(() -> {
			int count = 0;
			for (DomainFile df : ProjectDataUtils.descendantFiles(projectData.getRootFolder())) {
				if (indexThread.isInterrupted()) {
					break;
				}
				indexFile(df);
				if (count++ % 10 == 0) {
					indexListeners.invoke().indexUpdated();
					Swing.allowSwingToProcessEvents();
				}
			}
			indexThread = null;
			indexListeners.invoke().indexUpdated();
		}, "Project Indexing Thread");
		indexThread.setDaemon(true);
		indexThread.start();
	}
@param indexType IndexType enum
@param mappingFunc bifunc that returns value that will be used to lookup the file
@param indexedFiles map of index keyvalue to fileId (either string or list of strings)
Ghidra/Features/Base/src/main/java/ghidra/plugin/importer/ProjectIndexService.java