code: def _fill_in_decorators(ctx: ClassDefContext) -> None:
      for decorator in ctx.cls.decorators:
          # set the ".fullname" attribute of a class decorator
          # that is a MemberExpr.   This causes the logic in
          # semanal.py->apply_class_plugin_hooks to invoke the
          # get_class_decorator_hook for our "registry.map_class()"
          # and "registry.as_declarative_base()" methods.
          # this seems like a bug in mypy that these decorators are otherwise
          # skipped.
  
          if (
              isinstance(decorator, nodes.CallExpr)
              and isinstance(decorator.callee, nodes.MemberExpr)
              and decorator.callee.name == "as_declarative_base"
          ):
              target = decorator.callee
          elif (
              isinstance(decorator, nodes.MemberExpr)
              and decorator.name == "mapped"
          ):
              target = decorator
          else:
              continue
  
          if isinstance(target.expr, NameExpr):
              sym = ctx.api.lookup_qualified(
                  target.expr.name, target, suppress_errors=True
              )
          else:
              continue
  
          if sym and sym.node:
              sym_type = get_proper_type(sym.type)
              if isinstance(sym_type, Instance):
                  target.fullname = (
                      f"{sym_type.type.fullname}.{target.name}"
                  )
              else:
                  # if the registry is in the same file as where the
                  # decorator is used, it might not have semantic
                  # symbols applied and we can't get a fully qualified
                  # name or an inferred type, so we are actually going to
                  # flag an error in this case that they need to annotate
                  # it.  The "registry" is declared just
                  # once (or few times), so they have to just not use
                  # type inference for its assignment in this one case.
                  util.fail(
                      ctx.api,
                      "Class decorator called %s(), but we can't "
                      "tell if it's from an ORM registry.  Please "
                      "annotate the registry assignment, e.g. "
                      "my_registry: registry = registry()"
                      % target.name,
                      sym.node,
                  )
  
imports: from __future__ import annotations
  from typing import Callable
  from typing import List
  from typing import Optional
  from typing import Tuple
  from typing import Type
  from typing import Union
  from mypy import nodes
  from mypy.mro import calculate_mro
  from mypy.mro import MroError
  from mypy.nodes import Block
  from mypy.nodes import ClassDef
  from mypy.nodes import GDEF
  from mypy.nodes import MypyFile
  from mypy.nodes import NameExpr
  from mypy.nodes import SymbolTable
  from mypy.nodes import SymbolTableNode
  from mypy.nodes import TypeInfo
  from mypy.plugin import AttributeContext
  from mypy.plugin import ClassDefContext
  from mypy.plugin import DynamicClassDefContext
  from mypy.plugin import Plugin
  from mypy.plugin import SemanticAnalyzerPluginInterface
  from mypy.types import get_proper_type
  from mypy.types import Instance
  from mypy.types import Type
  from .None import decl_class
  from .None import names
  from .None import util
label_desc: Use image node_id 3 for calling a global function with example usage: _fill_in_decorators(ctx) without return types