anchor.diff:    sSummary := FTemplate.GetProjectSummaryElement.Replace(STR_HTML_PROJECT_SUMMARY_ITEMS, sAllSummaryItems);
     WriteLine(
       ExcludeClosingTag(FTemplate.GetProjectSectionElement)
  -      .Replace(STR_HTML_PROJECT_TITLE, Title)
  +      .Replace(STR_HTML_PROJECT_TITLE, Encode(Title))
         .Replace(STR_HTML_PROJECT_SUMMARY, sSummary)
     );
     WriteLine(ExcludeClosingTag(FTemplate.GetProjectMessagesElement));
  
positive.code:       FOutput : TStream;
        FTemplate : ITextReportTemplate;
      private
        function  ExcludeClosingTag(const TemplateElement : String) : String;
        function  ExtractClosingTag(const TemplateElement : String) : String;
        function  FindClosingTag(const TemplateElement : String; out ClosingTag : TMatch) : Boolean;
  
negative.code:   FOutput := Output;
  end;
  
  function THTMLReportBuilder.Encode(const Value : String) : String;
  begin
    Result := TNetEncoding.HTML.Encode(Value);
  end;
  
  procedure THTMLReportBuilder.EndProjectSection;
  begin
    WriteLine(ExtractClosingTag(FTemplate.GetProjectMessagesElement));
  