code: protected void transitionState(final S newState) {
          if (newState != currentState) {
              if (LOGGER.isTraceEnabled()) {
                  LOGGER.trace("State (" + getClass().getSimpleName() + ") " + currentState + " -> " + newState);
              }
              currentState = newState;
              observable.onNext(newState);
          }
      }
docs: Transition into a new state.
  
  This method is intentionally not public, because the subclass should only be responsible for the actual
  transitions, the other components only react on those transitions eventually.
  
  @param newState the states to transition into.