@staticmethod<EOL><INDENT>def find(decl_matcher, decls, recursive=True):<DEDENT>
where = []<EOL>if isinstance(decls, list):<EOL><INDENT>where.extend(decls)<EOL><DEDENT>else:<EOL><INDENT>where.append(decls)<EOL><DEDENT>if recursive:<EOL><INDENT>where = make_flatten(where)<EOL><DEDENT>return list(filter(decl_matcher, where))<EOL>
Returns a list of declarations that match `decl_matcher` defined
criteria or None

:param decl_matcher: Python callable object, that takes one argument -
    reference to a declaration
:param decls: the search scope, :class:declaration_t object or
    :class:declaration_t objects list t
:param recursive: boolean, if True, the method will run `decl_matcher`
    on the internal declarations too