anchor.diff:  
     @override
     JS.Expression visitMapLiteral(MapLiteral node) {
  -    var entries = <JS.Expression>[];
  -    for (var e in node.entries) {
  -      entries.add(_visitExpression(e.key));
  -      entries.add(_visitExpression(e.value));
  -    }
  +    var entries = [
  +      for (var e in node.entries) ...[
  +        _visitExpression(e.key),
  +        _visitExpression(e.value),
  +      ],
  +    ];
   
       // TODO(markzipan): remove const check when we use front-end const eval
       if (!node.isConst) {
  
positive.code: 
      if (emitMetadata) {
        var constructors = <JS.Property>[];
        var allConstructors = List<Member>.from(c.constructors)
          ..addAll(c.procedures.where((p) => p.isFactory));
        for (var ctor in allConstructors) {
          var memberName = _constructorName(ctor.name.name);
          var type = _emitAnnotatedFunctionType(
  
negative.code:       // (sync*/async/async*). Our code generator assumes it can emit names for
        // named argument initialization, and sync* functions also emit locally
        // modified parameters into the function's scope.
        var parameterNames = {
          for (var p in f.positionalParameters) p.name,
          for (var p in f.namedParameters) p.name,
        };
  
        return jsBody.toScopedBlock(parameterNames);
      }
  