anchor.diff:    if i >= 0 then
       Self.FLogAppenders.Delete(i);
   
  -  for I := 0 to Self.FLoggerThread.FAppendersDecorators.Count - 1 do
  +  for i := 0 to Self.FLoggerThread.FAppendersDecorators.Count - 1 do
       if Self.FLoggerThread.FAppendersDecorators[i].FLogAppender = aAppender then
         Self.FLoggerThread.FAppendersDecorators.Delete(i);
   end;
   
  -function TLogWriter.GetAppendersClassNames: TArray<string>;
  +function TCustomLogWriter.GetAppendersClassNames: TArray<string>;
   var
     I: Cardinal;
   begin
  
positive.code:   TLogWriter(Result).Initialize(aEventsHandlers);
  end;
  
  { TLogger.TLogWriter }
  
  function TLogWriter.AppendersCount: Integer;
  begin
    Result := Self.FLogAppenders.Count;
  end;
  
  constructor TLogWriter.Create(aLogAppenders: TLogAppenderList; aLogLevel: TLogType);
  begin
    inherited Create;
    FFreeAllowed := False;
    FLogAppenders := aLogAppenders;
    FLogLevel := aLogLevel;
  end;
  
  constructor TLogWriter.Create(aLogLevel: TLogType);
  begin
    Create(TLogAppenderList.Create, aLogLevel);
  end;
  
  procedure TLogWriter.Debug(const aMessage, aTag: string);
  begin
    Log(TLogType.Debug, aMessage, aTag);
  end;
  
  procedure TLogWriter.Debug(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
  begin
    Log(TLogType.Debug, aMessage, aParams, aTag);
  end;
  
  procedure TLogWriter.DebugFmt(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
  begin
    Debug(aMessage, aParams, aTag);
  end;
  
  destructor TLogWriter.Destroy;
  begin
    FLoggerThread.Terminate;
    FLoggerThread.WaitFor;
    FLoggerThread.Free;
    FLogAppenders.Free;
    inherited;
  end;
  
  procedure TLogWriter.Error(const aMessage, aTag: string);
  begin
    Log(TLogType.Error, aMessage, aTag);
  end;
  
  procedure TLogWriter.Error(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
  begin
    Log(TLogType.Error, aMessage, aParams, aTag);
  end;
  
  procedure TLogWriter.ErrorFmt(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
  begin
    Error(aMessage, aParams, aTag);
  end;
  
  function TLogWriter.GetAppenders(const Index: Integer): ILogAppender;
  begin
    Result := Self.FLogAppenders[index];
  end;
  
  procedure TLogWriter.AddAppender(const aAppender: ILogAppender);
  begin
    Self.FLoggerThread.FAppenders.Add(aAppender);
    Self.FLogAppenders.Add(aAppender);
    Self.FLoggerThread.FAppendersDecorators.Add(TLoggerThread.TAppenderAdapter.Create(aAppender));
  end;
  
  procedure TLogWriter.DelAppender(const aAppender: ILogAppender);
  var
    i: Integer;
  begin
  
negative.code:     procedure Error(const aMessage: string; const aParams: array of TVarRec; const aTag: string); overload;
      procedure ErrorFmt(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
  
      procedure Log(const aType: TLogType; const aMessage: string; const aParams: array of const; const aTag: string); overload;
      procedure LogFmt(const aType: TLogType; const aMessage: string; const aParams: array of const; const aTag: string);
    end;
  