def _infer_decorator_callchain(node):
if not isinstance(node, FunctionDef):<EOL><INDENT>return None<EOL><DEDENT>if not node.parent:<EOL><INDENT>return None<EOL><DEDENT>try:<EOL><INDENT>result = next(node.infer_call_result(node.parent))<EOL><DEDENT>except exceptions.InferenceError:<EOL><INDENT>return None<EOL><DEDENT>if isinstance(result, bases.Instance):<EOL><INDENT>result = result._proxied<EOL><DEDENT>if isinstance(result, ClassDef):<EOL><INDENT>if result.is_subtype_of("<STR_LIT>" % BUILTINS):<EOL><INDENT>return "<STR_LIT>"<EOL><DEDENT>if result.is_subtype_of("<STR_LIT>" % BUILTINS):<EOL><INDENT>return "<STR_LIT>"<EOL><DEDENT><DEDENT>return None<EOL>
Detect decorator call chaining and see if the end result is a
    static or a classmethod.