public IdentityChange Resolve(IDataStore localDataStore) { if (_alreadyMerge) { return(null); } var syncableEntity = SyncEntity.Create(_entityInfo); var solver = syncableEntity.GetSolver() as IEntityConflictSolver ?? new DefaultEntitySolver <ISyncable>(); solver.SyncSessionInfo = _syncSessionInfo; var serializer = _entityInfo.GetSerializer(); var localEntity = serializer.Deserialize(_local); var remoteEntity = serializer.Deserialize(_remote); RemoteMergeResolution = solver.Merge(localDataStore, localEntity, remoteEntity); _alreadyMerge = true; return(RemoteMergeResolution.GetIdentityChange()); }