code: protected Boolean _hasSideEffects(XSwitchExpression expression, ISideEffectContext context) {
  		context.open();
  		if (hasSideEffects(expression.getSwitch(), context)) {
  			return true;
  		}
  		final List<Map<String, List<XExpression>>> buffers = new ArrayList<>();
  		for (final XCasePart ex : expression.getCases()) {
  			context.open();
  			if (hasSideEffects(ex.getCase(), context)) {
  				return true;
  			}
  			final Map<String, List<XExpression>> buffer = context.createVariableAssignmentBufferForBranch();
  			if (hasSideEffects(ex.getThen(), context.branch(buffer))) {
  				return true;
  			}
  			buffers.add(buffer);
  			context.close();
  		}
  		final Map<String, List<XExpression>> buffer = context.createVariableAssignmentBufferForBranch();
  		if (hasSideEffects(expression.getDefault(), context.branch(buffer))) {
  			return true;
  		}
  		buffers.add(buffer);
  		context.mergeBranchVariableAssignments(buffers);
  		context.close();
  		return false;
  	}
docs: Test if the given expression has side effects.
  
  @param expression the expression.
  @param context the list of context expressions.
  @return {@code true} if the expression has side effects.