def _fully_qualified_name(t: type) -> str:
    """Retrieves the fully qualified name of the provided type.

    Args:
        t (type): The type whose fully qualified name shall be retrieved.

    Returns:
        str: The fully qualified name of ``t``.

    Raises:
        TypeError: If ``t`` is not an instance of ``type``.
    """
    if not isinstance(t, type):
        raise TypeError(
                "The parameter <t> has to be a type, but is an instance of {}!".format(_fully_qualified_name(type(t)))
        )

    prefix = ""
    if hasattr(t, "__module__"):
        prefix = t.__module__ + "."

    return prefix + t.__name__