anchor.diff:      yield i;
   end;
   
  +type
  +  Grouping<K,T> = class(IGrouping<K,T>)
  +  private
  +    var fArray := new NSMutableArray; implements RemObjects.Elements.System.INSFastEnumeration<T>;
  +  unit
  +    method addObject(aValue: T);
  +    begin
  +      fArray.addObject(aValue);
  +    end;
  +  public
  +    property Key: K read unit write;
  +  end;
  +
  +extension method Foundation.INSFastEnumeration.GroupBy(aBlock: not nullable IDBlock): not nullable Foundation.INSFastEnumeration;
  +begin
  +  var lDictionary := new NSMutableDictionary;
  +  for each i in self do begin
  +    var lKey := aBlock(i);
  +    var lGrouping := lDictionary[lKey];
  +    if not assigned(lGrouping) then begin
  +      lGrouping := new Grouping<id,id>();
  +      lGrouping.key := lKey;
  +      lDictionary[lKey] := lGrouping;
  +    end;
  +    lGrouping.addObject(i);
  +  end;
  +  for each g in lDictionary.allValues do
  +    yield g;
  +end;
  +
   //
   // Select
   //
  
positive.code:   PredicateBlock = public block(aItem: not nullable id): Boolean;
    IDBlock = public block(aItem: not nullable id): id;
    ForSelector<T> = public delegate(aIndex: Integer): T;
  
  // Standard Linq Operators
  extension method Foundation.INSFastEnumeration.Where(aBlock: not nullable PredicateBlock): not nullable Foundation.INSFastEnumeration; iterator; public;
  
negative.code: extension method Foundation.INSFastEnumeration.OrderBy(aBlock: not nullable IDBlock): not nullable Foundation.INSFastEnumeration; iterator; public;
  extension method Foundation.INSFastEnumeration.OrderByDescending(aBlock: not nullable IDBlock): not nullable Foundation.INSFastEnumeration; iterator; public;
  
  extension method Foundation.INSFastEnumeration.GroupBy(aBlock: not nullable IDBlock): not nullable Foundation.INSFastEnumeration; iterator; public;
  
  extension method Foundation.INSFastEnumeration.Select(aBlock: not nullable IDBlock): not nullable Foundation.INSFastEnumeration; iterator; public;
  extension method Foundation.INSFastEnumeration.OfType<R>(): not nullable RemObjects.Elements.System.INSFastEnumeration<R>; iterator; public;
  extension method Foundation.INSFastEnumeration.Cast<R>(): not nullable RemObjects.Elements.System.INSFastEnumeration<R>; iterator; public;
  