'Traverse the tree looking for matches.
@param node: A node to match on.
@type node: L{SchemaObject}
@param list: A list to fill.
@type list: list'

def find(self, node, list):

    if self.matcher.match(node):
        list.append(node)
        self.limit -= 1
        if (self.limit == 0):
            return
    for c in node.rawchildren:
        self.find(c, list)
    return self
