anchor.diff:    /// Each buffer ends up as its own case part in the big state-switch.
     void beginLabel(int label) {
       assert(!labelledParts.containsKey(label));
  -    currentStatementBuffer = new List<js.Statement>();
  +    currentStatementBuffer = <js.Statement>[];
       labelledParts[label] = currentStatementBuffer;
       addStatement(new js.Comment(labelComments[label]));
     }
  
positive.code:         List<js.SwitchClause> cases = node.cases.map((js.SwitchClause clause) {
            if (clause is js.Case) {
              return new js.Case(
                  clause.expression, translateInBlock(clause.body));
            } else if (clause is js.Default) {
              return new js.Default(translateInBlock(clause.body));
            }
          }).toList();
          addStatement(new js.Switch(key, cases));
  
negative.code:     unsupported(node);
    }
  
    List<js.Statement> translateToStatementSequence(js.Statement node) {
      assert(!shouldTransform(node));
      List<js.Statement> oldBuffer = currentStatementBuffer;
      currentStatementBuffer = <js.Statement>[];
      List<js.Statement> resultBuffer = currentStatementBuffer;
      visitStatement(node);
      currentStatementBuffer = oldBuffer;
      return resultBuffer;
    }
  
    js.Statement translateToStatement(js.Statement node) {
      List<js.Statement> statements = translateToStatementSequence(node);
      if (statements.length == 1)
        return statements.single;
      return new js.Block(statements);
    }
  
    js.Block translateToBlock(js.Statement node) {
      return new js.Block(translateToStatementSequence(node));
    }
  
    @override
    void visitIf(js.If node) {
      if (!shouldTransform(node.then) && !shouldTransform(node.otherwise)) {
        withExpression(node.condition, (js.Expression condition) {
          js.Statement translatedThen = translateToStatement(node.then);
          js.Statement translatedElse = translateToStatement(node.otherwise);
          addStatement(new js.If(condition, translatedThen, translatedElse));
        }, store: false);
        return;
      }
  