anchor.diff:                   make.block([ek.apply(exceptionName, stackTraceName)]))]);
         }
   
  -      breakTargets = breakTargets.map(newBreakTarget).toList();
  -      continueTargets = continueTargets.map(newContinueTarget).toList();
  +      breakTargets =
  +          breakTargets.map(_finallyBreakTarget(finallyName)).toList();
  +      continueTargets =
  +          continueTargets.map(_finallyContinueTarget(finallyName)).toList();
         var ret = rk;
         rk = (v) {
           v = addTempDeclaration(v);
  
positive.code:     return catchName;
    }
  
    visitTryStatement(ast.TryStatement node) => (rk, ek, sk) {
      var savedBlock = currentBlock;
      var joinName = newName('join');
  
negative.code:               node.loopVariable.type));
          }
  
          var savedBreakTargets = breakTargets;
          var savedContinueTargets = continueTargets;
          var savedStream = currentStream;
          breakTargets =
              breakTargets.map(_finallyBreakTarget(finallyName)).toList();
          continueTargets =
              continueTargets.map(_finallyContinueTarget(finallyName)).toList();
          currentStream = streamName;
          visit(node.body)((v) {
            v = addTempDeclaration(v);
            var savedBlock = currentBlock;
            var returnBlock = currentBlock = make.emptyBlock();
            rk(v);
            currentBlock = savedBlock;
            addStatement(make.functionInvocation(finallyName,
                [make.functionExpression([], returnBlock)]));
          }, new NamedErrorContinuation(catchName), () {});
  
  
          breakTargets = savedBreakTargets;
          continueTargets = savedContinueTargets;
          currentStream = savedStream;
          currentBlock = savedBlock;
          addStatement(
              make.functionDeclarationStatement(doneName, [], doneBlock));
          addStatement(make.variableDeclarationStatement(
              scanner.Keyword.VAR, [make.variableDeclaration(streamName)]));
          addStatement(make.functionDeclarationStatement(finallyName,
              [finallyContName], finallyBlock));
          addStatement(make.functionDeclarationStatement(catchName,
              [exceptionName, stackTraceName], catchBlock));
          if (currentStream != null) {
            addStatement(make.methodInvocation(
                make.identifier(currentStream), 'pause', []));
          }
          addStatement(make.assignmentExpression(
              make.identifier(streamName),
              make.methodInvocation(expr, 'listen',
                  [make.functionExpression([parameter], listenBlock),
                   make.namedExpression('onError', make.identifier(catchName)),
                   make.namedExpression('onDone', make.identifier(doneName))])));
        });
      };
    }
  