anchor.diff:  procedure TAbArchiveList.Delete(Index: Integer);
   var
     Look : TAbArchiveItem;
  -  Last : Pointer;
  +  Last : ^TAbArchiveItem;
     FN : string;
   begin
     if FOwnsItems then begin
       FN := TAbArchiveItem(FList[Index]).FileName;
       Last := @HashTable[GenerateHash(FN)];
  -    Look := TAbArchiveItem(Last^);
  +    Look := Last^;
       while Look <> nil do begin
         if CompareText(Look.FileName, FN) = 0 then begin
  -        Move(Look.NextItem, Last^, 4);
  +        Last^ := Look.NextItem;
           Break;
         end;
         Last := @Look.NextItem;
  -      Look := TAbArchiveItem(Last^);
  +      Look := Last^;
       end;
       TObject(FList[Index]).Free;
     end;
  
positive.code: var
    H : LongInt;
    Look : TAbArchiveItem;
    Last : Pointer;
    FN : string;
  begin
    if FOwnsItems then begin
      FN := TAbArchiveItem(FList[Index]).FileName;
      Last := @HashTable[GenerateHash(FN)];
      Look := TAbArchiveItem(Last^);
      { Delete old index }
      while Look <> nil do begin
        if CompareText(Look.FileName, FN) = 0 then begin
          Move(Look.NextItem, Last^, 4);
          Break;
        end;
        Last := @Look.NextItem;
        Look := TAbArchiveItem(Last^);
      end;
      { Free old instance }
      TObject(FList[Index]).Free;
      { Add new index }
      H := GenerateHash(TAbArchiveItem(Item).FileName);
      TAbArchiveItem(Item).NextItem := HashTable[H];
      HashTable[H] := TAbArchiveItem(Item);
    end;
    { Replace pointer }
    FList[Index] := Item;
  end;
  
  
  
negative.code:   Confirm : Boolean;
    Found : Boolean;
    i : Integer;
    FixedPath, OldFileName: string;
  begin
    CheckValid;
    FixedPath := FixName(NewStoredPath);
  