async def METHOD_NAME(self):
    t = time.time()
    self.logger.info('Starting components...')
    self.logger.info(f'State directory: "{self.config.state_dir}"')
    create_state_directory_structure(self.config.state_dir)
    patch_crypto_be_discovery()
    # On Mac, we bundle the root certificate for the SSL validation since Twisted is not using the root
    # certificates provided by the system trust store.
    if sys.platform == 'darwin':
        os.environ['SSL_CERT_FILE'] = str(get_lib_path() / 'root_certs_mac.pem')
    coros = [comp.start() for comp in self.components.values()]
    await gather(*coros, return_exceptions=not self.failfast)
    duration = time.time() - t
    if e := self._startup_exception:
        self.logger.warning(f'Components started in {duration:.3f} seconds with exception: {type(e).__name__}: {e}')
        self._reraise_startup_exception_in_separate_task()
    else:
        self.logger.info(f'All components started in {duration:.3f} seconds')