code: def find_children(self, pattern=r".*", flags=0, candidates=None):
          
  
          if candidates is None:
              candidates = []
  
          for child in self.__children:
              if re.search(pattern, child.name, flags):
                  child not in candidates and candidates.append(child)
              child.find_children(pattern, flags, candidates)
          return candidates
docs: Finds the children matching the given patten.
  
          Usage::
  
              >>> node_a = AbstractCompositeNode("MyNodeA")
              >>> node_b = AbstractCompositeNode("MyNodeB", node_a)
              >>> node_c = AbstractCompositeNode("MyNodeC", node_a)
              >>> node_a.find_children("c", re.IGNORECASE)
              [<AbstractCompositeNode object at 0x101078040>]
  
          :param pattern: Matching pattern.
          :type pattern: unicode
          :param flags: Matching regex flags.
          :type flags: int
          :param candidates: Matching candidates.
          :type candidates: list
          :return: Matching children.
          :rtype: list