code: def test_getqualifiedname_efficiency(self):
      foo = object()
  
      # We create a densely connected graph consisting of a relatively small
      # number of modules and hide our symbol in one of them. The path to the
      # symbol is at least 10, and each node has about 10 neighbors. However,
      # by skipping visited modules, the search should take much less.
      ns = {}
      prev_level = []
      for i in range(10):
          current_level = []
          for j in range(10):
              mod_name = "mod_{}_{}".format(i, j)
              mod = types.ModuleType(mod_name)
              current_level.append(mod)
              if i == 9 and j == 9:
                  mod.foo = foo
          if prev_level:
              # All modules at level i refer to all modules at level i+1
              for prev in prev_level:
                  for mod in current_level:
                      prev.__dict__[mod.__name__] = mod
          else:
              for mod in current_level:
                  ns[mod.__name__] = mod
          prev_level = current_level
  
      self.assertIsNone(
          inspect_utils.getqualifiedname(ns, inspect_utils)
      )
      self.assertIsNotNone(
          inspect_utils.getqualifiedname(ns, foo, max_depth=10000000000)
      )
  
imports: import abc
  import collections
  import functools
  import textwrap
  import types
  from tensorflow.python import lib
  from tensorflow.python.autograph.pyct import inspect_utils
  from tensorflow.python.autograph.pyct.testing import basic_definitions
  from tensorflow.python.autograph.pyct.testing import decorators
  from tensorflow.python.framework import constant_op
  from tensorflow.python.platform import test
label_desc: Use image node_id 18 for calling the InspectUtilsTest obj's underlying member method code with example usage: obj.test_getqualifiedname_efficiency() without return types