anchor.diff:  
     String toString() => Maps.mapToString(this);
   
  -  _getTableEntry(var table, var key) {
  +  /*=LinkedHashMapCell<K, V>*/ _getTableCell(var table, var key) {
  +    return JS('var', '#[#]', table, key);
  +  }
  +
  +  /*=List<LinkedHashMapCell<K, V>>*/ _getTableBucket(var table, var key) {
       return JS('var', '#[#]', table, key);
     }
   
  
positive.code:     var rest = _rest;
      if (rest == null) _rest = rest = _newHashTable();
      var hash = internalComputeHashCode(key);
      var bucket = _getTableEntry(rest, hash);
      if (bucket == null) {
        LinkedHashMapCell cell = _newLinkedCell(key, value);
        _setTableEntry(rest, hash, JS('var', '[#]', cell));
      } else {
        int index = internalFindBucketIndex(bucket, key);
        if (index >= 0) {
          LinkedHashMapCell cell = JS('var', '#[#]', bucket, index);
          cell.hashMapCellValue = value;
        } else {
          LinkedHashMapCell cell = _newLinkedCell(key, value);
          JS('void', '#.push(#)', bucket, cell);
        }
      }
  
negative.code:     return JS('int', '# & 0x3ffffff', key.hashCode);
    }
  
    List<dynamic/*=LinkedHashMapCell<K, V>*/ > _getBucket(var table, var key) {
      var hash = internalComputeHashCode(key);
      return _getTableBucket(table, hash);
    }
  
    int internalFindBucketIndex(var bucket, var key) {
      if (bucket == null) return -1;
      int length = JS('int', '#.length', bucket);
      for (int i = 0; i < length; i++) {
        LinkedHashMapCell/*<K, V>*/ cell = JS('var', '#[#]', bucket, i);
        if (cell.hashMapCellKey == key) return i;
      }
      return -1;
  