docs: 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)