code: def verify(symbol, scanned, ok, output, prefix=None, ignore=None):
      """Recursively verify all child symbols of a given module."""
      if not prefix:
          prefix = symbol.__name__ + "."
      if symbol in scanned:
          return
      scanned.add(symbol)
      for child in dir(symbol):
          if child.startswith("_"):
              continue
          attr = getattr(symbol, child)
          if _ignore(attr, ignore):
              continue
          if (
              inspect.isclass(attr) or inspect.isfunction(attr)
          ) and prefix in _fullname(attr):
              print("Scanning class", attr)
              if _is_annotated(attr):
                  if attr not in scanned:
                      print("OK:", _fullname(attr))
                      ok.add(attr)
              else:
                  output.add(attr)
              scanned.add(attr)
          elif inspect.ismodule(attr):
              print("Scanning module", attr)
              verify(attr, scanned, ok, output, prefix, ignore)
          else:
              print("Not scanning", attr, type(attr))
  
imports: import inspect
  import ray
  from ray.util.annotations import _is_annotated
label_desc: Use image node_id 3 for calling a global function with example usage: verify(symbol, scanned, ok, output, prefix, ignore) without return types