code: def _GetModuleCodeObjects(module):
    
  
    visit_recorder = _VisitRecorder()
    current = [module]
    code_objects = set()
    while current:
      current = _FindCodeObjectsReferents(module, current, visit_recorder)
      code_objects |= current
  
      # Unfortunately Python code objects don't implement tp_traverse, so this
      # type can't be used with gc.get_referents. The workaround is to get the
      # relevant objects explicitly here.
      current = [code_object.co_consts for code_object in current]
  
    return code_objects
docs: Gets all code objects defined in the specified module.
  
    There are two BFS traversals involved. One in this function and the other in
    _FindCodeObjectsReferents. Only the BFS in _FindCodeObjectsReferents has
    a depth limit. This function does not. The motivation is that this function
    explores code object of the module and they can have any arbitrary nesting
    level. _FindCodeObjectsReferents, on the other hand, traverses through class
    definitions and random references. It's much more expensive and will likely
    go into unrelated objects.
  
    There is also a limit on how many total objects are going to be traversed in
    all. This limit makes sure that if something goes wrong, the lookup doesn't
    hang.
  
    Args:
      module: module to explore.
  
    Returns:
      Set of code objects defined in module.