code: private GrammarInfo [] scanForGrammars (final File sourceDirectory) throws MavenReportException
    {
      if (!sourceDirectory.isDirectory ())
      {
        return null;
      }
  
      GrammarInfo [] grammarInfos;
  
      getLog ().debug ("Scanning for grammars: " + sourceDirectory);
      try
      {
        final String [] includes = { "**/*.jj", "**/*.JJ", "**/*.jjt", "**/*.JJT", "**/*.jtb", "**/*.JTB" };
        final GrammarDirectoryScanner scanner = new GrammarDirectoryScanner ();
        scanner.setSourceDirectory (sourceDirectory);
        scanner.setIncludes (includes);
        scanner.scan ();
        grammarInfos = scanner.getIncludedGrammars ();
      }
      catch (final Exception e)
      {
        throw new MavenReportException ("Failed to scan for grammars: " + sourceDirectory, e);
      }
      getLog ().debug ("Found grammars: " + Arrays.asList (grammarInfos));
  
      return grammarInfos;
    }
docs: Searches the specified source directory to find grammar files that can be
  documented.
  
  @param sourceDirectory
  The source directory to scan for grammar files.
  @return An array of grammar infos describing the found grammar files or
  <code>null</code> if the source directory does not exist.
  @throws MavenReportException
  If there is a problem while scanning for .jj files.