@Override
    public @NotNull DataNode<ProjectData> fun(@NotNull ProjectConnection connection) {
      ExternalSystemTaskId taskId = myResolverContext.getExternalSystemTaskId();
      final long activityId = taskId.getId();

      return computeCancellable(myResolverContext, () -> {
        try {
          myResolverContext.setConnection(connection);
          return doResolveProjectInfo(myResolverContext, myProjectResolverChain, myIsBuildSrcProject);
        }
        catch (ProcessCanceledException e) {
          throw e;
        }
        catch (RuntimeException e) {
          LOG.info("Gradle project resolve error", e);
          ExternalSystemException esException = ExceptionUtil.findCause(e, ExternalSystemException.class);
          if (esException != null && esException != e) {
            LOG.info("\nCaused by: " + esException.getOriginalReason());
          }
          ExternalSystemSyncActionsCollector.logError(taskId.findProject(), activityId, extractCause(e));
          ExternalSystemSyncActionsCollector.logSyncFinished(taskId.findProject(), activityId, false);

          throw myProjectResolverChain.getUserFriendlyError(
            myResolverContext.getBuildEnvironment(), e, myResolverContext.getProjectPath(), null);
        }
      });
    }
@Override
    public @NotNull DataNode<ProjectData> fun(@NotNull ProjectConnection connection)