anchor.diff:      w.Label finalizerBlock = b.block();
       finalizers.add(TryBlockFinalizer(finalizerBlock));
       w.Label tryBlock = b.try_();
  -    node.body.accept(this);
  +    visitStatement(node.body);
       bool mustHandleReturn = finalizers.removeLast().mustHandleReturn;
       b.br(tryBlock);
       b.catch_(translator.exceptionTag);
  -    node.finalizer.accept(this);
  +    visitStatement(node.finalizer);
       b.rethrow_(tryBlock);
       b.end(); // end tryBlock.
  -    node.finalizer.accept(this);
  +    visitStatement(node.finalizer);
       b.br(tryFinallyBlock);
       b.end(); // end finalizerBlock.
       if (mustHandleReturn) {
  -      node.finalizer.accept(this);
  +      visitStatement(node.finalizer);
         if (finalizers.isNotEmpty) {
           b.br(finalizers.last.label);
         } else {
  
positive.code:   void visitIfStatement(IfStatement node) {
      _conditional(
          node.condition,
          () => node.then.accept(this),
          node.otherwise != null ? () => node.otherwise!.accept(this) : null,
          const []);
    }
  
  
negative.code:   void visitLabeledStatement(LabeledStatement node) {
      w.Label label = b.block();
      labels[node] = label;
      visitStatement(node.body);
      labels.remove(node);
      b.end();
    }
  