code: public void printHelp (@Nonnull final PrintWriter aPW,
                           final int nWidth,
                           @Nonnull @Nonempty final String sCmdLineSyntax,
                           @Nullable final String sHeader,
                           @Nonnull final Options aOptions,
                           final int nLeftPad,
                           final int nDescPad,
                           @Nullable final String sFooter,
                           final boolean bAutoUsage)
    {
      ValueEnforcer.notEmpty (sCmdLineSyntax, "sCmdLineSyntax");
  
      if (bAutoUsage)
        printUsage (aPW, nWidth, sCmdLineSyntax, aOptions);
      else
        printUsage (aPW, nWidth, sCmdLineSyntax);
  
      if (sHeader != null && sHeader.trim ().length () > 0)
        printWrapped (aPW, nWidth, sHeader);
  
      printOptions (aPW, nWidth, aOptions, nLeftPad, nDescPad);
  
      if (sFooter != null && sFooter.trim ().length () > 0)
        printWrapped (aPW, nWidth, sFooter);
    }
docs: Print the help for <code>options</code> with the specified command line
  syntax.
  
  @param aPW
  the writer to which the help will be written
  @param nWidth
  the number of characters to be displayed on each line
  @param sCmdLineSyntax
  the syntax for this application
  @param sHeader
  the banner to display at the beginning of the help
  @param aOptions
  the Options instance
  @param nLeftPad
  the number of characters of padding to be prefixed to each line
  @param nDescPad
  the number of characters of padding to be prefixed to each
  description line
  @param sFooter
  the banner to display at the end of the help
  @param bAutoUsage
  whether to print an automatically generated usage statement
  @throws IllegalStateException
  if there is no room to print a line