void prioritizeCopiesAndShiftUps(List<MigrationInfo> migrations) {
        for (int i = 0; i < migrations.size(); i++) {
            prioritize(migrations, i);
        }

        if (logger.isFinestEnabled()) {
            StringBuilder s = new StringBuilder("Migration order after prioritization: [");
            int ix = 0;
            for (MigrationInfo migration : migrations) {
                s.append("\n\t").append(ix++).append("- ").append(migration).append(",");
            }
            s.deleteCharAt(s.length() - 1);
            s.append("]");
            logger.finest(s.toString());
        }
    }
@Test
    public void testCopyPrioritizationAgainstShiftDownToColderIndex() throws UnknownHostException {
        List<MigrationInfo> migrations = new ArrayList<>();
        final MigrationInfo migration1 = new MigrationInfo(0, new PartitionReplica(new Address("localhost", 5701), uuids[0]),
                new PartitionReplica(new Address("localhost", 5702), uuids[1]), 0, 2, -1, 0);
        final MigrationInfo migration2 = new MigrationInfo(0, null, new PartitionReplica(new Address("localhost", 5703), uuids[2]), -1, -1, -1, 1);

        migrations.add(migration1);
        migrations.add(migration2);

        migrationPlanner.prioritizeCopiesAndShiftUps(migrations);

        assertEquals(asList(migration2, migration1), migrations);
    }