docs: protected Boolean _hasSideEffects(XIfExpression expression, ISideEffectContext context) {
  		if (hasSideEffects(expression.getIf(), context)) {
  			return true;
  		}
  		final Map<String, List<XExpression>> buffer1 = context.createVariableAssignmentBufferForBranch();
  		if (hasSideEffects(expression.getThen(), context.branch(buffer1))) {
  			return true;
  		}
  		final Map<String, List<XExpression>> buffer2 = context.createVariableAssignmentBufferForBranch();
  		if (hasSideEffects(expression.getElse(), context.branch(buffer2))) {
  			return true;
  		}
  		context.mergeBranchVariableAssignments(Arrays.asList(buffer1, buffer2));
  		return false;
  	}