anchor.diff:    @override
     void visitLabeledStatement(LabeledStatement node) {
       w.Label label = b.block();
  -    labels[node] = label;
  +    breakFinalizers[node] = <w.Label>[label];
       visitStatement(node.body);
  -    labels.remove(node);
  +    breakFinalizers.remove(node);
       b.end();
     }
   
     @override
     void visitBreakStatement(BreakStatement node) {
  -    b.br(labels[node.target]!);
  +    b.br(breakFinalizers[node.target]!.last);
     }
   
     @override
  
positive.code:   w.Local? preciseThisLocal;
    w.Local? returnValueLocal;
    final Map<TypeParameter, w.Local> typeLocals = {};
    final List<TryBlockFinalizer> finalizers = [];
    final List<w.Label> tryLabels = [];
    final Map<LabeledStatement, w.Label> labels = {};
    final Map<SwitchCase, w.Label> switchLabels = {};
  
    /// Maps a switch statement to the information used when doing a backward
  
negative.code:     // as the stack unwinds. When we get to the top of the finalizer stack, we
      // will handle the return using [returnValueLocal] if this function returns
      // a value.
      if (returnFinalizers.isNotEmpty) {
        for (TryBlockFinalizer finalizer in returnFinalizers) {
          finalizer.mustHandleReturn = true;
        }
        if (returnType != voidMarker) {
  