@ApiStatus.Experimental
  @Override
  public @Nullable ExecutionEnvironment createProjectTaskExecutionEnvironment(@NotNull ProjectTask projectTask) {
    List<Pair<ProjectTaskRunner, Collection<? extends ProjectTask>>> toRun = groupByRunner(projectTask);
    if (toRun.isEmpty()) return null;
    Map<ProjectTaskRunner, List<ProjectTask>> tasksMap = new LinkedHashMap<>();
    for (Pair<ProjectTaskRunner, Collection<? extends ProjectTask>> pair : toRun) {
      tasksMap.computeIfAbsent(pair.first, runner -> new ArrayList<>()).addAll(pair.second);
    }
    if (tasksMap.size() != 1) {
      LOG.debug("Can not create single execution environment for tasks of different runners: '" + tasksMap + "'");
      return null;
    }
    Map.Entry<ProjectTaskRunner, List<ProjectTask>> entry = tasksMap.entrySet().iterator().next();
    ProjectTask[] tasks = entry.getValue().toArray(EMPTY_TASKS_ARRAY);
    ProjectTaskRunner taskRunner = entry.getKey();
    return taskRunner.createExecutionEnvironment(myProject, tasks);
  }
@ApiStatus.Experimental
  @Override
  public @Nullable ExecutionEnvironment createProjectTaskExecutionEnvironment(@NotNull ProjectTask projectTask)