processRootSet(roots.subSet(packageRootTweak(pkg, ' '), endPackageRoot(pkg)));
processRootSet(roots.subSet(packageRootTweak(pkg, ", "), endPackageRoot(pkg)));
  static void processPackage(String pkg)      throws NoSuchMethodException, IllegalAccessException,             ClassNotFoundException, IOException {    progress("Processing package " + pkg + ":");    SortedSet classes = new TreeSet();    SortedSet subpkgs = new TreeSet();    // Scan the paths for classes and subpackages. Store everything in    // classes and subpkgs.    for (Iterator i = path.iterator(); i.hasNext(); ) {      String pathElem = (String) i.next();      scanForPackage(pathElem, pkg, classes, subpkgs);    }    // Iterate over the classes found, and Japize each in turn, unless they are    // explicitly excluded.    for (Iterator i = classes.iterator(); i.hasNext(); ) {      String cls = (String) i.next();      if (!exclusions.contains(cls)) japizeClass(cls);    }    // For packages included with '=' instead of '+', we only include subpackages    // if they're themselves roots.    if (exact.contains(pkg)) {      // The '/' character sorts after '.' and ',', but before any      // alphanumerics, so it covers a.b.c.d and a.b.c,D but not a.b.cd. The      // character ' ' comes before all of these.      processRootSet(roots.subSet(packageRootTweak(pkg, ' '), endPackageRoot(pkg)));    // Otherwise descend recursively into subpackages.    } else {      // Iterate over the packages found, and process each in turn, unless they      // are explicitly excluded. If they *are* explicitly excluded, check for and      // process any roots that lie within the excluded package.      for (Iterator i = subpkgs.iterator(); i.hasNext(); ) {        String subpkg = (String) i.next();        if (!exclusions.contains(subpkg)) {          processPackage(subpkg);        } else {          // Identify any roots that lie within the excluded package and process          // them. The '/' character sorts after '.' and ',', but before any          // alphanumerics, so it covers a.b.c.d and a.b.c,D but not a.b.cd.          processRootSet(roots.subSet(subpkg, endPackageRoot(subpkg)));        }      }    }  }