@Override
	protected void doLoad(Accumulator<ExtensionDetails> accumulator, TaskMonitor monitor)
			throws CancelledException {
		if (extensions != null) {
			accumulator.addAll(extensions);
			return;
		}

		ExtensionUtils.reload();
		Set<ExtensionDetails> archived = ExtensionUtils.getArchiveExtensions();
		Set<ExtensionDetails> installed = ExtensionUtils.getInstalledExtensions();

		// don't show archived extensions that have been installed
		for (ExtensionDetails extension : installed) {
			if (archived.remove(extension)) {
				Msg.trace(this,
					"Not showing archived extension that has been installed.  Archive path: " +
						extension.getArchivePath()); // useful for debugging
			}
		}

		extensions = new HashSet<>();
		extensions.addAll(installed);
		extensions.addAll(archived);

		for (ExtensionDetails e : extensions) {
			String name = e.getName();
			if (originalInstallStates.containsKey(name)) {
				continue; // preserve the original value
			}
			originalInstallStates.put(e.getName(), e.isInstalled());
		}

		accumulator.addAll(extensions);
	}
Returns true if the extension version is valid for this version of Ghidra.

@param details the extension to check
@return true if extension version is valid for this version of Ghidra
Ghidra/Framework/Project/src/main/java/ghidra/framework/project/extensions/ExtensionTableModel.java