def METHOD_NAME(kind: Instance) -> Type:
    """Recursively process all type arguments in a kind."""
    if not kind.args:
        return kind
    real_type = get_proper_type(kind.args[0])
    if isinstance(real_type, TypeVarType):
        return erase_to_bound(real_type)
    elif isinstance(real_type, Instance):
        return real_type.copy_modified(
            args=kind.args[1:len(real_type.args) + 1],
        )
    # This should never happen, probably can be an exception:
    return AnyType(TypeOfAny.implementation_artifact)