anchor.diff:    Abort               : Boolean;
     i                   : Integer;
     NewStream           : TAbVirtualMemoryStream;
  -  WorkingStream       : TAbVirtualMemoryStream;
     UncompressedStream  : TStream;
     DateTime            : LongInt;
     SaveDir             : string;
  
positive.code:   {prepare for the try..finally}
    OutGzHelp := nil;
    NewStream := nil;
    WorkingStream := nil;
  
    try
      InGzHelp := TAbGzipStreamHelper.Create(FGzStream);
  
      try
        if IsGzippedTar and TarAutoHandle then begin
          { save the Tar data first }
          SwapToTar;
          inherited SaveArchive;
  
          { update contents of GZip Stream with new Tar }
          FGZStream.Position := 0;
          InGzHelp.ReadHeader;
          FGZStream.Size := 0;
          InGzHelp.WriteArchiveHeader;
          InGzHelp.WriteArchiveItem(FTarStream);
          InGzHelp.WriteArchiveTail;
  
          CurItem := TAbGzipItem.Create();
          try
              FGZItem.Add(CurItem);
              CurItem.Action := aaNone;
              CurItem.CRC32 := InGzHelp.CRC;
              CurItem.UncompressedSize := InGzHelp.FileSize;
          except
              CurItem.Free(); raise;
          end;
  
        end;
  
        {
          When Is Gzipperd Tar and Tar Auto Handle
          it does not seems as if any item is being added to the
          Archive, because AddFiles add all files to the tar and
          the single item is never added.
        }
  
        {TODO -cGZip : Find a better way of saving}
  
        SwapToGzip;
  
        {init new archive stream}
        NewStream := TAbVirtualMemoryStream.Create;
        OutGzHelp := TAbGzipStreamHelper.Create(NewStream);
  
negative.code: 
  procedure TAbGzipArchive.LoadArchive;
  var
    GzHelp : TAbGzipStreamHelper;
    Item   : TAbGzipItem;
    Abort  : Boolean;
  begin
    SwapToGzip;
    if FGzStream.Size > 0 then begin
      GzHelp := TAbGzipStreamHelper.Create(FGzStream);
      try
        if GzHelp.FindFirstItem then begin
          Item := TAbGzipItem.Create;
          Item.LoadGzHeaderFromStream(FGzStream);
          FGzStream.Seek(-SizeOf(TAbGzTailRec), soFromEnd);
          GZHelp.ReadTail;
          Item.CRC32 := GZHelp.TailCRC;
          Item.UncompressedSize := GZHelp.TailSize;
  
          Item.Action := aaNone;
          FGZItem.Add(Item);
  
          if IsGzippedTar and TarAutoHandle then begin
            { extract Tar and set stream up }
            GzHelp.SeekToItemData;
            GzHelp.ExtractItemData(FTarStream);
            SwapToTar;
            inherited LoadArchive;
          end;
        end;
  
        DoArchiveProgress(100, Abort);
  