@NotNull
  @Override
  public MavenArtifactResolveResult resolveArtifactsTransitively(
    @NotNull final ArrayList<MavenArtifactInfo> artifacts,
    @NotNull final ArrayList<MavenRemoteRepository> remoteRepositories,
    MavenToken token) {
    MavenServerUtil.checkToken(token);
    try {
      try {
        MavenExecutionRequest request = createRequest(null, null, null);

        final Ref<List<MavenArtifact>> mavenArtifacts = Ref.create();
        executeWithMavenSession(request, () -> {
          try {
            mavenArtifacts.set(this.doResolveTransitivelyWithError(artifacts, remoteRepositories));
          }
          catch (Exception e) {
            throw new RuntimeException(e);
          }
        });
        return new MavenArtifactResolveResult(mavenArtifacts.get(), null);
      }
      catch (Exception e) {
        MavenServerGlobals.getLogger().error(e);
        Artifact transferArtifact = getProblemTransferArtifact(e);
        String message = getRootMessage(e);
        MavenProjectProblem problem;
        if (transferArtifact != null) {
          MavenArtifact mavenArtifact = Maven3ModelConverter.convertArtifact(transferArtifact, getLocalRepositoryFile());
          problem = MavenProjectProblem.createRepositoryProblem("", message, true, mavenArtifact);
        }
        else {
          problem = MavenProjectProblem.createStructureProblem("", message);
        }
        return new MavenArtifactResolveResult(Collections.emptyList(), problem);
      }
    }
    catch (Exception e) {
      throw wrapToSerializableRuntimeException(e);
    }
  }
@NotNull
  @Override
  public MavenArtifactResolveResult resolveArtifactsTransitively(
    @NotNull final ArrayList<MavenArtifactInfo> artifacts,
    @NotNull final ArrayList<MavenRemoteRepository> remoteRepositories,
    MavenToken token)