code: def expand_crackers(self, node: Node) -> None:
      if node.depth >= self.max_cipher_depth:
          return
  
      res = node.level.result.value
      additional_work = []
  
      for i in self.get_crackers_for(type(res)):
          inst = self._config()(i)
          info = inst.getInfo(res)
          if info.success_likelihood < self.p_threshold:
              continue
          additional_work.append(
              Edge(
                  source=node,
                  route=inst,
                  score=calculate_score(inst.getInfo(res)),
              )
          )
  
      priority = min(node.depth, self.priority_cap)
      if self.invert_priority:
          priority = -priority
  
      self.work.add_work(priority, additional_work)
  
imports: import bisect
  import distutils
  import math
  from copy import copy
  from dataclasses import dataclass
  from functools import lru_cache
  from typing import Any, Dict, Generic, List, Optional, TypeVar, Union
  import logging
  from rich.logging import RichHandler
  from ciphey.iface import Checker, Config, Cracker, CrackInfo, CrackResult, Decoder, ParamSpec, Searcher, SearchLevel, SearchResult, T, registry
label_desc: Use image node_id 3 for calling the AuSearch obj's underlying member method code with example usage: obj.expand_crackers(node) without return types