code: private Address chooseTargetReplica(Collection<Address> excludedAddresses) {
          final List<Address> replicaAddresses = getReplicaAddresses(excludedAddresses);
          if (replicaAddresses.isEmpty()) {
              return null;
          }
          final int randomReplicaIndex = ThreadLocalRandomProvider.get().nextInt(replicaAddresses.size());
          return replicaAddresses.get(randomReplicaIndex);
      }
docs: Chooses and returns a CRDT replica address. Replicas with addresses
  contained in the {@code excludedAddresses} list are excluded and the
  method chooses randomly between the collection of viable target addresses.
  <p>
  The method may return {@code null} if there are no viable addresses.
  
  @param excludedAddresses the addresses to exclude when choosing a replica
  address, must not be {@code null}
  @return a CRDT replica address or {@code null} if there are no viable addresses