anchor.diff:    ir.Statement visitSwitchStatement(SwitchStatement node) {
       ir.Expression expression = visitForValue(node.expression);
       List<ir.SwitchCase> cases = <ir.SwitchCase>[];
  +    bool switchIsBreakTarget = elements.getTargetDefinition(node).isBreakTarget;
       for (SwitchCase caseNode in node.cases.nodes) {
         cases.add(caseNode.accept(this));
         JumpTarget jumpTarget = elements.getTargetDefinition(caseNode);
  
positive.code:     assert(!casesIterator.moveNext());
  
      return buildBreakTarget(new ir.SwitchStatement(expression, cases), node,
          elements.getTargetDefinition(node));
    }
  
    @override
  
negative.code:     return continueSwitchTargets[target];
    }
  
    /// The optional positional parameter isBreakTarget can be added in cases
    /// where a break statement was added but the element model and underlying
    /// JumpTargets don't know about it.
    ir.Statement buildBreakTarget(
        ir.Statement statement, Node node, JumpTarget jumpTarget,
        [bool isBreakTarget]) {
      assert(node.isValidBreakTarget());
      assert(jumpTarget == elements.getTargetDefinition(node));
      associateNode(statement, node);
      if (jumpTarget != null && (jumpTarget.isBreakTarget || isBreakTarget)) {
        ir.LabeledStatement breakTarget = getBreakTarget(jumpTarget);
        breakTarget.body = statement;
        statement.parent = breakTarget;
  