anchor.diff:            for F in FProjects do
               if Assigned(FMessages[F]) then
               begin
  -              FReportBuilder.BeginProjectSection(F, TWorkflowHelper.CalcProjectSummary(StateHolder, F));
  +              FReportBuilder.BeginProjectSection(
  +                TWorkflowHelper.FormatProjectTitle(StateHolder, F),
  +                TWorkflowHelper.CalcProjectSummary(StateHolder, F)
  +              );
   
                 for Msg in FMessages[F] do
                   FReportBuilder.AppendRecord(TWorkflowHelper.MakeRecord(Msg));
  
positive.code: 
    TWorkflowHelper = class
      private
        class function CalcProjectSummary(StateHolder : TWorkflowStateHolder; Project : TFileName) : TArray<TSummaryItem>;
        class function CalcSummary(StateHolder : TWorkflowStateHolder; ProjectFilter : String) : TArray<TSummaryItem>;
        class function CalcTotalSummary(StateHolder : TWorkflowStateHolder) : TArray<TSummaryItem>;
        class function FormatReportTitle(StateHolder : TWorkflowStateHolder) : String;
        class function MakeRecord(Msg : TFixInsightMessage) : TReportRecord;
    end;
  
negative.code: { TWorkflowHelper }
  
  class function TWorkflowHelper.CalcProjectSummary(StateHolder : TWorkflowStateHolder;
    const Project : TFileName) : TArray<TSummaryItem>;
  begin
    Result := CalcSummary(StateHolder, Project);
  end;
  
  class function TWorkflowHelper.CalcSummary(StateHolder : TWorkflowStateHolder;
    const ProjectFilter : String) : TArray<TSummaryItem>;
  var
    arrSummary : array [Low(TFixInsightMessageType)..High(TFixInsightMessageType)] of TSummaryItem;
  
  