'Called from within SimuVEX when events happens. This function checks all breakpoints registered for that event
and fires the ones whose conditions match.'

def action(self, event_type, when, **kwargs):

    l.debug('Event    %s    (%s)    firing...', event_type, when)
    for (k, v) in kwargs.iteritems():
        if (k not in inspect_attributes):
            raise ValueError(('Invalid    inspect    attribute    %s    passed    in.    Should    be    one    of:    %s' % (k, inspect_attributes)))
        l.debug('...    setting    %s', k)
        setattr(self, k, v)
    for bp in self._breakpoints[event_type]:
        l.debug('...    checking    bp    %r', bp)
        if bp.check(self.state, when):
            l.debug('...    FIRE')
            bp.fire(self.state)
