private static String headerDescriptionString(CommandSpec spec) {
        String result = null;
        String[] headerDescription = spec.usageMessage().header();
        if (headerDescription == null || headerDescription.length == 0 || headerDescription[0] == null
                || headerDescription[0].length() == 0) {
            // if the command does not have a header, use only the first line from the
            // description:
            // the other lines will be shown in the DESCRIPTION section of the man page
            result = firstElement(spec.usageMessage().description());
        } else {
            // if the command header has multiple lines, we display all of them in the NAME
            // section
            result = join("%n", (Object[]) headerDescription);
        }
        return format(COLOR_SCHEME.text(result).toString()); // convert any embedded %n strings to newlines
    }
Generates AsciiDoc files for the specified classes to the specified output
directory, optionally also generating template files in the
{@code customizablePagesDirectory} directory.

@param outdir                     Output directory to write the generated
                                  AsciiDoc files to.
@param customizablePagesDirectory Optional directory to write customizable
                                  man page template files. If
                                  non-{@code null}, an additional "template"
                                  file is created here for each generated
                                  manpage AsciiDoc file.
@param verbosity                  the length of this array determines
                                  verbosity during processing
@param overwriteCustomizablePages Overwrite existing man page templates. The
                                  default is false, meaning processing is
                                  aborted and the process exits with status
                                  code 4 if a man page template file already
                                  exists.
@param specs                      the Commands to generate AsciiDoc man pages
                                  for
@return the exit code
@throws IOException if a problem occurred writing to the file system
docs/genadoc.java