private static void Synchronize <TSQL, TSP>
 (
     TSQL sqlItem,
     TSP splItem,
     List <StorageItem> _spDscrpt,
     Dictionary <string, SQLStorageItem> _sqlDscrpt,
     ProgressChangedEventHandler progressChanged,
     Microsoft.SharePoint.Linq.DataContext dataContext,
     PropertyChangedEventHandler propertyChanged
 )
     where TSQL : class, SharePoint.Client.Link2SQL.IItem, INotifyPropertyChanged, new()
 {
     sqlItem.PropertyChanged += propertyChanged;
     foreach (StorageItem _si in _spDscrpt.Where <StorageItem>(x => !x.IsReverseLookup()))
     {
         if (_sqlDscrpt.ContainsKey(_si.PropertyName))
         {
             _si.GetValueFromEntity(splItem, x => _sqlDscrpt[_si.PropertyName].Assign(x, sqlItem), dataContext);
         }
     }
     sqlItem.PropertyChanged -= propertyChanged;
 }