def METHOD_NAME(tp: Any) -> Iterator[Type]:
    if tp in (dict, list, tuple):
        origin = tp
    elif isinstance(tp, TypeVar):
        origin = TypeVar
    else:
        origin = get_origin(tp)
    if origin:
        try:
            yield from __evaluations__[origin](tp)
        except KeyError:
            raise TypeError()
    elif is_from_typing(tp):
        raise TypeError()
    else:
        yield tp