// At this point each segment already has actualNumOwners owners.
for (int segment = 0; segment < builder.getNumSegments(); segment++) {
List<Address> owners = builder.getOwners(segment);
List<Address> backupOwners = builder.getBackupOwners(segment);
for (int i = backupOwners.size() - 1; i >= 0; i--) {
Address owner = backupOwners.get(i);
if (locationIsDuplicate(owner, owners, level)) {
// Got a duplicate site/rack/machine, we might have an alternative for it.
for (Address candidate : builder.getMembers()) {
if (!owners.contains(candidate) && !locationIsDuplicate(candidate, owners, level)) {
builder.addOwner(segment, candidate);