anchor.diff:  String[] args = { "-cf", "result.tar", "file1.txt", "file2.txt" };
   Tar tar = CommandLine.parse(new Tar(), args);
   
  +assert !tar.helpRequested;
   assert  tar.create;
  -assert !tar.extract;
   assert  tar.archive.equals(new File("result.tar"));
   assert  Arrays.equals(tar.files, new File[] {new File("file1.txt"), new File("file2.txt")});
   ----
   
   Picocli supports http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02[POSIX clustered short options]:
  -One or more options without option-arguments, followed by at most one option that takes an option-argument, should be accepted when grouped behind one '-' delimiter.
  +One or more options without option-arguments, followed by at most one option with an option-argument, can be grouped behind one '-' delimiter.
   
   
   For example, given this annotated class:
  
positive.code: ----
  String[] args = { "-v", "inputFile1", "inputFile2" };
  Example app = CommandLine.parse(new Example(), args);
  assert !app.helpRequested;
  assert  app.verbose;
  assert  app.inputFiles != null && app.inputFiles.length == 2;
  ----
  
  == Options and Parameters
  Command line arguments can be separated into _options_ (sometimes called _flags_ or _switches_), and _parameters_ (sometimes called _positional parameters_ or _operands_).
  Options have a name, parameters are the values that follow the options.
  
  image:OptionsAndParameters2.png[Example command with annotated @Option and @Parameters]
  
  Picocli has separate annotations for options and positional parameters.
  
  === Options
  An option must have one or more `names`. Option names usually have a prefix to distinguish them from parameters. Different operating systems and applications use https://en.wikipedia.org/wiki/Command-line_interface#Command-line_option[different prefixing] styles. Picocli lets you use any option name you want.
  
  TIP: You may be interested in this http://catb.org/~esr/writings/taoup/html/ch10s05.html#id2948149[list of common option names]. Following these conventions may make your application more intuitive to use for experienced users.
  
  The below example shows options with one or more names, options that take an option parameter, and "help" options.
  [source,java]
  ----
  class Tar {
      @Option(names = { "-c", "--create" }, description = "create a new archive")
      boolean create;
  
      @Option(names = "-x", description = "extract files from an archive")
      boolean extract;
  
      @Option(names = { "-f", "--file" }, paramLabel = "ARCHIVE",
              description = "use archive file or device ARCHIVE")
      File archive;
  
      @Parameters(paramLabel = "FILE", description = "one ore more files to archive")
      File[] files;
  }
  ----
  Picocli matches the option names to set the field values.
  
negative.code: <command> -n 123 file1 file2 file3
  ----
  
  === Required Parameters
  Use the `arity` attribute to make `@Parameters` mandatory:
  [source, java]
  ----
  