code: def _visit_functiondef(self, cls, node, parent):
          
          self._global_names.append({})
          node, doc = self._get_doc(node)
          newnode = cls(node.name, doc, node.lineno, node.col_offset, parent)
          if node.decorator_list:
              decorators = self.visit_decorators(node, newnode)
          else:
              decorators = None
          if PY3 and node.returns:
              returns = self.visit(node.returns, newnode)
          else:
              returns = None
  
          type_comment_args = type_comment_returns = None
          type_comment_annotation = self.check_function_type_comment(node)
          if type_comment_annotation:
              type_comment_returns, type_comment_args = type_comment_annotation
          newnode.postinit(
              args=self.visit(node.args, newnode),
              body=[self.visit(child, newnode) for child in node.body],
              decorators=decorators,
              returns=returns,
              type_comment_returns=type_comment_returns,
              type_comment_args=type_comment_args,
          )
          self._global_names.pop()
          return newnode
docs: visit an FunctionDef node to become astroid