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/main/java/org/elasticsearch/plugins/PluginDescriptor.java
String value = propsMap.remove(name);
        if (value == null || value.isBlank()) {
            throw new IllegalArgumentException("property [" + name + "] is missing for plugin [" + pluginId + "]");
        }
        return value;
    }
    private static String readString(Map<String, String> propsMap, String pluginId, String name) {
        String value = propsMap.remove(name);
        if (value == null) {
            throw new IllegalArgumentException("property [" + name + "] is missing for plugin [" + pluginId + "]");
        }
        return value;
    }
    private static Version readElasticsearchVersion(Map<String, String> propsMap, String pluginId) {
        String esVersionString = readNonEmptyString(propsMap, pluginId, "elasticsearch.version");
        return Version.fromString(esVersionString);
    }
    private static String readJavaVersion(Map<String, String> propsMap, String pluginId) {
        String javaVersion = readNonEmptyString(propsMap, pluginId, "java.version");
        JarHell.checkJavaVersion("plugin " + pluginId, javaVersion);
        return javaVersion;
    }
    private static boolean readBoolean(Map<String, String> propsMap, String pluginId, String name) {
        String rawValue = propsMap.remove(name);
        try {
            return Booleans.parseBoolean(rawValue, false);
        } catch (IllegalArgumentException e) {
            final String message = String.format(
                Locale.ROOT,
                "property [%s] must be [true], [false], or unspecified but was [%s] for plugin [%s]",