default void transitionOrThrow(final @NonNull S in, final @NonNull S out) {
        if (this.transitionIfPossible(in, out)) {
            return;
        }
        throw new IllegalStateException(String.format(
                "The current state is '%s' but we expected a state of '%s' or '%s'",
                this.state(),
                in,
                out
        ));
    }
Transitions from the {@code in} state to the {@code out} state, unless the current {@link #state()}
is identical to the {@code out} state.

@param in  the starting state
@param out the ending state
@throws IllegalStateException if state transition is not possible
cloud-core/src/main/java/org/incendo/cloud/state/Stateful.java