@classmethod
def of(cls, obj):
    """
        Get the usage expectation of a given object.

        :param obj:
            The object for which usage expectation is to be set
        :returns:
            Either a previously made object or a fresh instance of
            :class:`UsageExpectation`.
        """
    try:
        return obj.__usage_expectation
    except AttributeError:
        ua = cls(type(obj))
        obj.__usage_expectation = ua
        return ua
