code: def scan(self, scanner, node_list):
          
          env = self.get_build_env()
          path = self.get_build_scanner_path
          kw = self.get_kw()
  
          # TODO(batch):  scan by batches)
          deps = []
  
          for node in node_list:
              node.disambiguate()
              deps.extend(node.get_implicit_deps(env, scanner, path, kw))
  
          deps.extend(self.get_implicit_deps())
  
          for tgt in self.get_all_targets():
              tgt.add_to_implicit(deps)
docs: Scan a list of this Executor's files (targets or sources) for
          implicit dependencies and update all of the targets with them.
          This essentially short-circuits an N*M scan of the sources for
          each individual target, which is a hell of a lot more efficient.