anchor.diff:    IterateLoggers(
       procedure (Logger : ILogger)
       begin
  -      //
  +      Logger.Debug(Msg);
       end
     );
   end;
   
   procedure TMetaLogger.DebugFmt(const Msg : String; const Args : array of const);
  -begin
  -  IterateLoggers(
  -    procedure (Logger : ILogger)
  -    begin
  -      //
  +var
  +  LArgs : TArray<TVarRec>;
  +begin
  +  UnsafeCopyOpenArray<TVarRec>(Args, LArgs);
  +
  +  IterateLoggers(
  +    procedure (Logger : ILogger)
  +    begin
  +      Logger.DebugFmt(Msg, LArgs);
       end
     );
   end;
   
   procedure TMetaLogger.DebugVal(const Vals : array of TValue);
  -begin
  -  IterateLoggers(
  -    procedure (Logger : ILogger)
  -    begin
  -      //
  +var
  +  LVals : TArray<TValue>;
  +begin
  +  UnsafeCopyOpenArray<TValue>(Vals, LVals);
  +
  +  IterateLoggers(
  +    procedure (Logger : ILogger)
  +    begin
  +      Logger.DebugVal(LVals);
       end
     );
   end;
  
positive.code:   IterateLoggers(
      procedure (Logger : ILogger)
      begin
        //
      end
    );
  end;
  
  procedure TMetaLogger.WarningFmt(const Msg : String; const Args : array of const);
  begin
    IterateLoggers(
      procedure (Logger : ILogger)
      begin
        //
      end
    );
  end;
  
  procedure TMetaLogger.WarningVal(const Vals : array of TValue);
  begin
    IterateLoggers(
      procedure (Logger : ILogger)
      begin
        //
      end
    );
  end;
  
negative.code:       FLoggers : TLoggerList;
      strict protected
        procedure IterateLoggers(const Action : TProc<ILogger>);
        procedure UnsafeCopyOpenArray<T>(const Source : array of T; var Dest : TArray<T>);
  
        property Loggers : TLoggerList read FLoggers;
      public
  