anchor.diff:  
     bool visitTryStatement(ast.TryStatement node) {
       var result = visit(node.body);
  -    if (node.catchClauses.isNotEmpty) {
  -      if (node.catchClauses.length != 1) {
  -        throw 'Analysis: unimplemented(TryStatement)';
  -      }
  -      if (visit(node.catchClauses.first)) result = true;
  +    for (var clause in node.catchClauses) {
  +      if (visit(clause)) result = true;
       }
       if (node.finallyBlock != null) {
         if (visit(node.finallyBlock)) result = true;
  
positive.code:   unreachable(node) => throw 'Unreachable(${node.runtimeType})';
    visitAnnotation(node) => unreachable(node);
    visitArgumentList(node) => unreachable(node);
    visitComment(node) => unreachable(node);
    visitCommentReference(node) => unreachable(node);
    visitConstructorFieldInitializer(node) => unreachable(node);
  
negative.code:             AstFactory.functionExpressionInvocation(
                  identifier(finallyContName), [])));
        });
  
        breakTargets = breakTargets.map(newJumpTarget).toList();
        continueTargets = continueTargets.map(newJumpTarget).toList();
        var fail = f, ret = r;
        f = (e) {
          addStatement(
              AstFactory.returnStatement2(
                  functionExpression([], applyExpressionCont(fail, e))));
        };
        r = (v) {
          addStatement(
              AstFactory.returnStatement2(
                  functionExpression([], applyExpressionCont(ret, v))));
        };
        s = () {
          addStatement(
              AstFactory.returnStatement2(identifier(joinName)));
        };
      } else {
        s = () {
          addStatement(
              AstFactory.returnStatement2(
                  AstFactory.functionExpressionInvocation(
                      identifier(joinName), [])));
        };
      }
  
      var catchErrorArgs = node.catchClauses.map(
          (c) => _translateCatchClause(c, f, r, s));
  
      var tryBlock = currentBlock = emptyBlock();
      visit(node.body)((e) {
        addStatement(AstFactory.throwExpression2(e));
      }, r, s);
  
      currentBlock = savedBlock;
      breakTargets = savedBreakTargets;
  