@Override
  public MavenIndexUpdateState startIndexing(MavenRepositoryInfo repositoryInfo, File indexDir, MavenToken token) {
    MavenServerUtil.checkToken(token);
    IndexProcessData data;
    synchronized (this) {
      IndexProcessData existingData = states.get(repositoryInfo.getUrl());
      if (existingData != null && existingData.state.myState == MavenIndexUpdateState.State.INDEXING) return existingData.state;
      data = new IndexProcessData();
      data.state = new MavenIndexUpdateState(repositoryInfo.getUrl(), null, null, MavenIndexUpdateState.State.INDEXING);
      states.put(repositoryInfo.getUrl(), data);
    }

    MavenServerProgressIndicator indicator = new MyMavenServerProgressIndicator(data);
    myExecutor.execute(() -> {
      try {
        runIndexing(repositoryInfo, indexDir, indicator);
        data.state.myState = MavenIndexUpdateState.State.SUCCEED;
      }
      catch (Exception e) {
        data.state.myState = MavenIndexUpdateState.State.FAILED;
        data.state.myError = ExceptionUtilRt.getThrowableText(e, "com.jetbrains");
        throw new RuntimeException(wrapException(e));
      }
    });
    return data.state;
  }
@Override
  public MavenIndexUpdateState startIndexing(MavenRepositoryInfo repositoryInfo, File indexDir, MavenToken token)