def visit_FunctionDef(self, node):
<EOL>in_class = self._in_class(node)<EOL>decorator_list = [<EOL>dobj.id if hasattr(dobj, "<STR_LIT:id>") else dobj.attr<EOL>for dobj in node.decorator_list<EOL>if hasattr(dobj, "<STR_LIT:id>") or hasattr(dobj, "<STR_LIT>")<EOL>]<EOL>node.decorator_list = []<EOL>action = (<EOL>"<STR_LIT>"<EOL>if "<STR_LIT>" in decorator_list<EOL>else (<EOL>"<STR_LIT>"<EOL>if "<STR_LIT>" in decorator_list<EOL>else ("<STR_LIT>" if "<STR_LIT>" in decorator_list else None)<EOL>)<EOL>)<EOL>element_type = "<STR_LIT>" if in_class else "<STR_LIT>"<EOL>element_full_name = self._pop_indent_stack(node, element_type, action=action)<EOL>code_id = (self._fname, node.lineno)<EOL>self._processed_line = node.lineno<EOL>self._callables_db[element_full_name] = {<EOL>"<STR_LIT:name>": element_full_name,<EOL>"<STR_LIT:type>": element_type,<EOL>"<STR_LIT>": code_id,<EOL>"<STR_LIT>": None,<EOL>}<EOL>self._reverse_callables_db[code_id] = element_full_name<EOL>self.generic_visit(node)<EOL>
Implement function/method walker.