anchor.diff:  
   
   == Multiple Values
  -Multi-valued options and positional parameters can capture multiple values from the command line.
  +Multi-valued options and positional parameters are annotated fields that can capture multiple values from the command line.
   
   === Multiple Occurrences
   The simplest way to create a multi-valued option is to declare an annotated field whose type is an array, collection or a map.
  
positive.code: 
  == Options and Parameters
  Command line arguments can be separated into _options_  and _positional parameters_.
  Options have a name, positional parameters are the values that follow the options.
  
  image:OptionsAndParameters2.png[Example command with annotated @Option and @Parameters]
  
  
negative.code: CommandLine.run(new MyRunnable(), System.err, args);
  ----
  
  If the command class has subcommands, the `CommandLine::call` and `CommandLine::run` convenience methods will execute the most specific subcommand on the command line. For example:
  
  ----
  <command> -g global_option subcommand -x -y -z subsubcommand param1 param2
  ----
  In the above example, the `subsubcommand` is the most specific subcommand, and only the `Runnable` or `Callable` associated with that subcommand will be executed by the `CommandLine::call` and `CommandLine::run` convenience methods.
  
  === Convenience Methods for Subcommands
  Picocli v2.0 introduced the `CommandLine::parseWithHandler` and `CommandLine::parseWithHandlers` convenience methods.
  These methods are intended to offer the same ease of use as the `run` and `call` methods, but with more flexibility and better support for nested subcommands.
  
  For example:
  [source,java]
  ----
  CommandLine cmd = new CommandLine(MyTopLevelCommand())
          .addSubcommand("status",   new GitStatus())
          .addSubcommand("commit",   new GitCommit())
          .addSubcommand("add",      new GitAdd());
  List<Object result = cmd.parseWithHandler(new RunAll(), System.err, args);
  ----
  
  The `CommandLine::parseWithHandler` method will take care of the following:
  
  * parse the specified command line arguments
  * if the input was invalid, delegate to `DefaultExceptionHandler`, which will print the error message followed by the usage help message
  * otherwise, if the command line arguments were parsed successfully, let the specified `IParseResultHandler` handle the parse result
  
  Picocli provides some default `IParseResultHandler` implementations for common tasks:
  
  * the `RunLast` handler prints help if requested, and otherwise gets the last specified command or subcommand and tries to execute it as a `Runnable` or `Callable`
  * the `RunFirst` handler prints help if requested, and otherwise executes the top-level command as a `Runnable` or `Callable`
  * the `RunAll` handler prints help if requested, and otherwise executes all recognized commands and subcommands as `Runnable` or `Callable` tasks
  
  
  
  === Boolean Options with Parameters
  By default the value of a boolean field is toggled to its logical negative when the field's option is specified on the command line.
  
  It is possible to let end users explicitly specify "true" or "false" as a parameter for a boolean option by defining an explicit <<Arity>> attribute. A boolean option with `arity = "0..1"` accepts zero to one parameters, `arity = "1"` means the option _must_ have one parameter. For example:
  