anchor.diff:      breakTargets = <JumpTarget>[];
       continueTargets = <JumpTarget>[];
       currentExceptionName = null;
  +    currentStackTraceName = null;
       awaits = analysis.awaits;
       labels = analysis.labels;
       names = analysis.names;
  
positive.code:   // `rethrow` is not an expression but a statement in Dart.  The analyzer
    // however parses it as an expression inside an expression statement.
    visitRethrowExpression(ast.RethrowExpression node) => (ek, sk) {
      assert(currentExceptionName != null);
      return sk(make.throwExpression(make.identifier(currentExceptionName)));
    };
  
    visitSuperExpression(ast.SuperExpression node) => (ek, sk) {
  
negative.code: 
    visitThrowExpression(ast.ThrowExpression node) => (ek, sk) {
      return visit(node.expression)(ek, (expr) {
        // `throw` is always translated as `throw` to ensure that a stack
        // trace is produced.  The translation ensures that all code is inside
        // an try/catch with an appropriate error handler.
        return sk(make.throwExpression(expr));
      });
    };
  