private <T> T changePrioritizing(@NotNull Computable<? extends T> runnable) {
    boolean prevIsEmpty = myDeprioritizations.get() > 0 || myPrioritizedThreads.isEmpty();
    T result = runnable.compute();
    boolean currentIsEmpty = myDeprioritizations.get() > 0 || myPrioritizedThreads.isEmpty();
    if (prevIsEmpty && !currentIsEmpty) {
      prioritizingStarted();
    }
    else if (!prevIsEmpty && currentIsEmpty) {
      prioritizingFinished();
    }
    return result;
  }
private <T> T changePrioritizing(@NotNull Computable<? extends T> runnable)