anchor.diff:              System.out.println("Hello world");
           }
       }
  -}
  -----
  +
  +    public static void main(String... args) {
  +        CommandLine.run(new AppWithHelp(), System.err, args);
  +    }
  +}
  +----
  +
  +When executed with `--help`, the program prints usage help:
  +
  +//[code,shell]
  +//----
  +//$ java AppWithHelp --help
  +//
  +//Automatic Help Demo
  +//
  +//Usage: <main class> [-hV] [--count=<count>]
  +//Prints usage help and version help when requested.
  +//
  +//      --count=<count>         The number of times to repeat.
  +//  -h, --help                  Print usage help and exit.
  +//  -V, --version               Print version information and exit.
  +//----
  +image:http://picocli.info/images/AppWithHelp-usage-screenshot.png[Usage help message for AppWithHelp]
  +
  +Similarly, when executed with `--version`, the program prints version information:
  +
  +//[code,shell]
  +//----
  +//$ java AppWithHelp --version
  +//
  +//App with help v1.2.3
  +//----
  +image:http://picocli.info/images/AppWithHelp-version-screenshot.png[Version information for AppWithHelp]
   
   Methods that automatically print help:
   
  
positive.code: }
  ----
  
  Picocli generates usage help messages with http://picocli.info/#_ansi_colors_and_styles[Ansi colors and styles].
  It can generate an http://picocli.info/autocomplete.html[autocompletion] script that allows end users to use `<TAB>` command line completion to discover which options and subcommands are available.
  Picocli supports http://picocli.info/#_subcommands[subcommands] and http://picocli.info/#_nested_sub_subcommands[nested sub-subcommands] to any level of depth.
  
  The http://picocli.info[user manual] describes picocli's functionality in detail. This article highlights new and noteworthy features introduced with the picocli 2.0 release.
  
  
negative.code: [source,java]
  ----
  public static void main() {
      // This handles all of the above in one line:
      // 1. parse the command line
      // 2. handle incorrect user input for one of the subcommands
      // 3. automatically print help if requested
      // 4. execute one or more subcommands
      new CommandLine(new YourApp()).parseWithHandler(new RunAll(), System.err, args);
  }
  ----
  
  The new convenience method is `parseWithHandler`. You pass it an `IParseResultHandler` implementation that is invoked if the command line was parsed successfully. A default exception handler prints an error message and usage help if the user input was invalid. There is a similar method that additionally accepts an `IExceptionHandler` if you want to customize how invalid user input is processed.
  
  Picocli provides some built-in `IParseResultHandler` implementations for common use cases: `RunFirst`, `RunLast` and `RunAll`. All of these first check if the user requested usageHelp or versionHelp. If so, the requested info is printed and the handler returns.
  
  * `RunFirst` only runs the first (main command).
  * `RunLast` only runs the most specific subcommand. For example, if the user invoked `java YourApp print param1 param2`, and `print` is a `Callable` subcommand, only `Print::call` is invoked. `RunLast` is now used to implement the existing `CommandLine::run` and `CommandLine::call` convenience methods.
  * `RunAll` invokes `run` (or `call`) on all commands and subcommands that appeared on the command line (if they implement Runnable or Callable).
  
  
  