def METHOD_NAME(self, tags, purge_tags):
    if tags is None:
        return False
    changed = False
    # Tags are returned as a part of the resource, but have to be updated
    # via dedicated tagging methods
    current_tags = self._get_tags()
    # So that diff works in check mode we need to know the full target state
    if purge_tags:
        desired_tags = deepcopy(tags)
    else:
        desired_tags = deepcopy(current_tags)
        desired_tags.update(tags)
    tags_to_add, tags_to_remove = compare_aws_tags(current_tags, tags, purge_tags)
    if tags_to_add:
        self._tagging_updates["add"] = tags_to_add
        changed = True
    if tags_to_remove:
        self._tagging_updates["remove"] = tags_to_remove
        changed = True
    if changed:
        # Tags are a stored as a list, but treated like a list, the
        # simplisic '==' in _set_resource_value doesn't do the comparison
        # properly
        return self._set_resource_value("Tags", ansible_dict_to_boto3_tag_list(desired_tags))
    return False