private Map<PluginPackage, List<Plugin>> buildPluginPackageMap(List<Plugin> plugins) {
		Map<PluginPackage, List<Plugin>> pluginPackageMap = new HashMap<>();
		for (Plugin plugin : plugins) {
			PluginDescription pluginDescription =
				descriptionsByName.get(plugin.getClass().getName());
			if (pluginDescription == null) {
				continue;
			}

			PluginPackage pluginPackage = pluginDescription.getPluginPackage();
			List<Plugin> list = pluginPackageMap.get(pluginPackage);
			if (list == null) {

				list = new ArrayList<>();
				pluginPackageMap.put(pluginPackage, list);
			}
			list.add(plugin);
		}
		return pluginPackageMap;
	}
This class maintains a collection of all plugin classes that are acceptable for a given tool
type.  Simple applications with only one plugin type can use the
{@link DefaultPluginsConfiguration}.  More complex tools can support a subset of the available
plugins. Those tools should create custom subclasses for each tool type, that filter out plugins
that are not appropriate for that tool type.
Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/PluginsConfiguration.java