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/ContendedRegisterAnalyzeAction.java
}
                            }
                            private void handleWitness(ActionListener<Void> delegate, OptionalBytesReference witnessOrEmpty) {
                                if (witnessOrEmpty.isPresent() == false) {
                                    
                                    
                                    executor.execute(Execution.this);
                                    return;
                                }
                                final long witness = longFromBytes(witnessOrEmpty.bytesReference());
                                if (witness == currentValue) {
                                    delegate.onResponse(null);
                                } else if (witness < currentValue || witness >= request.getRequestCount()) {
                                    delegate.onFailure(new IllegalStateException("register holds unexpected value [" + witness + "]"));
                                } else {
                                    currentValue = witness;
                                    executor.execute(Execution.this);
                                }
                            }
                        }
                        new Execution(initialValue).run();
                    });
                }
                @Override
                public void onFailure(Exception e) {
                    if (e instanceof UnsupportedOperationException) {
                        
                        
                        outerListener.onResponse(ActionResponse.Empty.INSTANCE);
                    } else {