code: public JavaFileObject writeClass(ClassSymbol c)
          throws IOException, PoolOverflow, StringOverflow
      {
          String name = (c.owner.kind == MDL ? c.name : c.flatname).toString();
          Location outLocn;
          if (multiModuleMode) {
              ModuleSymbol msym = c.owner.kind == MDL ? (ModuleSymbol) c.owner : c.packge().modle;
              outLocn = fileManager.getLocationForModule(CLASS_OUTPUT, msym.name.toString());
          } else {
              outLocn = CLASS_OUTPUT;
          }
          JavaFileObject outFile
              = fileManager.getJavaFileForOutput(outLocn,
                                                 name,
                                                 JavaFileObject.Kind.CLASS,
                                                 c.sourcefile);
          OutputStream out = outFile.openOutputStream();
          try {
              writeClassFile(out, c);
              if (verbose)
                  log.printVerbose("wrote.file", outFile);
              out.close();
              out = null;
          } finally {
              if (out != null) {
                  // if we are propagating an exception, delete the file
                  out.close();
                  outFile.delete();
                  outFile = null;
              }
          }
          return outFile; // may be null if write failed
      }
docs: Emit a class file for a given class.
  @param c      The class from which a class file is generated.