anchor.diff:      assert(!casesIterator.moveNext());
   
       return buildBreakTarget(new ir.SwitchStatement(expression, cases), node,
  -        elements.getTargetDefinition(node));
  +        elements.getTargetDefinition(node), switchIsBreakTarget);
     }
   
     @override
  
positive.code:   ir.Statement visitSwitchStatement(SwitchStatement node) {
      ir.Expression expression = visitForValue(node.expression);
      List<ir.SwitchCase> cases = <ir.SwitchCase>[];
      for (SwitchCase caseNode in node.cases.nodes) {
        cases.add(caseNode.accept(this));
        JumpTarget jumpTarget = elements.getTargetDefinition(caseNode);
  
negative.code:           if (!caseNode.isDefaultCase) {
              statements.add(new ir.BreakStatement(
                  getBreakTarget(elements.getTargetDefinition(node))));
              // Because we "helpfully" add a break here, in the underlying
              // element model the jump target doesn't actually know it's a break
              // target, so we have to pass that information.
              switchIsBreakTarget = true;
            }
          } else {
            statements.add(new ir.ExpressionStatement(new ir.Throw(
  