public TransportClientNodesService addTransportAddresses(TransportAddress... transportAddresses) {
   synchronized (mutex) {
     if (closed) {
       throw new ElasticsearchIllegalStateException(
           "transport client is closed, can't add an address");
     }
     List<TransportAddress> filtered =
         Lists.newArrayListWithExpectedSize(transportAddresses.length);
     for (TransportAddress transportAddress : transportAddresses) {
       boolean found = false;
       for (DiscoveryNode otherNode : listedNodes) {
         if (otherNode.address().equals(transportAddress)) {
           found = true;
           logger.debug(
               "address [{}] already exists with [{}], ignoring...", transportAddress, otherNode);
           break;
         }
       }
       if (!found) {
         filtered.add(transportAddress);
       }
     }
     if (filtered.isEmpty()) {
       return this;
     }
     ImmutableList.Builder<DiscoveryNode> builder = ImmutableList.builder();
     builder.addAll(listedNodes());
     for (TransportAddress transportAddress : filtered) {
       DiscoveryNode node =
           new DiscoveryNode(
               "#transport#-" + tempNodeIdGenerator.incrementAndGet(),
               transportAddress,
               minCompatibilityVersion);
       logger.debug("adding address [{}]", node);
       builder.add(node);
     }
     listedNodes = builder.build();
     nodesSampler.sample();
   }
   return this;
 }