code: def all_children(self, scan=1):
          
          if scan:
              self.scan()
  
          # The return list may contain duplicate Nodes, especially in
          # source trees where there are a lot of repeated #includes
          # of a tangle of .h files.  Profiling shows, however, that
          # eliminating the duplicates with a brute-force approach that
          # preserves the order (that is, something like:
          #
          #       u = []
          #       for n in list:
          #           if n not in u:
          #               u.append(n)"
          #
          # takes more cycles than just letting the underlying methods
          # hand back cached values if a Node's information is requested
          # multiple times.  (Other methods of removing duplicates, like
          # using dictionary keys, lose the order, and the only ordered
          # dictionary patterns I found all ended up using "not in"
          # internally anyway...)
          return list(chain.from_iterable([_f for _f in [self.sources, self.depends, self.implicit] if _f]))
docs: Return a list of all the node's direct children.