docs: public static void compileToJar(
        TemplateRegistry registry,
        SoyFileSetNode fileSet,
        ErrorReporter reporter,
        SoyTypeRegistry typeRegistry,
        ByteSink sink)
        throws IOException {
      ErrorReporter.Checkpoint checkpoint = reporter.checkpoint();
      if (reporter.errorsSince(checkpoint)) {
        return;
      }
      CompiledTemplateRegistry compilerRegistry = new CompiledTemplateRegistry(registry);
      if (reporter.errorsSince(checkpoint)) {
        return;
      }
      try (final SoyJarFileWriter writer = new SoyJarFileWriter(sink.openStream())) {
        final Set<String> delTemplates = new TreeSet<>();
        compileTemplates(
            compilerRegistry,
            fileSet,
            reporter,
            typeRegistry,
            new CompilerListener<Void>() {
              @Override
              void onCompile(ClassData clazz) throws IOException {
                writer.writeEntry(
                    clazz.type().internalName() + ".class", ByteSource.wrap(clazz.data()));
              }
  
              @Override
              void onCompileDelTemplate(String name) {
                delTemplates.add(name);
              }
            });
        if (!delTemplates.isEmpty()) {
          String delData = Joiner.on('\n').join(delTemplates);
          writer.writeEntry(
              Names.META_INF_DELTEMPLATE_PATH, ByteSource.wrap(delData.getBytes(UTF_8)));
        }
      }
    }