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/security/src/main/java/org/elasticsearch/xpack/security/operator/DefaultOperatorOnlyRegistry.java
} else if (ClusterUpdateSettingsAction.NAME.equals(action)) {
            assert request instanceof ClusterUpdateSettingsRequest;
            return checkClusterUpdateSettings((ClusterUpdateSettingsRequest) request);
        } else {
            return null;
        }
    }
    @Override
    public OperatorPrivilegesViolation checkRest(RestHandler restHandler, RestRequest restRequest, RestChannel restChannel) {
        return null; 
    }
    private OperatorPrivilegesViolation checkClusterUpdateSettings(ClusterUpdateSettingsRequest request) {
        List<String> operatorOnlySettingKeys = Stream.concat(
            request.transientSettings().keySet().stream(),
            request.persistentSettings().keySet().stream()
        ).filter(k -> {
            final Setting<?> setting = clusterSettings.get(k);
            return setting != null && setting.isOperatorOnly();
        }).toList();
        if (false == operatorOnlySettingKeys.isEmpty()) {
            return () -> (operatorOnlySettingKeys.size() == 1 ? "setting" : "settings")
                + " ["
                + Strings.collectionToDelimitedString(operatorOnlySettingKeys, ",")
                + "]";
        } else {
            return null;
        }
    }
}