title: picocli example showing the usage of multiple commands
body: <p>ive got some code that works very well with picocli:</p>
  
  <pre><code> @Command(name = "parse", sortOptions = false, description = "parse input files and write to database")
  class CommandLineArgumentParser {
  
  
  @Option(names = { "-h", "--help" }, usageHelp = true, description = "display this message")
  private boolean helpRequested = false;
  
  
  @Option(names = { "-s", "--startDate"}, description = "First day at which to parse data",
          converter = GermanDateConverter.class, paramLabel = "dd.MM.yyyy")
  public LocalDate start;
  
  @Option(names = { "-e", "--endDate"}, description = "Last day (inclusive) at which to stop parsing",
          converter = GermanDateConverter.class, paramLabel = "dd.MM.yyyy")
  public LocalDate end;
  
  
  private static class GermanDateConverter implements ITypeConverter&lt;LocalDate&gt; {
      @Override
      public LocalDate convert(String value) throws Exception {
          LocalDate result = null;
  
              DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");
              result = LocalDate.parse(value, formatter);
              if (result.getYear() &lt; 1900) {
                  throw new IllegalArgumentException("year should be after 1900");
              }
          return result;
      }
  }
  
  
  @SpringBootApplication
  public class Application implements CommandLineRunner {
  
  public void run(String... args) throws Exception {
      CommandLineArgumentParser commandlineparser = new CommandLineArgumentParser();
  
      CommandLine commandLine = new CommandLine(commandlineparser);
      try {
          commandLine.parseArgs(args);
  
      } catch (MissingParameterException e) {
          System.out.println(e);
          System.out.println();
          CommandLine.usage(CommandLineArgumentParser.class, System.out);
          System.exit(1);
      } catch (ParameterException e) {
          System.out.println(e);
          System.out.println();
          CommandLine.usage(CommandLineArgumentParser.class, System.out);
          System.exit(1);
      }
  
      if (commandLine.isUsageHelpRequested()) {
          commandLine.usage(System.out);
          return;
      } else if (commandLine.isVersionHelpRequested()) {
          commandLine.printVersionHelp(System.out);
          return;
      }
  
      if (commandlineparser.start == null) {
          log.warn("no start date specified, using: 01.01.2005");
          commandlineparser.start = LocalDate.of(2005, 01, 01);
      }
  
      if (commandlineparser.end == null) {
          LocalDate timePoint = LocalDate.now();
          log.warn("no end date specified, using today: " + timePoint.toString());
          commandlineparser.end = timePoint;
      }
  }
  </code></pre>
  
  <p>but i did not find a simple example that shows multiple commands used, for example this one:<br>
  <a href="https://github.com/remkop/picocli/blob/master/src/test/java/picocli/Demo.java" rel="nofollow noreferrer">https://github.com/remkop/picocli/blob/master/src/test/java/picocli/Demo.java</a></p>
  
  <p>does not compile:  </p>
  
  <pre><code>int exitCode = new CommandLine(new Demo()).execute(args);
  
  The method execute(CommandLine, List&lt;Object&gt;) in the type CommandLine is not applicable for the    arguments (String[])
  </code></pre>
  
  <p>could somebody please post a example on howto use multiple commands?</p>