code: public void mergeWith(OptionalBoolean other) {
  		if (state == other.state) {
  			// no change in state
  		} else if (state == State.UNSET) {
  			state = other.state;
  		} else if (other.state == State.UNSET) {
  			// no change in state
  		} else {
  			state = State.CONFLICTING;
  		}
  	}
docs: State transitions.
  - if the states are the same then no change
  - if either state is unset then change to the other state
  - if the states are conflicting then set to the conflicting state
  
  @param other object from which to merge state