anchor.diff:  
   Combining these two libraries makes it easy to build powerful interactive shell applications. Picocli has two modules, `picocli-shell-jline2` and `picocli-shell-jline3`, for this purpose.
   
  -These modules have a `PicocliJLineCompleter` class that shows context-sensitive completion candidates for options, option parameters and subcommands of a set of picocli commands. The readme of the modules has an example. Applications that use picocli to define their commands no longer need to hand-code Completers for their commands and options. (An early version of this is used in the Micronaut CLI.)
  +These modules have a `PicocliJLineCompleter` class that shows context-sensitive completion candidates for options, option parameters and subcommands of a set of picocli commands. The readme of the modules have examples. Applications that use picocli to define their commands no longer need to hand-code JLine Completers for their commands and options. (An early version of this is used in the Micronaut CLI.)
   
   == Blazingly Fast with GraalVM
   
  
positive.code: }
  ----
  
  [source,java]
  ----
  String[] args = { "-patterns", "a*b", "-patterns", "[a-e][i-u]",
                    "file1.txt", "file2.txt",
                    "-uDAYS=3", "-u", "HOURS=23", "-u=MINUTES=59",
                    "--timeUnit=SECONDS=13", "-Dkey=value};
  Convert convert = CommandLine.populateCommand(new Convert(), args);
  
  // convert.patterns now has two Pattern objects
  
negative.code: 
  Custom version providers need to implement the `picocli.CommandLine.IVersionProvider` interface:
  
  .The `IVersionProvider` interface for externalizing version information
  [source,java]
  ----
  public interface IVersionProvider {
  