code: @Beta
    public static void addDelayedShutdownHook(
        ExecutorService service, long terminationTimeout, TimeUnit timeUnit) {
      new Application()
          .addDelayedShutdownHook(service, terminationTimeout, timeUnit);
    }
docs: Add a shutdown hook to wait for thread completion in the given
  {@link ExecutorService service}.  This is useful if the given service uses
  daemon threads, and we want to keep the JVM from exiting immediately on
  shutdown, instead giving these daemon threads a chance to terminate
  normally.
  @param service ExecutorService which uses daemon threads
  @param terminationTimeout how long to wait for the executor to finish
  before terminating the JVM
  @param timeUnit unit of time for the time parameter