@Override
  public boolean isUpToDate(@NotNull CompileScope scope) {
    // if called from background process on pooled thread (non-EDT), run synchronously, in the calling thread
    // if called from EDT, explicitly pass null indicator to force starting new background thread with progress
    final ProgressIndicator progress = EventQueue.isDispatchThread()? null : ProgressIndicatorProvider.getInstance().getProgressIndicator();
    return progress != null? isUpToDate(scope, progress) : new CompileDriver(myProject).isUpToDate(scope, null);
  }
@Override
  public boolean isUpToDate(@NotNull CompileScope scope)