code: def run(self):
      
  
      if not (self._watchman and self._watchman.is_alive()):
        raise PantsService.ServiceError('watchman is not running, bailing!')
  
      # Enable watchman for the build root.
      self._watchman.watch_project(self._build_root)
  
      subscriptions = list(self._handlers.values())
  
      # Setup subscriptions and begin the main event firing loop.
      for handler_name, event_data in self._watchman.subscribed(self._build_root, subscriptions):
        self._state.maybe_pause()
        if self._state.is_terminating:
          break
  
        if event_data:
          # As we receive events from watchman, trigger the relevant handlers.
          self.fire_callback(handler_name, event_data)
docs: Main service entrypoint. Called via Thread.start() via PantsDaemon.run().