code: def get_implicit_deps(self, env, initial_scanner, path_func, kw = {}):
          
          nodes = [self]
          seen = set(nodes)
          dependencies = []
          path_memo = {}
  
          root_node_scanner = self._get_scanner(env, initial_scanner, None, kw)
  
          while nodes:
              node = nodes.pop(0)
  
              scanner = node._get_scanner(env, initial_scanner, root_node_scanner, kw)
              if not scanner:
                  continue
  
              try:
                  path = path_memo[scanner]
              except KeyError:
                  path = path_func(scanner)
                  path_memo[scanner] = path
  
              included_deps = [x for x in node.get_found_includes(env, scanner, path) if x not in seen]
              if included_deps:
                  dependencies.extend(included_deps)
                  seen.update(included_deps)
                  nodes.extend(scanner.recurse_nodes(included_deps))
  
          return dependencies
docs: Return a list of implicit dependencies for this node.
  
          This method exists to handle recursive invocation of the scanner
          on the implicit dependencies returned by the scanner, if the
          scanner's recursive flag says that we should.