@Test
public void trivial() throws InterruptedException {

    AtomicReference<Boolean> futureResult = new AtomicReference<>();
    Future<Boolean> origin = new FutureWithSource<>(futureResult);
    CompletableFuture<Boolean> shift = Futurity.shift(origin);
    assertFalse(shift.isDone());
    futureResult.set(Boolean.TRUE);
    await().pollInterval(1, TimeUnit.MILLISECONDS).pollDelay(0, TimeUnit.MILLISECONDS)
           .atMost(1, TimeUnit.SECONDS).until(shift::isDone);
}