def attach_identifier_attributes(self, ast):  # type: (Dict[str, Any]) -> Dict[str, Any]
        """ Attach 5 flags to the AST.

        - is dynamic: True if the identifier name can be determined by static analysis.
        - is member: True if the identifier is a member of a subscription/dot/slice node.
        - is declaring: True if the identifier is used to declare.
        - is autoload: True if the identifier is declared with autoload.
        - is function: True if the identifier is a function. Vim distinguish
            between function identifiers and variable identifiers.
        - is declarative parameter: True if the identifier is a declarative
            parameter. For example, the identifier "param" in Func(param) is a
            declarative parameter.
        - is on string expression context: True if the variable is on the
            string expression context. The string expression context is the
            string content on the 2nd argument of the map or filter function.
        - is lambda argument: True if the identifier is a lambda argument.
        """
        redir_assignment_parser = RedirAssignmentParser()
        ast_with_parsed_redir = redir_assignment_parser.process(ast)

        map_and_filter_parser = CallNodeParser()
        ast_with_parse_map_and_filter_and_redir = \
            map_and_filter_parser.process(ast_with_parsed_redir)

        traverse(
            ast_with_parse_map_and_filter_and_redir,
            on_enter=lambda node: self._enter_handler(
                node,
                is_on_lambda_str=None,
                is_on_lambda_body=None,
            )
        )
        return ast
Attach 5 flags to the AST.

        - is dynamic: True if the identifier name can be determined by static analysis.
        - is member: True if the identifier is a member of a subscription/dot/slice node.
        - is declaring: True if the identifier is used to declare.
        - is autoload: True if the identifier is declared with autoload.
        - is function: True if the identifier is a function. Vim distinguish
            between function identifiers and variable identifiers.
        - is declarative parameter: True if the identifier is a declarative
            parameter. For example, the identifier "param" in Func(param) is a
            declarative parameter.
        - is on string expression context: True if the variable is on the
            string expression context. The string expression context is the
            string content on the 2nd argument of the map or filter function.
        - is lambda argument: True if the identifier is a lambda argument.