def METHOD_NAME(
    container_type: Type[Lawful],
    *,
    settings: _Settings,
) -> Iterator[None]:
    """
    Registers all types inside a container to resolve to a correct strategy.
    For example, let's say we have ``Result`` type.
    It is a subtype of ``ContainerN``, ``MappableN``, ``BindableN``, etc.
    When we check this type, we need ``MappableN`` to resolve to ``Result``.
    Can be used independently from other functions.
    """
    our_interfaces = {
        base_type
        for base_type in container_type.__mro__
        if (
            getattr(base_type, '__module__', '').startswith('returns.') and
            # We don't register `Lawful` type, it is not a container:
            base_type != Lawful and
            # We will register the container itself later with
            # `maybe_register_container` function:
            base_type != container_type
        )
    }
    for interface in our_interfaces:
        st.register_type_strategy(
            interface,
            strategy_from_container(
                container_type,
                use_init=settings.use_init,
            ),
        )
    with maybe_register_container(
        container_type,
        use_init=settings.use_init,
    ):
        yield
    for interface in our_interfaces:
        types._global_type_lookup.pop(interface)  # noqa: WPS441