anchor.diff:  
   constructor TfpgLVItems.Create(AViewer: IfpgLVItemViewer);
   begin
  -  FItems := TList.Create;
  +  FItems := TObjectList.Create;
     FViewers := TList.Create;
     AddViewer(AViewer);
   end;
  
positive.code:   // 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
        Result := FCurrentIndexOf
      else if FItems.Items[FCurrentIndexOf+1] = Pointer(AItem) then
        Result := FCurrentIndexOf+1
      else if FItems.Items[FCurrentIndexOf-1] = Pointer(AItem) then
        Result := FCurrentIndexOf-1
    end;
    if Result = -1 then
  
negative.code:     FColumns: TfpgLVColumns;
      FCurrentIndexOf: Integer;
      FViewers: TList;
      FItems: TObjectList;
      function    GetCapacity: Integer;
      function    GetItem(AIndex: Integer): TfpgLVItem;
      procedure   SetCapacity(const AValue: Integer);
  