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):
        """
        Called from within SimuVEX when events happens. This function checks all breakpoints registered for that event
        and fires the ones whose conditions match.
        """
        l.debug("Event %s (%s) firing...", event_type, when)
        for k,v in kwargs.items():
            if k not in inspect_attributes:
                raise ValueError("Invalid inspect attribute %s passed in. Should be one of: %s" % (k, inspect_attributes))
            #l.debug("... %s = %r", k, v)
            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)