List<Path> findAndRemove(ResourceFile sourceFile) {
			String className = sourceFile.getName();
			if (!className.endsWith(".java")) {
				return null;
			}

			className = className.substring(0, className.length() - 5); // drop ".java"
			long lastModifiedSource = sourceFile.lastModified();
			List<Path> classFiles = classToClassFilesMap.remove(className);
			if (classFiles == null) {
				classFiles = Collections.emptyList();
			}

			long lastModifiedClassFile = classFiles.isEmpty() ? -1
					: classFiles.stream()
							.mapToLong(p -> p.toFile().lastModified())
							.min()
							.getAsLong();
			// if source is newer than the oldest binary, report
			if (lastModifiedSource > lastModifiedClassFile) {
				return classFiles;
			}
			return null;
		}
Map classes in {@code directory} with {@link ClassMapper}.
 
@param directory the directory
@throws IOException if there's a problem listing files
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/osgi/GhidraSourceBundle.java