code: public static <R extends Runnable> void run(Class<R> cls, String... args) throws Exception {
          try (ApplicationContext ctx = ApplicationContext.build(cls, Environment.CLI).build()) {
              run(cls, ctx, args);
          }
      }
docs: Instantiates a new {@link ApplicationContext} for the {@link Environment#CLI} environment,
  obtains an instance of the specified {@code Runnable} command class from the context,
  injecting any beans as required,
  then parses the specified command line arguments, populating fields and methods annotated
  with picocli {@link Option @Option} and {@link Parameters @Parameters}
  annotations, and finally runs the command.
  <p>
  The {@code ApplicationContext} is {@linkplain ApplicationContext#close() closed} before this method returns.
  </p>
  @param cls the Runnable command class
  @param args the command line arguments
  @param <R> The runnable type
  
  @throws InitializationException if the specified command object does not have
  a {@link Command}, {@link Option} or {@link Parameters} annotation
  @throws ExecutionException if the Runnable throws an exception
  @throws Exception if the ApplicationContext could not be closed