anchor.diff:  
   destructor TCESynMemo.destroy;
   begin
  +  saveCache;
  +  //
     subjDocClosing(TCEMultiDocSubject(fMultiDocSubject), self);
     fMultiDocSubject.Free;
     fPositions.Free;
  
positive.code:     //
      property isDSource: boolean read fIsDSource;
      property isProjectSource: boolean read fIsConfig;
    end;
  
  var
  
negative.code: end;
  
  procedure TCESynMemo.save;
  
  begin
    Lines.SaveToFile(fFilename);
    FileAge(fFilename, fFileDate);
    fModified := false;
    if fFilename <> fTempFileName then
      subjDocChanged(TCEMultiDocSubject(fMultiDocSubject), self);
  end;
  
  procedure TCESynMemo.saveCache;
  var
    cache: TCESynMemoCache;
  begin
    cache := TCESynMemoCache.create(self);
    try
      cache.save;
    finally
      cache.free;
    end;
  end;
  
  procedure TCESynMemo.loadCache;
  var
    cache: TCESynMemoCache;
  begin
    cache := TCESynMemoCache.create(self);
    try
      cache.load;
    finally
      cache.free;
    end;
  end;
  
  procedure TCESynMemo.checkFileDate;
  