docs: static ScheduledExecutorService renamingDecorator(final ScheduledExecutorService service,
        final Supplier<String> nameSupplier) {
      checkNotNull(service);
      checkNotNull(nameSupplier);
      if (isAppEngine()) {
        // AppEngine doesn't support thread renaming, so don't even try.
        return service;
      }
      return new WrappingScheduledExecutorService(service) {
        @Override protected <T> Callable<T> wrapTask(Callable<T> callable) {
          return Callables.threadRenaming(callable, nameSupplier);
        }
        @Override protected Runnable wrapTask(Runnable command) {
          return Callables.threadRenaming(command, nameSupplier);
        }
      };
    }