anchor.diff:  var
     APassPhrase : string;
   begin
  +  APassPhrase := Archive.Password; {!!.05  SF.NET Bug 698162}
     Abort := False;
     if Assigned(Archive.OnNeedPassword) then begin
       Archive.OnNeedPassword(Archive, APassPhrase);
  
positive.code: var
    Confirm    : Boolean;
    OutStream  : TFileStream;
    ZipArchive : TAbZipArchive;
  {$IFDEF LINUX}                                                           {!!.01}
    FileDateTime  : TDateTime;                                             {!!.01}
  
negative.code: 
    if not Confirm then
      Exit;
    // The problem with Create the FileStream here is that overwrites the existing
    // File which is no problem, unless the archive is password protected and
    // then Password is found out to be wrong.   Ways to resolve:
    // 1. extract to TMemoryStream then Write MemoryStream to Disk if everything is ok.
    // 2. Move the password check up in the process (if possible)
    // 3. Write to a Temp File if everything ok copy to new location.
    // Given all the options that I have now, I am going to try option #1 for now,
    // it may cause problems on memory overhead for some, but lets see if it does.
    // It also may speed up this routine for many.
    try
    TempOut := TMemoryStream.Create;
    try
      TempOut.Size := Item.UncompressedSize;// This causes all the memory to allocated at once which is faster
      AbUnZipToStream(Sender, Item, TempOut);
      OutStream := TFileStream.Create(NewName, fmCreate or fmShareDenyWrite); {!!.01}
      try
        // Copy Memory Stream To File Stream.
        TempOut.SaveToStream(OutStream);
      finally
       OutStream.Free;
      end;
  
    finally
      TempOut.Free;
    end;
  
  
  //  Original Code Base Before Change to Memory Stream
  //  OutStream := TFileStream.Create(NewName, fmCreate or fmShareDenyWrite); {!!.01}
  //  try
  //    try    {OutStream}
  //      AbUnZipToStream(Sender, Item, OutStream);
  //   finally {OutStream}
  //      OutStream.Free;
  //   end;   {OutStream}
     // [ 880505 ]  Need to Set Attributes after File is closed {!!.05}
        {$IFDEF MSWINDOWS}
        AbSetFileDate(NewName, (Longint(Item.LastModFileDate) shl 16)
  