code: boolean doModularFileNames(Stream<String> filenames) throws IOException {
          return doClassNames(
              filenames.filter(name -> name.endsWith(".class"))
                       .filter(name -> !name.endsWith("package-info.class"))
                       .filter(name -> !name.endsWith("module-info.class"))
                       .map(s -> s.replaceAll("\\.class$", ""))
                       .map(this::convertModularFileName)
                       .collect(toList()));
      }
docs: Processes a stream of filenames (strings) including a module prefix.
  The strings are in the form module/pkg/pkg/pkg/classname.class relative
  to the root of a directory containing modules. The strings are processed
  into module-qualified class names of the form
  "module/pkg.pkg.pkg.classname".
  
  @param filenames a Stream of filenames to process
  @return true for success, false for failure
  @throws IOException if an I/O error occurs