anchor.diff:      .AddTransition(asReportsParsed, asReportBuilt, acBuildReport,
         procedure (const PreviousState, CurrentState : TApplicationState; const UsedCommand : TApplicationCommand)
         var
  +        S : TFileName;
           Msg : TFixInsightMessage;
         begin
           with StateHolder do
           begin
  -          // TODO: implement {TExecutiveTransitionsProvider.PrepareWorkflow}
  +          FReportBuilder.BeginReport;
  +          FReportBuilder.AddHeader(FConfigData.InputFileName, Now);
  +          FReportBuilder.AddTotalSummary(CalcTotalSummary(StateHolder));
  +
  +          for S in FProjects do
  +          begin
  +            FReportBuilder.BeginProjectSection(S, CalcProjectSummary(StateHolder, S));
  +
  +            for Msg in FMessages[S] do
  +              FReportBuilder.AppendRecord(MakeRecord(Msg));
  +
  +            FReportBuilder.EndProjectSection;
  +          end;
  +
  +          FReportBuilder.AddFooter(Now);
  +          FReportBuilder.EndReport;
           end;
         end
       )
  
positive.code: 
  uses
    System.IOUtils,
    FIToolkit.Reports.Builder.HTML;
  
  { TWorkflowStateHolder }
  
  
negative.code:       type
          //TODO: replace when "F2084 Internal Error: URW1175" fixed
          IStateMachine = IFiniteStateMachine<TApplicationState, TApplicationCommand, EStateMachineError>;
      private
        class function  CalcProjectSummary(StateHolder : TWorkflowStateHolder; Project : TFileName) : TArray<TSummaryItem>;
        class function  CalcTotalSummary(StateHolder : TWorkflowStateHolder) : TArray<TSummaryItem>;
        class function  MakeRecord(Msg : TFixInsightMessage) : TReportRecord;
      public
        class procedure PrepareWorkflow(const StateMachine : IStateMachine; StateHolder : TWorkflowStateHolder);
    end;
  