anchor.diff:      .AddTransition(asReportBuilt, asArchiveMade, acMakeArchive,
         procedure (const PreviousState, CurrentState : TApplicationState; const UsedCommand : TApplicationCommand)
         var
  -        sReportFileName, sZipFileName : TFileName;
  +        sArchiveFileName : TFileName;
           ZF : TZipFile;
         begin
           with StateHolder do
             if FConfigData.MakeArchive then
             begin
  -            sReportFileName := FConfigData.OutputDirectory + FConfigData.OutputFileName;
  -            sZipFileName := sReportFileName + STR_ARCHIVE_FILE_EXT;
  -
  -            if TFile.Exists(sZipFileName) then
  -              TFile.Delete(sZipFileName);
  +            sArchiveFileName := FReportFileName + STR_ARCHIVE_FILE_EXT;
  +
  +            if TFile.Exists(sArchiveFileName) then
  +              TFile.Delete(sArchiveFileName);
   
               ZF := TZipFile.Create;
               try
  -              ZF.Open(sZipFileName, zmWrite);
  -              ZF.Add(sReportFileName);
  +              ZF.Open(sArchiveFileName, zmWrite);
  +              ZF.Add(FReportFileName);
                 ZF.Close;
               finally
                 ZF.Free;
               end;
   
  -            DeleteFile(sReportFileName);
  +            DeleteFile(FReportFileName);
             end;
         end
       )
  
positive.code: 
  destructor TWorkflowStateHolder.Destroy;
  begin
    FreeAndNil(FMessages);
  
    FreeAndNil(FFixInsightXMLParser);
    FreeAndNil(FProjectGroupParser);
    FreeAndNil(FProjectParser);
    FreeAndNil(FReportOutput);
    FreeAndNil(FTaskManager);
    FReportBuilder := nil;
  
    inherited Destroy;
  end;
  
negative.code:   inherited Create;
  
    FMessages := TDictionary<TFileName, TArray<TFixInsightMessage>>.Create;
    FReportFileName := TPath.Combine(ConfigData.OutputDirectory, ConfigData.OutputFileName);
    FReportOutput := TFile.CreateText(FReportFileName);
  
    FConfigData := ConfigData;
    FFixInsightXMLParser := TFixInsightXMLParser.Create;
  