docs: public void setup() throws IOException {
      Sleeper sleeper = Sleeper.DEFAULT;
      BackOff backOff =
          FluentBackoff.DEFAULT
              .withMaxRetries(3).withInitialBackoff(Duration.millis(200)).backoff();
      Throwable lastException = null;
      try {
        do {
          try {
            setupPubsub();
            setupBigQueryTable();
            return;
          } catch (GoogleJsonResponseException e) {
            lastException = e;
          }
        } while (BackOffUtils.next(sleeper, backOff));
      } catch (InterruptedException e) {
        Thread.currentThread().interrupt();
        // Ignore InterruptedException
      }
      throw new RuntimeException(lastException);
    }