Actions `cluster:admin/repository/analyze/blob` and `cluster:admin/repository/analyze/register` and so on are only invoked via the transport service, they do not need to register as client actions so we can drop the `ActionType` instance. Instead the root `RepositoryAnalyzeAction` should create and register all these transport actions itself. But even the root `RepositoryAnalyzeAction` should not be an `ActionType` derivative, we should just declare an `ActionType` instance directly. Moreover we can use `ActionType#localOnly` since the client action does not run on remote clusters.
x-pack/plugin/snapshot-repo-test-kit/src/main/java/org/elasticsearch/repositories/blobstore/testkit/RepositoryAnalyzeAction.java
BlobAnalyzeAction.NAME,
                    request,
                    task,
                    TransportRequestOptions.EMPTY,
                    new ActionListenerResponseHandler<>(ActionListener.releaseAfter(new ActionListener<>() {
                        @Override
                        public void onResponse(BlobAnalyzeAction.Response response) {
                            logger.trace("finished [{}] on [{}]", request, node);
                            if (request.getAbortWrite() == false) {
                                expectedBlobs.add(request.getBlobName()); 
                            }
                            if (AsyncAction.this.request.detailed) {
                                synchronized (responses) {
                                    responses.add(response);
                                }
                            }
                            summary.add(response);
                        }
                        @Override
                        public void onFailure(Exception exp) {
                            logger.debug(() -> "failed [" + request + "] on [" + node + "]", exp);
                            fail(exp);
                        }
                    }, ref), BlobAnalyzeAction.Response::new, TransportResponseHandler.TRANSPORT_WORKER)
                );
            } else {
                ref.close();
            }
        }
        private BlobContainer getBlobContainer() {