private XDebugSessionImpl startSession(@Nullable RunContentDescriptor contentToReuse,
                                         @NotNull XDebugProcessStarter processStarter,
                                         @NotNull XDebugSessionImpl session) throws ExecutionException {
    XDebugProcess process = processStarter.start(session);
    myProject.getMessageBus().syncPublisher(TOPIC).processStarted(process);

    // Perform custom configuration of session data for XDebugProcessConfiguratorStarter classes
    if (processStarter instanceof XDebugProcessConfiguratorStarter) {
      session.activateSession(false);
      ((XDebugProcessConfiguratorStarter)processStarter).configure(session.getSessionData());
    }

    session.init(process, contentToReuse);

    if (!ApplicationManager.getApplication().isHeadlessEnvironment()) {
      session.addSessionListener(new XDebugSessionListener() {
        @Override
        public void sessionPaused() {
          ApplicationManager.getApplication().invokeLater(() -> {
            Editor editor = FileEditorManager.getInstance(myProject).getSelectedTextEditor();
            if (editor == null) {
              return;
            }
            reshowInlayToolbar(editor);
          });
        }
      });
    }

    mySessions.put(session.getDebugProcess().getProcessHandler(), session);

    return session;
  }
private XDebugSessionImpl startSession(@Nullable RunContentDescriptor contentToReuse,
                                         @NotNull XDebugProcessStarter processStarter,
                                         @NotNull XDebugSessionImpl session)