anchor.diff:  
     TLoggerThread = class(TThread)
     private type
  -    TAppenderAdapter = class
  -    private
  -      FAppenderQueue: TAppenderQueue;
  -      FAppenderThread: TAppenderThread;
  -      FLogAppender: ILogAppender;
  -      FFailsCount: Cardinal;
  -    public
  -      constructor Create(aAppender: ILogAppender); virtual;
  -      destructor Destroy; override;
  -      function EnqueueLog(const aLogItem: TLogItem): Boolean;
  -      property Queue: TAppenderQueue read FAppenderQueue;
  -      property FailsCount: Cardinal read FFailsCount;
  -      function GetLogLevel: TLogType;
  -    end;
  -
  -    TAppenderAdaptersList = class(TObjectList<TAppenderAdapter>)
  -    public
  -      constructor Create;
  -    end;
  +      TAppenderAdapter = class
  +      private
  +        FAppenderQueue: TAppenderQueue;
  +        FAppenderThread: TAppenderThread;
  +        FLogAppender: ILogAppender;
  +        FFailsCount: Cardinal;
  +      public
  +        constructor Create(aAppender: ILogAppender); virtual;
  +        destructor Destroy; override;
  +        function EnqueueLog(const aLogItem: TLogItem): Boolean;
  +        property Queue: TAppenderQueue read FAppenderQueue;
  +        property FailsCount: Cardinal read FFailsCount;
  +        function GetLogLevel: TLogType;
  +      end;
  +
  +      TAppenderAdaptersList = class(TObjectList<TAppenderAdapter>)
  +      public
  +        constructor Create;
  +      end;
   
     private
       FQueue: TThreadSafeQueue<TLogItem>;
       FAppenders: TLogAppenderList;
       FEventsHandlers: TLoggerProEventsHandler;
  +    FAppendersDecorators: TObjectList<TAppenderAdapter>;
       function BuildAppendersDecorator: TAppenderAdaptersList;
       procedure DoOnAppenderError(const FailAppenderClassName: string; const aFailedLogItem: TLogItem; const aReason: TLogErrorReason;
         var aAction: TLogErrorAction);
  
positive.code:   protected
      procedure Execute; override;
  
    type
      TAppenderStatus = (BeforeSetup, Running, WaitAfterFail, ToRestart, BeforeTearDown);
    public
      constructor Create(aLogAppender: ILogAppender; aAppenderQueue: TAppenderQueue);
      property Failing: Boolean read FFailing write SetFailing;
  
negative.code:   TLogType = (Debug = 0, Info, Warning, Error);
    TLogErrorReason = (QueueFull);
    TLogErrorAction = (SkipNewest, DiscardOlder);
    TLogExtendedInfo = (EIUserName, EIComputerName, EIProcessName, EIProcessID, EIDeviceID { mobile });
    TLoggerProExtendedInfo = set of TLogExtendedInfo;
  
    { @abstract(Represent the single log item)
  