def __updateFields(self, item, persistentItem, user_login):
        newFieldNames = set(map(lambda ifield: ifield.field.name,
                                [ifield for ifield in item.item_fields]))
        oldFieldNames = set(map(lambda ifield: ifield.field.name,
                                [ifield for ifield in persistentItem.item_fields]))

        fieldNamesToRemove = oldFieldNames - newFieldNames
        operations.ItemOperations.removeFields(self._session, persistentItem, fieldNamesToRemove)

        fieldNamesToStay = newFieldNames - fieldNamesToRemove
        itemFieldsToStay = [ifield for ifield in item.item_fields
                            if (ifield.field.name in fieldNamesToStay)]
        nameValuePairsToAdd = map(lambda ifield: (ifield.field.name, ifield.field_value),
                                  itemFieldsToStay)
        operations.ItemOperations.addOrUpdateFields(self._session, persistentItem,
                                                    nameValuePairsToAdd, user_login)