### Godot version

4.0.1-stable_mono_win64

### System information

Windows 10 19044

### Issue description

I'm writing a C# script and trying to use `FindChildren` in my `_Ready` method.

My scene is like this with a root node with the script attached:

![image](https://user-images.githubusercontent.com/8959496/228436785-897dbbf3-eca6-4b3e-940c-17ada4e305e8.png)

Calling `FindChildren("face_*")` is returning an empty array where I instead expect it to return a collection of the 6 nodes under `cube_rounded`.

If I call `FindChild("face_*")` instead it properly returns the `face_front` first node at the top of the tree, so the singular child function is working, but not the collection one.

`FindChildren("Pivot")` does find its immediate child, so it looks like maybe the `recursive` property is being ignored? Explicitly setting it to `true` changes nothing.

### Steps to reproduce

1. Install C# version of Godot
2. Setup a 3D scene of nodes (any type) with hierarchy:

- RigidBody3D (names not important here)
  - Pivot
    - cube_rounded
      - face_front
      - face_left
      - face_right
      - face_back
      - face_top
      - face_bottom

3. Create a new C# script on the root node inheriting from `Node3D`
4. Add `var test = FindChildren("face_*");` in the `_Ready()` method
5. set a breakpoint in Visual Studio and debug the project

See after executing the line that test is an empty array instead of the 6 expected nodes.

Repros in 4.0.0-stable as well (checked for new version and tried on 4.0.1 when I saw it had released, same issue).

### Minimal reproduction project

Minimal project with same structure above of just Node3D objects:

[FindChildrenRepro.zip](https://github.com/godotengine/godot/files/11097185/FindChildrenRepro.zip)

Setup to output in Console:

```
--- Debugging process started ---
Godot Engine v4.0.1.stable.mono.official.cacf49999 - https://godotengine.org
Vulkan API 1.3.205 - Forward Mobile - Using Vulkan Device #0: NVIDIA - NVIDIA GeForce GTX 1080
 
Children Count: 0 expect 6
Can find child instead: True
```

Should see `Children Count: 6 expect 6` instead.

Included the call to `FindChild` which shows the exact same pattern working to find a child there, but the aggregate call with `FindChildren` fails.
ERR_FAIL_COND_MSG(data.inside_tree && !Thread::is_main_thread(), "Removing children from a node inside the SceneTree is only allowed from the main thread. Use call_deferred(\"remove_child\",node).");
	ERR_FAIL_NULL(p_child);
	ERR_FAIL_COND_MSG(data.blocked > 0, "Parent node is busy adding/removing children, `remove_child()` can't be called at this time. Consider using `remove_child.call_deferred(child)` instead.");
	ERR_FAIL_COND(p_child->data.parent != this);
	/**
	 *  Do not change the data.internal_children*cache counters here.
	 *  Because if nodes are re-added, the indices can remain
	 *  greater-than-everything indices and children added remain
	 *  properly ordered.
	 *
	 *  All children indices and counters will be updated next time the
	 *  cache is re-generated.
	 */
	data.blocked++;
	p_child->_set_tree(nullptr);
	
	remove_child_notify(p_child);
	p_child->notification(NOTIFICATION_UNPARENTED);
	data.blocked--;
	data.children_cache_dirty = true;
	bool success = data.children.erase(p_child->data.name);
	ERR_FAIL_COND_MSG(!success, "Children name does not match parent name in hashtable, this is a bug.");
	p_child->data.parent = nullptr;
	p_child->data.index = -1;
	notification(NOTIFICATION_CHILD_ORDER_CHANGED);
	emit_signal(SNAME("child_order_changed"));
	if (data.inside_tree) {
		p_child->_propagate_after_exit_tree();
	}
}