protected static SearchInvoker createCoverageErrorInvoker(List<Node> nodes, Set<Integer> failed) {
        StringBuilder down = new StringBuilder("Connection failure on nodes with distribution-keys: ");
        int count = 0;
        for (Node node : nodes) {
            if (failed.contains(node.key())) {
                if (count > 0) {
                    down.append(", ");
                }
                count++;
                down.append(node.key());
            }
        }
        Coverage coverage = new Coverage(0, 0, 0);
        coverage.setNodesTried(count);
        return new SearchErrorInvoker(ErrorMessage.createBackendCommunicationError(down.toString()), coverage);
    }
Creates a {@link SearchInvoker} for a list of content nodes.

@param searcher the searcher processing the query
@param query the search query being processed
@param nodes pre-selected list of content nodes, all in a group or a subset of a group
@param acceptIncompleteCoverage if some of the nodes are unavailable and this parameter is
                                false, verify that the remaining set of nodes has sufficient coverage
@return the invoker or empty if some node in the
        list is invalid and the remaining coverage is not sufficient
container-search/src/main/java/com/yahoo/search/dispatch/InvokerFactory.java