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