anchor.diff:      procedure GetMessagesAsStrings(aMessages : TStringList);
       function Count : integer;
       procedure Get (const aIndex : integer; out aLevel, aMessage : String; out aTime : TDateTime);
  +    procedure SetThreadSafe;
   
       property Messages : TStrings read GetMessages;
       property PerformedOperations : TPerformedOperations read FPerformedOperations;
  
positive.code:   FResults.Free;
    FMessages.Free;
    FPerformedOperations.Free;
    inherited Destroy;
  end;
  
  procedure TPerformedOperationResultsAsLog.Clear;
  begin
    FErrors.Clear;
    FWarnings.Clear;
    FInfos.Clear;
    FResults.Clear;
    FMessages.Clear;
    FPerformedOperations.Clear;
  end;
  
  procedure TPerformedOperationResultsAsLog.AddError(const aMessage: String; const aMustBeValidated : boolean = false);
  begin
    FMessages.Append('['+ TPerformedOperation.ERROR + '] ' + aMessage);
    FErrors.Add(TPerformedOperation.Create(aMessage, TPerformedOperation.ERROR, aMustBeValidated));
    FPerformedOperations.Add(TPerformedOperation.Create(aMessage, TPerformedOperation.ERROR, aMustBeValidated));
  end;
  
  procedure TPerformedOperationResultsAsLog.AddWarning(const aMessage: String; const aMustBeValidated : boolean = false);
  begin
    FMessages.Append ('[' + TPerformedOperation.WARNING + '] ' + aMessage);
    FWarnings.Add(TPerformedOperation.Create(aMessage, TPerformedOperation.WARNING, aMustBeValidated));
    FPerformedOperations.Add(TPerformedOperation.Create(aMessage, TPerformedOperation.WARNING, aMustBeValidated));
  end;
  
  procedure TPerformedOperationResultsAsLog.AddInfo(const aMessage: String; const aMustBeValidated : boolean = false);
  begin
    FMessages.Append ('[' + TPerformedOperation.INFO + '] ' + aMessage);
    FInfos.Add(TPerformedOperation.Create(aMessage, TPerformedOperation.INFO, aMustBeValidated));
    FPerformedOperations.Add(TPerformedOperation.Create(aMessage, TPerformedOperation.INFO, aMustBeValidated));
  end;
  
  procedure TPerformedOperationResultsAsLog.AddResult(const aMessage: String; const aMustBeValidated : boolean = false);
  begin
    FMessages.Append('[' + TPerformedOperation.RESULT + '] ' + aMessage);
    FResults.Add(TPerformedOperation.Create(aMessage, TPerformedOperation.RESULT, aMustBeValidated));
    FPerformedOperations.Add(TPerformedOperation.Create(aMessage, TPerformedOperation.RESULT, aMustBeValidated));
  end;
  
  procedure TPerformedOperationResultsAsLog.GetMessagesAsStrings(aMessages: TStringList);
  begin
    aMessages.Clear;
    aMessages.AddStrings(FMessages);
  end;
  
  function TPerformedOperationResultsAsLog.Count: integer;
  
negative.code:   FResults := TPerformedOperations.Create();
    FMessages := TStringList.Create;
    FPerformedOperations := TPerformedOperations.Create();
    FCriticalSection := TCriticalSection.Create;
    FThreadSafe:= false;
  end;
  
  destructor TPerformedOperationResultsAsLog.Destroy;
  