### Godot version

v4.1.beta

### System information

Windows 10

### Issue description

```
        virtual Ref<Script> get_script() const override {
                if (native_info->get_script_func) {
                        GDExtensionObjectPtr script = native_info->get_script_func(instance);
                        return Ref<Script>(reinterpret_cast<Script *>(script));
                }
                return Ref<Script>();
```
Is not creating a functional reference.

GDExtensionObjectPtr is a part of gdextension_interface and is a void pointer to pas data pointers between GDExtesion and Godot Core.

In the images below you are able to see that the extension `reinterpret_cast `works fine.
And that the pointer is passed to core.
However at core `Ref<Script> script_test` stays a NULL value

![image](https://github.com/godotengine/godot/assets/20573784/d4a955d3-4e02-46e2-abf1-ba88cf501e8f)
![image](https://github.com/godotengine/godot/assets/20573784/42a3fbb8-3598-479a-86bc-8b9464624885)
![image](https://github.com/godotengine/godot/assets/20573784/620782c0-192c-4e14-829c-5817ae680378)

I was hoping this would be solved by solving [cpp 1119](https://github.com/godotengine/godot-cpp/issues/1119)



### Steps to reproduce

Create a custom script instance and create it using `internal::gdextension_interface_script_instance_create` and a `GDExtensionScriptInstanceInfo` that only implements `get_property_list_func` and `get_script_func`.

### Minimal reproduction project

Difficult to create a minimal project.
Mostly looking for advice on what to test to find the actual source problem
if (native_info->get_method_list_func) {
			uint32_t mcount;
			const GDExtensionMethodInfo *minfo = native_info->get_method_list_func(instance, &mcount);
			for (uint32_t i = 0; i < mcount; i++) {
				p_list->push_back(MethodInfo(minfo[i]));
			}
			if (native_info->free_method_list_func) {
				native_info->free_method_list_func(instance, minfo);
			}
		}
	}
	virtual bool has_method(const StringName &p_method) const override {
		if (native_info->has_method_func) {
			return native_info->has_method_func(instance, (GDExtensionStringNamePtr)&p_method);
		}
		return false;
	}
	virtual Variant callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) override {
		Variant ret;
		if (native_info->call_func) {
			GDExtensionCallError ce;
			native_info->call_func(instance, (GDExtensionConstStringNamePtr)&p_method, (GDExtensionConstVariantPtr *)p_args, p_argcount, (GDExtensionVariantPtr)&ret, &ce);
			r_error.error = Callable::CallError::Error(ce.error);
			r_error.argument = ce.argument;
			r_error.expected = ce.expected;
		}
		return ret;
	}
	virtual void notification(int p_notification) override {