anchor.diff:      procedure LoadFromFile(const aFileName: UnicodeString);
     end;
   
  +
   implementation
   uses
     SysUtils, Classes;
   
  -{ TKMSavedReplays }
  -constructor TKMSavePointCollection.Create();
  +  
  +{ TKMSavePointCollection }
  +constructor TKMSavePointCollection.Create;
   begin
     inherited;
   
     fSaveCS := TCriticalSection.Create;
     fWaitCS := TCriticalSection.Create;
  -  fSavePoints := TDictionary<Cardinal, TKMSavePoint>.Create();
  +  fSavePoints := TDictionary<Cardinal, TKMSavePoint>.Create;
     fLastTick := 0;
   end;
   
   
  -destructor TKMSavePointCollection.Destroy();
  +destructor TKMSavePointCollection.Destroy;
   begin
     {$IFDEF WDC}
     // Wait till all threads release waitLock
  
positive.code: 
    TKMSavePointCollection = class
    private
      fAsyncSaveThreadsCnt: Byte; //Number of threads doing save atm. Usually should be not more then 1
      fWaitCS: TCriticalSection;
      fSaveCS: TCriticalSection;
      fSavePoints: TDictionary<Cardinal, TKMSavePoint>;
      //Properties to restore after load saved replay
      fLastTick: Cardinal;
  
      function GetCount(): Integer;
      function GetSavePoint(aTick: Cardinal): TKMSavePoint;
      function GetStream(aTick: Cardinal): TKMemoryStream;
      function GetLastTick: Cardinal;
      procedure SetLastTick(const aLastTick: Cardinal);
    public
      constructor Create();
      destructor Destroy; override;
  
      property LastTick: Cardinal read GetLastTick write SetLastTick;
  
negative.code:     // Opened spectator menu, viewports position etc...
    public
      constructor Create(aStream: TKMemoryStream; aTick: Cardinal);
      destructor Destroy; override;
  
      property Stream: TKMemoryStream read fStream;
      property Tick: Cardinal read fTick;
  