code: private void suspendTransition(Process.RunningState oldState, Process.RunningState newState) {
          synchronized (stopLock) {
              if (oldState == newState) {
                  return;
              }
              this.runningState = newState;
              final RunningStateChangeEvent event = new RunningStateChangeEvent(oldState, newState);
              Future<?> suspendStateTransition = executorServiceSupplier.get().submit(() -> {
                  CoreManagementLogger.ROOT_LOGGER.debugf("Executing runningStateChanged %s in thread %s", event, Thread.currentThread().getName());
                  listener.runningStateChanged(event);
              });
              try {
                  suspendStateTransition.get(timeout, TimeUnit.SECONDS);
              } catch (InterruptedException ex) {
                  Thread.currentThread().interrupt();
                  CoreManagementLogger.ROOT_LOGGER.processStateInvokationError(ex, name);
              } catch (TimeoutException ex) {
                  CoreManagementLogger.ROOT_LOGGER.processStateTimeoutError(ex, name);
              } catch (ExecutionException | RuntimeException t) {
                  CoreManagementLogger.ROOT_LOGGER.processStateInvokationError(t, name);
              } finally {
                  if (!suspendStateTransition.isDone()) {
                      suspendStateTransition.cancel(true);
                  }
              }
          }
      }
docs: This will <strong>NEVER</strong> be called on a HostController.
  @param newState the new running state.