anchor.diff:    removeLast() => target.removeLast();
     List getRange(int start, int length) => target.getRange(start, length);
     void setRange(int start, int length, List from, [int startFrom]) => target.setRange(start, length, from, startFrom);
  -  
  +
     reject(_Predicate match) => target.filter((x) => !match(x));
  -  
  +
     List pluck(String key) => map((value) => value[key]);
  -  
  +
     include(item) => target.indexOf(item) != -1;
     contains(item) => include(item);
  -  
  +
     static final int MaxInt = 2^32-1;
     Date MinDate; //TODO: use lazy static initialization when available
     max([Expr expr]) {
  
positive.code:     if (_factories == null) {
        _factories = [
          (target) => target is Mixin ? target : null,
          (target) => target is Collection ? new List$(target) : null, 
          (target) => target is Map ? new Map$(target) : null,
          (target) => target is String ? new String$(target) : null,
          (target) => target is num ? new Num$(target) : null,
  
negative.code:     return results;
    }
    unique([isSorted, iterator]) => uniq(isSorted, iterator);
  
    join([delim=',']) => reduce((memo,x) => memo.isEmpty() ? "$x" : "$memo$delim$x","");
  //  join([delim=',']) => Strings.join(target, delim);
  
    static concat(List<List> lists) {
      List to = [];
      lists.forEach((x) => to.addAll(x));
      return to;
    }
  
    //TODO: replace with varargs
    intersection(List<List> with) =>
      uniq().filter((item) =>
        with.every( (other) => other.indexOf(item) >= 0 )
      );
    intersect(List<List> with) => intersection(with);
  
    difference(List<List> with) {
      List _rest = fn(with).flatten(true);
      return filter((value) => !fn(_rest).include(value) );
    }
    without(List<List> with) => difference(with);
    union(List<List> with) => fn(fn(concat([target,with])).flatten(true)).uniq();
  
    static zip(List args) {
      int length = fn(args.map((x) => x.length)).max();
      List results = new List(length);
  