<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def annotated_references(obj):
 """ Return known information about references held by the given object. Returns a mapping from referents to lists of descriptions. Note that there may be more than one edge leading to any particular referent; hence the need for a list. Descriptions are currently strings. """

    references = KeyTransformDict(transform=id, default_factory=list)
    for type_ in type(obj).__mro__:
        if type_ in type_based_references:
            type_based_references[type_](obj, references)

    add_attr(obj, "__dict__", references)
    add_attr(obj, "__class__", references)
    if isinstance(obj, type):
        add_attr(obj, "__mro__", references)

    return references