private boolean fixDependency(Class<?> dependency,
			Map<Class<?>, PluginException> dependencyProblemResults) {

		Class<? extends Plugin> pluginClass = discoverServiceProvider(dependency);
		if (pluginClass == null) {
			return false;
		}

		if (getLoadedPlugin(pluginClass) != null) {
			// This will not typically happen, since a plugin that is already loaded that should 
			// have satisfied the dependency.   This can happen though if the dependency discovery
			// process had to do extra work to find unsatisfied dependencies.
			return true;
		}

		try {
			// Create a new Plugin instance and get its services published.  When its added to the 
			// pluginList, it will be initialized in addPluginInstances() after the 
			// resolveDependencies() and related methods finish.
			PluginUtils.assertUniquePluginName(pluginClass);
			Plugin p = PluginUtils.instantiatePlugin(pluginClass, tool);

			p.initServices();

			pluginList.add(p);
			return true;
		}
		catch (PluginException e) {
			dependencyProblemResults.put(dependency, e);
		}
		return false;
	}
Tries to find and pull in the plugin that provides a service.

@param dependency service class that someone depends on
@return boolean true if the dependency was fixed, false if it was not fixed.
Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/PluginManager.java