Esme Povirk (@madewokherd) commented about dlls/uiautomationcore/uia_client.c:
hr = IUnknown_QueryInterface(V_UNKNOWN(&v), &IID_IRawElementProviderSimple, (void **)&elprov);
VariantClear(&v); if (FAILED(hr)) goto exit; hr = UiaNodeFromProvider(elprov, &node);
IRawElementProviderSimple_Release(elprov); if (SUCCEEDED(hr)) {
get_variant_for_node(node, ret_val);
VariantClear(&v);
IRawElementProviderSimple_Release(elprov);
if (prov->is_nested_node_elprov)
I don't feel like this name is any more intuitive. Maybe something like client_is_remote?
Fundamentally, I think my confusion stems from not having enough terms to describe all the possible kinds of nodes. We have nodes where the element provider is in the same thread that uses it, client nodes that wrap an element provider on another thread, and nodes being wrapped by a client node. I'm not sure which of those three categories is a "nested" node, or what the others are called.