code: public void execute(CommandHandler handler,
              int timeout,
              TimeUnit unit) throws
              CommandLineException,
              InterruptedException, ExecutionException, TimeoutException {
          ExecutableBuilder builder = new ExecutableBuilder() {
              CommandContext c = newTimeoutCommandContext(ctx);
              @Override
              public Executable build() {
                  return () -> {
                      handler.handle(c);
                  };
              }
  
              @Override
              public CommandContext getCommandContext() {
                  return c;
              }
          };
          execute(builder, timeout, unit);
      }
docs: public for testing purpose