private static Set<Row> enumerateRows(ManifestWorkspace.SourceWorkspace<?> workspace, PluginScanResult scanResult) {
        Set<Row> rows = new HashSet<>();
        Map<String, Set<PluginType>> nonLoadableManifests = new HashMap<>();
        workspace.forEach((className, type) -> {
            // Mark all manifests in the workspace as non-loadable first
            nonLoadableManifests.computeIfAbsent(className, ignored -> EnumSet.of(type)).add(type);
        });
        scanResult.forEach(pluginDesc -> {
            // Only loadable plugins appear in the scan result
            Set<String> rowAliases = new LinkedHashSet<>();
            rowAliases.add(PluginUtils.simpleName(pluginDesc));
            rowAliases.add(PluginUtils.prunedName(pluginDesc));
            rows.add(newRow(workspace, pluginDesc.className(), new ArrayList<>(rowAliases), pluginDesc.type(), pluginDesc.version(), true));
            // If a corresponding manifest exists, mark it as loadable by removing it from the map.
            nonLoadableManifests.getOrDefault(pluginDesc.className(), Collections.emptySet()).remove(pluginDesc.type());
        });
        nonLoadableManifests.forEach((className, types) -> types.forEach(type -> {
            // All manifests which remain in the map are not loadable
            rows.add(newRow(workspace, className, Collections.emptyList(), type, PluginDesc.UNDEFINED_VERSION, false));
        }));
        return rows;
    }
The unit of work for a command.
<p>This is unique to the (source, class, type) tuple, and contains additional pre-computed information
that pertains to this specific plugin.
tools/src/main/java/org/apache/kafka/tools/ConnectPluginPath.java