public void handleIsolate(
      @NotNull final IsolateRef isolateRef, final boolean isolatePausedStart) {
    // We should auto-resume on a StartPaused event, if we're not remote debugging, and after
    // breakpoints have been set.

    final boolean newIsolate = myIsolatesInfo.addIsolate(isolateRef);

    if (isolatePausedStart) {
      myIsolatesInfo.setShouldInitialResume(isolateRef);
    }

    // Just to make sure that the main isolate is not handled twice, both from
    // handleDebuggerConnected() and DartVmServiceListener.received(PauseStart)
    if (newIsolate) {
      addRequest(
          () ->
              myVmService.setExceptionPauseMode(
                  isolateRef.getId(),
                  ExceptionPauseMode.Unhandled,
                  new VmServiceConsumers.SuccessConsumerWrapper() {
                    @Override
                    public void received(Success response) {
                      setInitialBreakpointsAndResume(isolateRef);
                    }
                  }));
    } else {
      checkInitialResume(isolateRef);
    }
  }