public String[] getGroupNames() {
   LinkedHashSet<String> groups = new LinkedHashSet<String>();
   for (ApiDoc apiDoc : docs) {
     groups.add(apiDoc.group);
   }
   return groups.toArray(new String[groups.size()]);
 }
  private static void findSourceFiles(LinkedHashSet<String> files, String file) {
    File f = new File(file);
    if (f.isFile()) {
      String ext = FilenameUtils.getExtension(f.getName());
      if ("java".equalsIgnoreCase(ext)) files.add(file);
    } else if (f.isDirectory()) {
      for (String sub : f.list()) {
        if (sub.equals(".") || sub.equals("..")) continue;

        findSourceFiles(files, FilenameUtils.concat(f.getAbsolutePath(), sub));
      }
    }
  }