anchor.diff:        files                   files to transfer
   ----
   
  -
  -== Customizing Usage Help
  -=== Example
  +=== Show Default Values
  +Use the `showDefaultValues = true` attribute to append the default value of the options and positional parameters to the description column. Picocli uses reflection to get the default values from the annotated fields. For example:
  +[source,java]
  +----
  +@Command(showDefaultValues = true)
  +class DefaultValues {
  +    @Option(names = {"-f", "--file"}, description = "the file to use")
  +    File file = new File("config.xml");
  +}
  +
  +CommandLine.usage(new DefaultValues(), System.out);
  +----
  +This produces the following usage help:
  +----
  +Usage: <main class> -f=<file>
  +  -f, --file=<file>           the file to use
  +                              Default: config.xml
  +----
  +
  +=== Required-Option Marker
  +Required options can be marked in the option list by the character specified with the `requiredOptionMarker` attribute. By default options are not marked because the synopsis shows users which options are required and which are optional. This feature may be useful in combination with `abbreviatedSynopsis`. For example:
  +[source,java]
  +----
  +@Command(requiredOptionMarker = '*', abbreviateSynopsis = true)
  +class Example {
  +    @Option(names = {"-a", "--alpha"}, description = "optional alpha") String alpha;
  +    @Option(names = {"-b", "--beta"}, required = true, description = "mandatory beta") String beta;
  +}
  +----
  +Produces the following usage help message:
  +----
  +Usage: <main class> [OPTIONS]
  +  -a, --alpha=<alpha>         optional alpha
  +* -b, --beta=<beta>           mandatory beta
  +----
  +
  +=== Header and Footer
  +The `header` will be shown at the top of the usage help message (before the synopsis). The first header line is also the line shown in the subcommand list if your command has subcommands (see <<usage-help-for-subcommands>>).
  +
  +Use the `footer` attribute to specify one or more lines to show below the generated usage help message.
  +Each element of the attribute String array is displayed on a separate line.
  +
  +The `headerHeading` and `footerHeading` may contain format specifiers. See <<compact-example>>.
  +
  +
  +=== Abbreviated Synopsis
  +If a command is very complex and has many options, it is sometimes desirable to suppress details from the synopsis with the `abbreviateSynopsis` attribute. For example:
  +----
  +Usage: <main class> [OPTIONS] [<files>...]
  +----
  +Note that the positional parameters are not abbreviated.
  +[source,java]
  +----
  +@CommandLine.Command(abbreviateSynopsis = true)
  +class App {
  +    @Parameters File[] files;
  +    @Option(names = {"--count", "-c"}) int count;
  +    ....
  +}
  +----
  +
  +
  +=== Custom Synopsis
  +For even more control of the synopsis, use the `customSynopsis` attribute to specify one ore more synopsis lines. For example:
  +----
  +Usage: ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)
  +  or:  ln [OPTION]... TARGET                  (2nd form)
  +  or:  ln [OPTION]... TARGET... DIRECTORY     (3rd form)
  +  or:  ln [OPTION]... -t DIRECTORY TARGET...  (4th form)
  +----
  +To produce a synopsis like the above, specify the literal text in the `customSynopsis` attribute:
  +[source,java]
  +----
  +@Command(synopsisHeading = "", customSynopsis = {
  +        "Usage: ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)",
  +        "  or:  ln [OPTION]... TARGET                  (2nd form)",
  +        "  or:  ln [OPTION]... TARGET... DIRECTORY     (3rd form)",
  +        "  or:  ln [OPTION]... -t DIRECTORY TARGET...  (4th form)",
  +})
  +class Ln { ... }
  +----
  +
  +=== Section Headings
  +Section headers can be used to make usage message layout appear more spacious. Section headings may contain embedded line separator (`%n`) format specifiers:
  +[code,java]
  +----
  +@CommandLine.Command(name = "git-commit",
  +        sortOptions = false,
  +        headerHeading = "Usage:%n%n",
  +        synopsisHeading = "%n",
  +        descriptionHeading = "%nDescription:%n%n",
  +        parameterListHeading = "%nParameters:%n",
  +        optionListHeading = "%nOptions:%n",
  +        header = "Record changes to the repository.",
  +        description = "Stores the current contents of the index in a new commit " +
  +                "along with a log message from the user describing the changes.")
  +class GitCommit { ... }
  +----
  +The usage help message generated from this class is shown below in <<expanded-example>>.
  +
  +=== Unsorted Option List
  +By default the options list displays options in alphabetical order. Use the `sortOptions = false` attribute to display options in the order they are declared in your class.
  +[source,java]
  +----
  +@Command(sortOptions = false)
  +----
  +
  +
  +=== Expanded Example
   The below example demonstrates what a customized usage message can look like.
   Note how section headings with line separators can create a more spacious usage message,
   and also that options are listed in declaration order (instead of in alphabetic order).
  
positive.code: Some annotated fields in the below example class have a `paramLabel` attribute and others don't:
  [source,java]
  ----
  @Command(showDefaultValues = false)
  class ParamLabels {
      @Option(names = "-f",    paramLabel = "FILE", description = "a file")      File f;
      @Option(names = "-n",    description = "a number option")                  int number;
  
negative.code: ----
  NOTE: For demonstration purposes the above example mixes the all-uppercase (e.g., `NUM`) style label and the fish bracket (e.g., `<number>`) style labels. For real applications, mixing these label styles should be avoided. An application should consistently use only one style.
  
  === Option-Parameter Separators
  The separator displayed between options and option parameters (`=` by default)
  in the synopsis and the option list can be configured with the `separator` attribute.
  [source,java]
  ----
  @Command(separator = " ")
  ----
  
  NOTE: the `@Command(separator = " ")` annotation also affects how picocli parses the command line. If you want the command parser to recognize one separator (`=` for example), but display a different separator (a space for example) in the usage help message, you need to programmatically configure the parser with the `CommandLine.setSeparator` method. See <<option-parameter-separators>>.
  
  === Hidden Options and Parameters
  Options and Parameters with the `hidden` attribute set to `true` will not be shown in the usage help message.
  This is useful for example when a parameter at some index is captured into multiple fields:
  