We pass `null` for the class name here:

https://github.com/elastic/elasticsearch/blob/f086dd18ddc705bf84a1ff99d35196ec2498fd52/server/src/main/java/org/elasticsearch/plugins/PluginDescriptor.java#L261

However the class name is mandatory for the transport protocol today:

https://github.com/elastic/elasticsearch/blob/f086dd18ddc705bf84a1ff99d35196ec2498fd52/server/src/main/java/org/elasticsearch/plugins/PluginDescriptor.java#L156

This prevents various APIs from working in a cluster with stable plugins installed.
server/src/test/java/org/elasticsearch/plugins/PluginsUtilsTests.java
bundles.add(bundle3);
        PluginDescriptor info4 = newTestDescriptor("common", List.of("grandparent"));
        PluginBundle bundle4 = new PluginBundle(info4, pluginDir);
        bundles.add(bundle4);
        List<PluginBundle> sortedBundles = PluginsUtils.sortBundles(bundles);
        assertThat(sortedBundles, Matchers.contains(bundle1, bundle4, bundle2, bundle3));
    }
    public void testSortBundlesAlreadyOrdered() throws Exception {
        Path pluginDir = createTempDir();
        Set<PluginBundle> bundles = new LinkedHashSet<>(); 
        PluginDescriptor info1 = newTestDescriptor("dep", List.of());
        PluginBundle bundle1 = new PluginBundle(info1, pluginDir);
        bundles.add(bundle1);
        PluginDescriptor info2 = newTestDescriptor("myplugin", List.of("dep"));
        PluginBundle bundle2 = new PluginBundle(info2, pluginDir);
        bundles.add(bundle2);
        List<PluginBundle> sortedBundles = PluginsUtils.sortBundles(bundles);
        assertThat(sortedBundles, Matchers.contains(bundle1, bundle2));
    }
    public static class DummyClass1 {}
    public static class DummyClass2 {}
    public static class DummyClass3 {}
    void makeJar(Path jarFile, Class<?>... classes) throws Exception {
        try (ZipOutputStream out = new ZipOutputStream(Files.newOutputStream(jarFile))) {
            for (Class<?> clazz : classes) {
                String relativePath = clazz.getCanonicalName().replaceAll("\\.", "/") + ".class";
                if (relativePath.contains(PluginsUtilsTests.class.getSimpleName())) {
                    
                    relativePath = relativePath.replace("/" + clazz.getSimpleName(), "$" + clazz.getSimpleName());
                }