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.
x-pack/plugin/security/src/test/java/org/elasticsearch/test/SecurityIntegTestCase.java
protected String configRoles() {
            return SecurityIntegTestCase.this.configRoles();
        }
        @Override
        protected String configOperatorUsers() {
            return SecurityIntegTestCase.this.configOperatorUsers();
        }
        @Override
        protected String nodeClientUsername() {
            return SecurityIntegTestCase.this.nodeClientUsername();
        }
        @Override
        protected SecureString nodeClientPassword() {
            return SecurityIntegTestCase.this.nodeClientPassword();
        }
    }
    /**
     * Creates the indices provided as argument, randomly associating them with aliases, indexes one dummy document per index
     * and refreshes the new indices
     */
    protected void createIndicesWithRandomAliases(String... indices) {
        createIndex(indices);
        if (frequently()) {
            boolean aliasAdded = false;
            IndicesAliasesRequestBuilder builder = indicesAdmin().prepareAliases();
            for (String index : indices) {
                if (frequently()) {
                    
                    builder.addAlias(index, "alias-" + index);
                    aliasAdded = true;