anchor.diff:    }
   
     @override
  -  visitMapLiteral(MapLiteral node) {
  -    emitEntries() {
  -      var entries = <JS.Expression>[];
  -      for (var e in node.entries) {
  -        entries.add(_visitExpression(e.key));
  -        entries.add(_visitExpression(e.value));
  -      }
  -      return entries;
  -    }
  -
  +  visitMapLiteral(MapLiteral node) => _emitMapLiteral(node.entries, node);
  +
  +  JS.Expression _emitMapLiteral(
  +      Iterable<CollectionElement> elements, SetOrMapLiteral node) {
       var type = node.staticType as InterfaceType;
       if (!node.isConst) {
         var mapType = _emitMapImplType(type);
  -      if (node.entries.isEmpty) {
  +      if (elements.isEmpty) {
           return js.call('new #.new()', [mapType]);
         }
  -      return js.call('new #.from([#])', [mapType, emitEntries()]);
  -    }
  -    return _cacheConst(() => _emitConstMap(type, emitEntries()));
  +      return js.call(
  +          'new #.from([#])', [mapType, _visitCollectionElementList(elements)]);
  +    }
  +    return _cacheConst(
  +        () => _emitConstMap(type, _visitCollectionElementList(elements)));
     }
   
     JS.Expression _emitConstMap(InterfaceType type, List<JS.Expression> entries) {
  
positive.code:   visitSetLiteral2(SetLiteral2 node) => _unreachable(node);
  
    @override
    visitSetOrMapLiteral(SetOrMapLiteral node) => _unreachable(node);
  
    @override
    visitSpreadElement(SpreadElement node) => _unreachable(node);
  
negative.code:     return nodes?.map(_visitStatement)?.toList();
    }
  
    /// Visits [nodes] with [_visitColelctionElement].
    List<JS.Expression> _visitCollectionElementList(
        Iterable<CollectionElement> nodes) {
      var expressions = <JS.Expression>[];
      for (var node in nodes) {
        //TODO(nshahan) Handle [IfElement] and [ForElement].
        if (node is MapLiteralEntry) {
          expressions.add(_visitExpression(node.key));
          expressions.add(_visitExpression(node.value));
        } else {
          expressions.add(_visitExpression(node));
        }
      }
      return expressions;
    }
  
    /// Gets the start position of [node] for use in source mapping.
  