anchor.diff:  
     bool hasYield = false;
   
  +  bool hasFinally = false;
  +
     // The function currently being analyzed.
     js.Fun currentFunction;
   
  
positive.code:     // now.
      int firstTarget = jumpStack.removeLast();
      if (jumpStack.isNotEmpty) {
        hasJumpThroughFinally = true;
        js.Expression jsJumpStack = new js.ArrayInitializer(
            jumpStack.map((int label) => js.number(label)).toList());
        addStatement(js.js.statement("# = #", [nextName, jsJumpStack]));
  
negative.code:     }
      inits.add(makeInit(handlerName, js.number(rethrowLabel)));
      inits.add(makeInit(currentErrorName, null));
      if (analysis.hasFinally || (isAsyncStar && analysis.hasYield)) {
        inits.add(makeInit(nextName, null));
      }
      if (isAsyncStar && analysis.hasYield) {
  