boolean (@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); }