anchor.diff:  begin
     LIniFile := TIniFile.Create(GetActualFileName(AIniFileName));
     try
  +    if Assigned(ABeforeLoad) then
  +      ABeforeLoad(LIniFile);
  +
       LValues := TStringList.Create;
       try
         LIniFile.ReadSectionValues(AParameters.Name, LValues);
  
positive.code:   protected
      class function GetActualFileName(const AFileName: string): string;
    public
      class procedure Load(const AParameters: TMARSParameters; const AIniFileName: string = '');
      class procedure Save(const AParameters: TMARSParameters; const AIniFileName: string = '');
      class function IniFileExists(const AIniFileName: string = '') : boolean;
    end;
  
    TMARSParametersIniFileReaderWriterHelper=class helper for TMARSParameters
    public
      procedure LoadFromIniFile(const AIniFileName: string = '');
      procedure SaveToIniFile(const AIniFileName: string = '');
      function IniFileExists(const AIniFileName: string = '') : boolean;
    end;
  
negative.code: end;
  
  procedure TMARSParametersIniFileReaderWriterHelper.LoadFromIniFile(
    const AIniFileName: string; const ABeforeLoad: TProc<TIniFile>);
  begin
    TMARSParametersIniFileReaderWriter.Load(Self, AIniFileName, ABeforeLoad);
  end;
  
  procedure TMARSParametersIniFileReaderWriterHelper.SaveToIniFile(
  