docs: def visit_FunctionDef(self, node):
          """Implement function/method walker."""
          # [[[cog
          # cog.out("print(pcolor('Enter function visitor', 'magenta'))")
          # ]]]
          # [[[end]]]
          in_class = self._in_class(node)
          decorator_list = [
              dobj.id if hasattr(dobj, "id") else dobj.attr
              for dobj in node.decorator_list
              if hasattr(dobj, "id") or hasattr(dobj, "attr")
          ]
          node.decorator_list = []
          # Callable can be:
          # a) A class property defined via decorated methods
          # b) A class method
          # c) A function
          # Get callable information (name, line number, etc.)
          action = (
              "getter"
              if "property" in decorator_list
              else (
                  "setter"
                  if "setter" in decorator_list
                  else ("deleter" if "deleter" in decorator_list else None)
              )
          )
          element_type = "meth" if in_class else "func"
          element_full_name = self._pop_indent_stack(node, element_type, action=action)
          code_id = (self._fname, node.lineno)
          self._processed_line = node.lineno
          self._callables_db[element_full_name] = {
              "name": element_full_name,
              "type": element_type,
              "code_id": code_id,
              "last_lineno": None,
          }
          self._reverse_callables_db[code_id] = element_full_name
          # [[[cog
          # code = """
          # print(
          #     pcolor(
          #         'Visiting callable {0}  @ {1}'.format(
          #             element_full_name, code_id[1]
          #         ),
          #         'green'
          #     )
          # )
          # print(pcolor('    in_class = {}'.format(in_class), 'yellow'))
          # """
          # cog.out(code)
          # ]]]
          # [[[end]]]
          self.generic_visit(node)