@Override
  public void compile(
      CompileContext context, Chunk<Module> moduleChunk, VirtualFile[] files, OutputSink sink) {
    if (files.length == 0) {
      return;
    }

    Module module = getModule(context, moduleChunk);
    if (module == null) {
      return;
    }

    MessageCollector messageCollector = new MessageCollectorAdapter(context);

    CompilerEnvironment environment =
        TranslatingCompilerUtils.getEnvironmentFor(context, module, /*tests = */ false);
    if (!environment.success()) {
      environment.reportErrorsTo(messageCollector);
      return;
    }

    doCompile(messageCollector, sink, module, environment, files);
  }