@Test
public void testBasic()
{

    Migration m1 = () -> Arrays.asList(v1opA, v1opB);
    Migration m2 = () -> Collections.singletonList(v2op);
    Migration m3 = () -> Collections.singletonList(v3op);
    MigrationSet migrationSet = MigrationSet.build("1", Arrays.asList(m1, m2, m3));
    complete(manager.migrate(migrationSet));
    ModeledFramework<ModelV3> v3Client = ModeledFramework.wrap(client, v3Spec);
    complete(v3Client.read(), (m, e) -> {
        Assert.assertEquals(m.getAge(), 30);
        Assert.assertEquals(m.getFirstName(), "One");
        Assert.assertEquals(m.getLastName(), "Two");
    });
    int count = manager.debugCount.get();
    complete(manager.migrate(migrationSet));
    Assert.assertEquals(manager.debugCount.get(), count);   // second call should do nothing
}