@Override
  public void doSave() {
    if (!changed.compareAndSet(true, false)) {
      return;
    }

    try {
      //noinspection SynchronizeOnThis
      synchronized (this) {
        long start = System.currentTimeMillis();
        doSave(myProject, myExternalRootProjects.values());
        long duration = System.currentTimeMillis() - start;
        LOG.info("Save external projects data in " + duration + " ms");
      }
    }
    catch (IOException | SerializationException e) {
      LOG.error(e);
    }
  }
@Override
  public void doSave()