anchor.diff:    // search significantly when we are using indexof in a for loop
     if (FCurrentIndexOf > 100) and (FCurrentIndexOf < Count-2) then
     begin
  -    if FItems.Items[FCurrentIndexOf] = Pointer(AItem) then
  +    if FItems.Items[FCurrentIndexOf] = AItem then
         Result := FCurrentIndexOf
  -    else if FItems.Items[FCurrentIndexOf+1] = Pointer(AItem) then
  +    else if FItems.Items[FCurrentIndexOf+1] = AItem then
         Result := FCurrentIndexOf+1
  -    else if FItems.Items[FCurrentIndexOf-1] = Pointer(AItem) then
  +    else if FItems.Items[FCurrentIndexOf-1] = AItem then
         Result := FCurrentIndexOf-1
     end;
     if Result = -1 then
  
positive.code:     FColumns: TfpgLVColumns;
      FCurrentIndexOf: Integer;
      FViewers: TList;
      FItems: TList;
      function    GetCapacity: Integer;
      function    GetItem(AIndex: Integer): TfpgLVItem;
      procedure   SetCapacity(const AValue: Integer);
  
negative.code: 
  constructor TfpgLVItems.Create(AViewer: IfpgLVItemViewer);
  begin
    FItems := TObjectList.Create;
    FViewers := TList.Create;
    AddViewer(AViewer);
  end;
  