anchor.diff:  
   implementation
   
  -{%region Comparer API}
  +{ TComparerTool }
   
   class function TComparerTool<T>.FromFunc(const AFunc: TNestedComparerFunc<T>) : IComparer<T>;
   begin
  
positive.code:       class function Many(const comparers: array of IComparer<T>) : IComparer<T>; overload;
        class function Many(const comparers: TEnumerable<__IComparer_T>) : IComparer<T>; overload;
        class function AlwaysEqual : IComparer<T>;
      private
        // These should be nested but FPC doesn't support nested functions in generics
        class function AlwaysEqualHandler(constref Left, Right: T) : Integer;
  
negative.code:   end;
  end;
  
  { TInvertedComparer }
  
  constructor TInvertedComparer<T>.Create(const AComparer: IComparer<T>);
  begin
    FComparer := AComparer;
  end;
  
  function TInvertedComparer<T>.Compare(constref Left, Right: T): Integer;
  begin
    Result := FComparer.Compare(Left, Right) * -1;
  end;
  
  
  { TPredicateTool }
  
  