@NotNull
  public static CompilerConfiguration createCompilerConfiguration(
      @NotNull CompilerConfiguration base, @NotNull List<Module> chunk, @NotNull File directory) {
    CompilerConfiguration configuration = base.copy();

    for (Module module : chunk) {
      ContentRootsKt.addKotlinSourceRoots(configuration, getAbsolutePaths(directory, module));
    }

    for (Module module : chunk) {
      for (JavaRootPath javaRootPath : module.getJavaSourceRoots()) {
        JvmContentRootsKt.addJavaSourceRoot(
            configuration, new File(javaRootPath.getPath()), javaRootPath.getPackagePrefix());
      }
    }

    for (Module module : chunk) {
      for (String classpathRoot : module.getClasspathRoots()) {
        JvmContentRootsKt.addJvmClasspathRoot(configuration, new File(classpathRoot));
      }
    }

    for (Module module : chunk) {
      configuration.add(JVMConfigurationKeys.MODULES, module);
    }

    return configuration;
  }