@Override
  protected Map<ModuleBuildTarget, String> getGenerationOutputs(CompileContext context,
                                                                ModuleChunk chunk,
                                                                Map<ModuleBuildTarget, String> finalOutputs) throws IOException {
    if (!myForStubs) return super.getGenerationOutputs(context, chunk, finalOutputs);

    Map<ModuleBuildTarget, String> generationOutputs = new HashMap<>();
    File commonRoot = GroovyBuilder.getStubRoot(context);
    for (ModuleBuildTarget target : chunk.getTargets()) {
      File targetRoot = new File(commonRoot, target.getModule().getName() + File.separator + target.getTargetType().getTypeId());
      if (targetRoot.exists() && !FileUtil.deleteWithRenaming(targetRoot)) {
        throw new IOException("External build cannot clean " + targetRoot.getPath());
      }
      if (!targetRoot.mkdirs()) {
        throw new IOException("External build cannot create " + targetRoot.getPath());
      }
      generationOutputs.put(target, targetRoot.getPath());
    }
    return generationOutputs;
  }
@Override
  protected Map<ModuleBuildTarget, String> getGenerationOutputs(CompileContext context,
                                                                ModuleChunk chunk,
                                                                Map<ModuleBuildTarget, String> finalOutputs)