anchor.diff:  
   [source,java]
   ----
  +package org.example;
  +
  +import java.util.*;
  +import de.tototec.cmdoption.CmdOption;
  +
   public class Config {
  -  @CmdOption(names = {"--verbose", "-v"}, description = "Be more verbose")
  -  private boolean verbose;
  -
  -  @CmdOption(names = {"--options", "-o"}, args = {"name", "value"}, maxCount = -1, description = "Additional options when processing names")
  -  private final Map<String, String> options = new LinkedHashMap<String, String>();
  -
  -  @CmdOption(args = {"file"}, description = "Names to process", minCount = 1, maxCount = -1)
  -  private final List<String> names = new LinkedList<String>();
  +  @CmdOption(names = { "--help", "-h" }, description = "Show this help", isHelp = true)
  +  boolean help;
  +
  +  @CmdOption(names = { "--verbose", "-v" }, description = "Be more verbose")
  +  boolean verbose;
  +
  +  @CmdOption(names = { "--options", "-o" }, args = { "name", "value" }, maxCount = -1, description = "Additional options when processing names")
  +  Map<String, String> options = new LinkedHashMap<String, String>();
  +
  +  @CmdOption(args = { "file" }, description = "Names to process", minCount = 1, maxCount = -1)
  +  List<String> names = new LinkedList<String>();
   }
   ----
   
  
positive.code: ----
  Config config = new Config();
  CmdlineParser cp = new CmdlineParser(config);
  cp.parse(new String[] {"-v", "name1", "name2"});
  
  assert config.verbose;
  assert config.names.length() == 2;
  assert config.options.isEmpty();
  ----
  
  == Options and Parameters
  
negative.code: The command line parser supports more that one config object. Each object annotated with `@CmdCommand` is treated as command, all other can contain options for the main program.
  
  To use the same class (or even object) for common or shared options, e.g. to add a `--verbose` option to all commands, you can annotate the relevant field with `@CmdOptionDelegate`.
  
  == Customizing the output
  
  The class `CmdlineParser` has various methods to customize the behaviour and the output generated by the parser.
  
  * *setProgramName(String)* - The name used in the usage display. If not specified, `<main class>` is used.
  * *setAboutLine(String)* - Additional text displayed in the usage output.
  * *usage()* - Format and print the usage display to STDOUT.
  * *usage(StringBuilder)* - Format and print the usage display to the given `StringBuilder`.
  * *setUsageFormatter(UsageFormatter)* - Register a custom `UsageFormatter` that is used to format the usage display. If not changed, the `DefaultUsageFormatter` is used. Please note, that `DefaultUsageFormatter` already has some configuration options on it's own which you should try first, before writing you own usage formatter implementation.
  
  == Localization
  
  