@Override
    public int compareTo(Migration that) {
        return COMPARATOR.compare(this, that);
    }
@Test
    public void testCompareTo() {
        final MigrationA a = new MigrationA();
        final MigrationA aa = new MigrationA();
        final MigrationB b = new MigrationB(); // same timestamp as A
        final MigrationC c = new MigrationC(); // oldest timestamp

        assertThat(a.compareTo(b)).isLessThan(0);
        assertThat(a.compareTo(aa)).isEqualTo(0);
        assertThat(a.compareTo(c)).isGreaterThan(1);

        final List<Migration> sorted = Stream.of(c, b, a).sorted().toList();
        assertThat(sorted).containsExactly(c, a, b);

        final ImmutableSortedSet<Migration> set = ImmutableSortedSet.of(a, aa, b, c);
        assertThat(set).containsExactly(c, a, b);
    }