def find(self, node, resolved=False, push=True):
name = node.name<EOL>parent = self.top().resolved<EOL>if parent is None:<EOL><INDENT>result, ancestry = self.query(name, node)<EOL><DEDENT>else:<EOL><INDENT>result, ancestry = self.getchild(name, parent)<EOL><DEDENT>known = self.known(node)<EOL>if result is None:<EOL><INDENT>return result<EOL><DEDENT>if push:<EOL><INDENT>frame = Frame(result, resolved=known, ancestry=ancestry)<EOL>pushed = self.push(frame)<EOL><DEDENT>if resolved:<EOL><INDENT>result = result.resolve()<EOL><DEDENT>return result<EOL>
@param node: An xml node to be resolved.
@type node: L{sax.element.Element}
@param resolved: A flag indicating that the fully resolved type should be
    returned.
@type resolved: boolean
@param push: Indicates that the resolved type should be
    pushed onto the stack.
@type push: boolean
@return: The found schema I{type}
@rtype: L{xsd.sxbase.SchemaObject}