docs: @CheckReturnValue
  	@VisibleForTesting
  	ImmutableList<Server> mergeServerLists(List<Server> firstList, List<Server> secondList) {
  		ImmutableList.Builder<Server> results = ImmutableList.builder();
  		List<Server> toProcess = new ArrayList<>(secondList);
  		for (Server firstServer : firstList) {
  			if (toProcess.contains(firstServer)) {
  				Server found = toProcess.get(secondList.indexOf(firstServer));
  				results.add(merge(firstServer, found));
  				// remove server as it is already merged
  				toProcess.remove(found);
  			} else {
  				results.add(firstServer);
  			}
  		}
  		// add servers from the second list that are not in the first one
  		results.addAll(toProcess);
  		return results.build();
  	}