def handle_method(signature_node, module, object_name, cache):
*class_names, attr_name = object_name.split("<STR_LIT:.>")  <EOL>class_ = module<EOL>for class_name in class_names:<EOL><INDENT>class_ = getattr(class_, class_name, None)<EOL>if class_ is None:<EOL><INDENT>return<EOL><DEDENT><DEDENT>attr = getattr(class_, attr_name)<EOL>try:<EOL><INDENT>inspected_attr = cache[class_][attr_name]<EOL>defining_class = inspected_attr.defining_class<EOL><DEDENT>except KeyError:<EOL><INDENT>defining_class = class_<EOL><DEDENT>if defining_class is not class_:<EOL><INDENT>reftarget = "<STR_LIT>".format(defining_class.__module__, defining_class.__name__)<EOL>xref_node = addnodes.pending_xref(<EOL>"<STR_LIT>", refdomain="<STR_LIT>", refexplicit=True, reftype="<STR_LIT:class>", reftarget=reftarget<EOL>)<EOL>name_node = nodes.literal(<EOL>"<STR_LIT>", "<STR_LIT:{}>".format(defining_class.__name__), classes=["<STR_LIT>"]<EOL>)<EOL>xref_node.append(name_node)<EOL>desc_annotation = list(signature_node.traverse(addnodes.desc_annotation))<EOL>index = len(desc_annotation)<EOL>class_annotation = addnodes.desc_addname()<EOL>class_annotation.extend([nodes.Text("<STR_LIT:(>"), xref_node, nodes.Text("<STR_LIT>")])<EOL>class_annotation["<STR_LIT>"] = "<STR_LIT>"<EOL>signature_node.insert(index, class_annotation)<EOL><DEDENT>else:<EOL><INDENT>is_overridden = False<EOL>for class_ in defining_class.__mro__[<NUM_LIT:1>:]:<EOL><INDENT>if hasattr(class_, attr_name):<EOL><INDENT>is_overridden = True<EOL><DEDENT><DEDENT>if is_overridden:<EOL><INDENT>emphasis = nodes.emphasis(<EOL>"<STR_LIT>", "<STR_LIT>", classes=["<STR_LIT>"]<EOL>)<EOL>signature_node.insert(<NUM_LIT:0>, emphasis)<EOL><DEDENT><DEDENT>if getattr(attr, "<STR_LIT>", False):<EOL><INDENT>emphasis = nodes.emphasis("<STR_LIT>", "<STR_LIT>", classes=["<STR_LIT>"])<EOL>signature_node.insert(<NUM_LIT:0>, emphasis)<EOL><DEDENT>
Styles ``automethod`` entries.

Adds ``abstract`` prefix to abstract methods.

Adds link to originating class for inherited methods.