public void Update(User user) {
     lock (_userList) {
         ValidateExists(user.Id);
         UpdateExisting(user);
         _eventBus.Publish(new UserRecordUpdated(user.Id));
     }
 }
 public void Create(User user) {
     lock (_userList) {
         ValidateDoesntExistYet(user.UserName);
         var userRow = CreateUserRow(user);
         AddToStorage(userRow);
         user.Id = userRow.Id;
         _eventBus.Publish(new UserRecordCreated(userRow.Id));
     }
 }
 UserRow CreateUserRow(User user) {
     return _mapper.DynamicMap<UserRow>(user);
 }
 void UpdateExisting(User user) {
     var existingRecord = _userList[user.Id];
     _mapper.DynamicMap(user, existingRecord);
 }
 static void ConfirmUserExists(User user) {
     if (user == null)
         throw new UserDoesntExistException();
 }