private void enter(State state, @Nullable T startArg, @Nullable U stopArg, @Nullable V startResult) {
        lock();
        try {
            assert this.state != state : "transition to the same state: " + state;
            this.state = state;
        } finally {
            unlock();
        }
        notifyListeners(state, startArg, stopArg, startResult);
    }
A synchronous version of {@link #stop(Object)}. Exceptions occurred during shutdown are reported to
{@link #closeFailed(Throwable)}. No argument (i.e. {@code null}) is passed.
core/src/main/java/com/linecorp/armeria/common/util/StartStopSupport.java