protected <T> T execute(@NotNull ExternalSystemTaskId id, @NotNull Supplier<? extends T> task) {
    Set<ExternalSystemTaskId> tasks = myTasksInProgress.get(id.getType());
    if (tasks == null) {
      myTasksInProgress.putIfAbsent(id.getType(), new HashSet<>());
      tasks = myTasksInProgress.get(id.getType());
    }
    tasks.add(id);
    try {
      return task.get();
    }
    finally {
      tasks.remove(id);
    }
  }
protected <T> T execute(@NotNull ExternalSystemTaskId id, @NotNull Supplier<? extends T> task)