Returns the actual value for the given object, if it is a late-resolving object type.
    If not, the value itself is simply returned.

    :param value: Lazy object, registered type in :attr:`type_registry`, or a simple value. In the
     latter case, the value is returned as-is.
    :type value: str | unicode | int | AbstractLazyObject | unknown
    :return: Resolved value.

def resolve_value(value, types=type_registry):
    """
    Returns the actual value for the given object, if it is a late-resolving object type.
    If not, the value itself is simply returned.

    :param value: Lazy object, registered type in :attr:`type_registry`, or a simple value. In the
     latter case, the value is returned as-is.
    :type value: str | unicode | int | AbstractLazyObject | unknown
    :return: Resolved value.
    """
    if value is None:
        return None
    elif isinstance(value, lazy_type):
        return value.get()
    elif types:
        resolve_func = types.get(expand_type_name(type(value)))
        if resolve_func:
            return resolve_func(value)
    return value