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
transportService.getThreadPool()
                        .executor(ThreadPool.Names.SNAPSHOT)
                        .execute(ActionRunnable.wrap(ActionListener.releaseAfter(new ActionListener<OptionalBytesReference>() {
                            @Override
                            public void onResponse(OptionalBytesReference actualFinalRegisterValue) {
                                if (actualFinalRegisterValue.isPresent() == false
                                    || longFromBytes(actualFinalRegisterValue.bytesReference()) != expectedFinalRegisterValue) {
                                    fail(
                                        new RepositoryVerificationException(
                                            request.getRepositoryName(),
                                            Strings.format(
                                                "register [%s] should have value [%d] but instead had value [%s]",
                                                registerName,
                                                expectedFinalRegisterValue,
                                                actualFinalRegisterValue
                                            )
                                        )
                                    );
                                }
                            }
                            @Override
                            public void onFailure(Exception exp) {
                                
                                if (exp instanceof UnsupportedOperationException == false) {
                                    fail(exp);
                                }
                            }
                        }, ref), listener -> {
                            switch (random.nextInt(3)) {
                                case 0 -> getBlobContainer().getRegister(OperationPurpose.REPOSITORY_ANALYSIS, registerName, listener);