Isn't it only a deletion operation if there is already a non-null value present? i.e. originalData[name] != null. If the original data is already null It seems like you wouldn't want to mark the field value as being deleted. A test for this scenario would be useful.