anchor.diff:    }
   
     void sort([int compare(a, b)]) {
  -    IterableMixinWorkaround.sortList(this, compare);
  +    if (compare == null) compare = Comparable.compare;
  +    Sort.sort(this, compare);
     }
   
     void shuffle([Random random]) {
  -    IterableMixinWorkaround.shuffleList(this, random);
  +    if (random == null) random = new Random();
  +    var i = this.length;
  +    while (i > 1) {
  +      int pos = random.nextInt(i);
  +      i -= 1;
  +      var tmp = this[i];
  +      this[i] = this[pos];
  +      this[pos] = tmp;
  +    }
     }
   
     int indexOf(element, [int start = 0]) {
  -    return IterableMixinWorkaround.indexOfList(this, element, start);
  +    return Lists.indexOf(this, element, start, this.length);
     }
   
     int lastIndexOf(element, [int start = null]) {
  -    return IterableMixinWorkaround.lastIndexOfList(this, element, start);
  +    if (start == null) start = this.length - 1;
  +    return Lists.lastIndexOf(this, element, start);
     }
   
     void clear() {
  
positive.code: 
      final count = end - start;
      if ((from.length - skipCount) < count) {
        throw new StateError("Not enough elements");
      }
  
      if (from is _TypedListBase) {
  
negative.code:         // an intermediate structure.
          // TODO(srdjan): Optimize to skip copying if the range does not overlap.
          final temp_buffer = new List(count);
          for (var i = 0; i < count; i++) {
            temp_buffer[i] = from[skipCount + i];
          }
          for (var i = start; i < end; i++) {
            this[i] = temp_buffer[i - start];
          }
          return;
        }
      }
  
      if (count == 0) return;
      List otherList;
      int otherStart;
      if (from is List) {
        otherList = from;
        otherStart = skipCount;
      } else {
        otherList = from.skip(skipCount).toList(growable: false);
        otherStart = 0;
      }
      if (otherStart + count > otherList.length) {
        throw IterableElementError.tooFew();
      }
      Lists.copy(otherList, otherStart, this, start, count);
    }
  
    void setAll(int index, Iterable iterable) {
  