docs: def run(self, module, dependency=False, kwargs={}):
          '''
          Runs a specific module.
          '''
          try:
              obj = self.load(module, kwargs)
  
              if isinstance(obj, binwalk.core.module.Module) and obj.enabled:
                  obj.main()
                  self.status.clear()
  
              # If the module is not being loaded as a dependency, add it to the executed modules dictionary.
              # This is used later in self.execute to determine which objects
              # should be returned.
              if not dependency:
                  self.executed_modules[module] = obj
  
                  # The unload method tells the module that we're done with it, and gives it a chance to do
                  # any cleanup operations that may be necessary. We still retain
                  # the object instance in self.executed_modules.
                  obj._unload_dependencies()
                  obj.unload()
          except KeyboardInterrupt as e:
              # Tell the status server to shut down, and give it time to clean
              # up.
              if self.status.running:
                  self.status.shutdown = True
                  while not self.status.finished:
                      time.sleep(0.1)
              raise e
  
          return obj