anchor.diff:    protected
       class function GetActualFileName(const AFileName: string): string;
     public
  -    class procedure Load(const AParameters: TMARSParameters; const AIniFileName: string = '');
  +    class procedure Load(const AParameters: TMARSParameters;
  +      const AIniFileName: string = ''; const ABeforeLoad: TProc<TIniFile> = nil);
       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 LoadFromIniFile(const AIniFileName: string = ''; const ABeforeLoad: TProc<TIniFile> = nil);
       procedure SaveToIniFile(const AIniFileName: string = '');
       function IniFileExists(const AIniFileName: string = '') : boolean;
     end;
  
positive.code: begin
    LIniFile := TIniFile.Create(GetActualFileName(AIniFileName));
    try
      LValues := TStringList.Create;
      try
        LIniFile.ReadSectionValues(AParameters.Name, LValues);
  
negative.code: end;
  
  procedure TMARSParametersIniFileReaderWriterHelper.LoadFromIniFile(
    const AIniFileName: string; const ABeforeLoad: TProc<TIniFile>);
  begin
    TMARSParametersIniFileReaderWriter.Load(Self, AIniFileName, ABeforeLoad);
  end;
  
  procedure TMARSParametersIniFileReaderWriterHelper.SaveToIniFile(
  