@Override
    public void finished(@NotNull ProjectTaskManager.Result result) {
      if (myProject.isDisposed()) return;
      if (!hasCompilationResults(result)) return;

      ProjectTaskContext context = result.getContext();
      if (result.hasErrors() || result.isAborted()) return;
      if (SKIP_HOT_SWAP_KEY.getRequired(context)) return;

      HotSwapUIImpl instance = (HotSwapUIImpl)getInstance(myProject);
      for (HotSwapVetoableListener listener : instance.myListeners) {
        if (!listener.shouldHotSwap(context)) return;
      }

      List<DebuggerSession> sessions = getHotSwappableDebugSessions(myProject);
      if (sessions.isEmpty()) return;

      Map<String, Collection<String>> generatedPaths = collectGeneratedPaths(context);
      HotSwapStatusListener callback = context.getUserData(HOT_SWAP_CALLBACK_KEY);
      NotNullLazyValue<List<String>> outputRoots = context.getDirtyOutputPaths()
        .map(stream -> NotNullLazyValue.createValue(() -> stream.collect(Collectors.toList())))
        .orElse(null);
      instance.hotSwapSessions(sessions, generatedPaths, outputRoots, callback);
    }
@Override
    public void finished(@NotNull ProjectTaskManager.Result result)