protected State nextState( State state ) {
		if( !altStateCycleOrder ) {
			// default cycle order: UNSELECTED --> INDETERMINATE --> SELECTED
			switch( state ) {
				default:
				case UNSELECTED:		return allowIndeterminate ? State.INDETERMINATE : State.SELECTED;
				case INDETERMINATE:	return State.SELECTED;
				case SELECTED:		return State.UNSELECTED;
			}
		} else {
			// alternative cycle order: INDETERMINATE --> UNSELECTED --> SELECTED
			switch( state ) {
				default:
				case UNSELECTED:		return State.SELECTED;
				case INDETERMINATE:	return State.UNSELECTED;
				case SELECTED:		return allowIndeterminate ? State.INDETERMINATE : State.UNSELECTED;
			}
		}
	}
Returns the next state that follows the given state, depending on
{@link #isAllowIndeterminate()} and {@link #isAltStateCycleOrder()}.
flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatTriStateCheckBox.java