anchor.diff:        procedure ReleaseBuilder;
         procedure WriteLine(const S : String); virtual; abstract;
       protected
  -      function FormatLogMessage(Severity : TLogMsgSeverity; const Msg : String) : String; virtual;
  -      function FormatLogSectionBeginning(const Msg : String) : String; virtual;
  -      function FormatLogSectionEnding(const Msg : String) : String; virtual;
  -
  -      function FormatCurrentThread : String; virtual;
  -      function FormatSeverity(Severity : TLogMsgSeverity) : String; virtual;
  -      function FormatTimestamp(Timestamp : TLogTimestamp) : String; virtual;
  -      function GetLogRecordPreamble(Instant : TLogTimestamp) : String; virtual;
  -      function IndentText(const Text, PaddingStr : String; LeftPadding : Word; ExceptFirstLine : Boolean) : String;
  +      function  FormatLogMessage(PreambleLength : Word; Severity : TLogMsgSeverity; const Msg : String) : String; virtual;
  +      function  FormatLogSectionBeginning(PreambleLength : Word; const Msg : String) : String; virtual;
  +      function  FormatLogSectionEnding(PreambleLength : Word; const Msg : String) : String; virtual;
  +
  +      function  FormatCurrentThread : String; virtual;
  +      function  FormatPreamble(Instant : TLogTimestamp) : String; virtual;
  +      function  FormatSeverity(Severity : TLogMsgSeverity) : String; virtual;
  +      function  FormatTimestamp(Timestamp : TLogTimestamp) : String; virtual;
  +      function  IndentText(const Text, PaddingStr : String; LeftPadding : Word; ExceptFirstLine : Boolean) : String;
       public
         constructor Create; override;
         destructor Destroy; override;
  
positive.code: function TPlainTextOutput.FormatTimestamp(Timestamp : TLogTimestamp) : String;
  begin
    Result := DateTimeToStr(Timestamp);
  end;
  
  function TPlainTextOutput.GetLogRecordPreamble(Instant : TLogTimestamp) : String;
  begin
    // TODO: implement {TPlainTextOutput.GetLogRecordPreamble}
  end;
  
  function TPlainTextOutput.IndentText(const Text, PaddingStr : String; LeftPadding : Word;
  
negative.code: end;
  
  procedure TPlainTextOutput.DoBeginSection(Instant : TLogTimestamp; const Msg : String);
  var
    sPreamble : String;
  begin
    sPreamble := FormatPreamble(Instant);
    WriteLine(sPreamble + FormatLogSectionBeginning(sPreamble.Length, Msg));
  end;
  
  procedure TPlainTextOutput.DoEndSection(Instant : TLogTimestamp; const Msg : String);
  var
    sPreamble : String;
  begin
    sPreamble := FormatPreamble(Instant);
    WriteLine(sPreamble + FormatLogSectionEnding(sPreamble.Length, Msg));
  end;
  
  procedure TPlainTextOutput.DoWriteMessage(Instant : TLogTimestamp; Severity : TLogMsgSeverity; const Msg : String);
  var
    sPreamble : String;
  begin
    sPreamble := FormatPreamble(Instant);
    WriteLine(sPreamble + FormatLogMessage(sPreamble.Length, Severity, Msg));
  end;
  
  function TPlainTextOutput.FormatCurrentThread : String;
  