docs: protected void join(@Nonnull final LifecycleStage lifecycleStage, final boolean cycle) throws InterruptedException
      {
          Runtime.getRuntime().addShutdownHook(new Thread() {
              @Override
              public void run()
              {
                  if (cycle) {
                      AbstractLifecycle.this.executeTo(lifecycleStage);
                  }
                  else {
                      AbstractLifecycle.this.execute(lifecycleStage);
                  }
              }
          });
          Thread.currentThread().join();
      }