def METHOD_NAME(self, base_qs, using, pk_val, values, update_fields, forced_update):
    # This is a modified version of FSM's ConcurrentTransitionMixin's _do_update
    # Select state fields to filter on
    filter_on = filter(lambda field: field.model == base_qs.model, self.state_fields)
    # state filter will be used to narrow down the standard filter checking only PK
    state_filter = dict(
        (field.attname, self._ConcurrentTransitionMixin__initial_states[field.attname])
        for field in filter_on
    )
    strict_fields = [field if isinstance(field, str) else field.name
                     for field in getattr(self, 'strict_fields', [])]
    if set(field.name for field in filter_on).intersection(set(self.get_unsaved_fields())):
        strict_fields_filter = {field: getattr(self, field) for field in strict_fields}
    else:
        strict_fields_filter = {}
    updated = super(ConcurrentTransitionMixin, self).METHOD_NAME(
        base_qs=base_qs.filter(**state_filter, **strict_fields_filter),
        using=using,
        pk_val=pk_val,
        values=values,
        update_fields=update_fields,
        forced_update=forced_update
    )
    if not updated and base_qs.filter(pk=pk_val).exists():
        raise ConcurrentTransition(
            "Cannot save object! The state has been changed since fetched from the database!"
        )
    return updated