private void WriteUnsafe(SettingsRoot oldSettings, SettingsRoot settings)
        {
            _settingsValidationService.Validate(settings);
            var audit = _settingsChangesAuditService.GetAudit(oldSettings, settings);

            if (audit == null)
            {
                return;                // nothing changed
            }
            _settingsChangesAuditRepository.Insert(audit);
            _settingsStorageService.Write(settings);
            _cache = settings;
        }
 public void Set([NotNull] SettingsRoot settings)
 {
     if (settings == null)
     {
         throw new ArgumentNullException(nameof(settings));
     }
     _settingsValidationService.Validate(settings);
     lock (_updateLock)
     {
         _settingsStorageService.Write(settings);
         _cache = settings;
     }
 }