def METHOD_NAME(self, data):
    data = super().METHOD_NAME(data)
    full_data = self.to_internal_value(self.to_representation(self.instance)) if self.instance else {}
    full_data.update(data)
    if full_data.get('date_is_absolute') is not False:
        if any([k in data for k in ['offset_to_event_end', 'offset_is_after']]):
            raise ValidationError('date_is_absolute and offset_* are mutually exclusive')
        if not full_data.get('send_date'):
            raise ValidationError('send_date is required for date_is_absolute=True')
    else:
        if not all([full_data.get(k) is not None for k in ['send_offset_days', 'send_offset_time']]):
            raise ValidationError('send_offset_days and send_offset_time are required for date_is_absolute=False')
    if full_data.get('all_products') is False:
        if not full_data.get('limit_products'):
            raise ValidationError('limit_products is required when all_products=False')
    rts = full_data.get('restrict_to_status')
    if not rts or rts == []:
        raise ValidationError('restrict_to_status needs at least one value')
    elif rts:
        for s in rts:
            if s not in [
                Order.STATUS_PAID,
                Order.STATUS_EXPIRED,
                Order.STATUS_CANCELED,
                'n__valid_if_pending',
                'n__pending_overdue',
                'n__pending_approval',
                'n__not_pending_approval_and_not_valid_if_pending',
            ]:
                raise ValidationError(f'status {s} not allowed: restrict_to_status may only include valid states')
    if full_data.get('checked_in_status') == "":
        # even though "blank" is not allowed on this field, "" gets accepted without this check
        raise ValidationError('empty string not allowed: use null to disable check-in based filtering')
    return full_data