@Override
  public MavenServerIndexer createIndexer(MavenToken token) throws RemoteException {
    MavenServerUtil.checkToken(token);
    if (myIndexerRef != null) {
      return myIndexerRef;
    }
    synchronized (this) {
      if (myIndexerRef != null) {
        return myIndexerRef;
      }
      MavenIdeaIndexerImpl result = null;
      try {
        result = new MavenIdeaAsyncIndexerImpl(getPlexusContainer());
        UnicastRemoteObject.exportObject(result, 0);
        myIndexerRef = result;
      }
      catch (Exception e) {
        try {
          if (result != null) {
            UnicastRemoteObject.unexportObject(result, true);
          }
        }
        catch (Exception unexportException) {
          RuntimeException re = wrapToSerializableRuntimeException(e);
          throw re;
        }

        throw wrapToSerializableRuntimeException(e);
      }
    }
    return myIndexerRef;
  }
@Override
  public MavenServerIndexer createIndexer(MavenToken token)