def METHOD_NAME(self, node: nodes.AssignName) -> None:
    """Check module level assigned names."""
    # The NameChecker from which this Checker originates knows a lot of different
    # versions of variables, i.e. constants, inline variables etc.
    # To simplify we use only `variable` here, as we don't need to apply different
    # rules to different types of variables.
    frame = node.frame()
    if isinstance(frame, nodes.FunctionDef):
        if node.parent in frame.body:
            # Only perform the check if the assignment was done in within the body
            # of the function (and not the function parameter definition
            # (will be handled in visit_functiondef)
            # or within a decorator (handled in visit_call)
            self._check_name("variable", node.name, node)
    elif isinstance(frame, nodes.ClassDef):
        self._check_name("attr", node.name, node)
    else:
        # Possibilities here:
        # - isinstance(node.assign_type(), nodes.Comprehension) == inlinevar
        # - isinstance(frame, nodes.Module) == variable (constant?)
        # - some other kind of assignment missed but still most likely a variable
        self._check_name("variable", node.name, node)