public Animation runWhenExpiredOrCancelled(@NotNull Runnable runnable) {
    return addListener(p -> {
      if (p == Phase.EXPIRED || p == Phase.CANCELLED) runnable.run();
    });
  }
public Animation runWhenExpiredOrCancelled(@NotNull Runnable runnable)