def METHOD_NAME(self) -> None:
    # Just add one worker, as this effectively serializes the work
    # This is necessary as we use the account for all resolutions and
    # would otherwise run into nonce problems
    self._task_pool = ThreadPoolExecutor(max_workers=1)
    self._event_processors: dict[TransferDirection, EventProcessor] = {}
    self._event_monitors: dict[ChainId, EventMonitor] = {}
    l1 = self._init_l1_chain()
    chains = self._init_chains()
    mutexes = self._init_fill_mutexes(chains)
    chain_ids = list(chains.keys())
    if len(chain_ids) == 1:
        chain_ids.append(chain_ids[0])
    directions = permutations(chain_ids, 2)
    for direction in set(directions):
        direction = TransferDirection(direction[0], direction[1])
        self._setup_direction(direction, chains, l1, mutexes)