Check return type, raise :class:`TypeError` if return type is not
    expected type.

    :param str callable_name: callable name of :func:`~.typechecked` checked
    :param r: returned result
    :param hints: assumed type of given ``r``

def check_return(callable_name: str, r: typing.Any,
                 hints: typing.Mapping[str, type]) -> None:
    """Check return type, raise :class:`TypeError` if return type is not
    expected type.

    :param str callable_name: callable name of :func:`~.typechecked` checked
    :param r: returned result
    :param hints: assumed type of given ``r``

    """
    correct = True
    if 'return' not in hints:
        return
    _, correct = check_type(r, hints['return'])
    if not correct:
        raise TypeError(
            'Incorrect return type `{}`, expected {}. for: {}'.format(
                type(r), hints.get('return'), callable_name
            )
        )