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