anchor.diff:         function Compare(constref Left, Right: T): Integer;
      end;
   
  +  { TInvertedComparer }
  +
  +  TInvertedComparer<T> = class(TInterfacedObject, IComparer<T>)
  +  private
  +    FComparer : IComparer<T>;
  +  public
  +    constructor Create(const AComparer : IComparer<T>); overload;
  +    function Compare(constref Left, Right: T): Integer;
  +  end;
  +
     { TNestedPredicate }
   
     TNestedPredicate<T> = class (TInterfacedObject, IPredicate<T>)
  
positive.code: class function TComparerTool<T>.AlwaysEqualHandler(constref Left, Right: T) : Integer;
  begin
    Result := 0;
  end;
  
  { TNestedComparer }
  
negative.code:       class function Transform(const AList : TList<T1>; const ATransformer : ITransformer<T1, T2>) : TArray<T2>; overload;
    end;
  
    { TSortedHashSetTool }
  
    TSortedHashSetTool<T> = class
      class function Pop(ASet : TSortedHashSet<T>) : T;
    end;
  
  
    { ================================================================================================== }
    { IMPLEMENTATION LEVEL TYPES -- declared here due to FPC bug
    { ================================================================================================== }
  
    { TNestedComparer }
  
  