### Godot version

4.0 rc1

### System information

Windows 11, GTX 1080Ti, Vulkan

### Issue description

Automplete can't find any variables and methods on custom classes when the nodes are loaded with `@onready`:

simple_rotate.gd:
```gdscript
extends Node2D
class_name SimpleRotate

@export var shouldRotate : bool = true
```

machine.gd:
```gdscript
@onready var wheel1 : SimpleRotate = $Wheel

func start_motor():
	wheel1.sho... # Doesn't autocomplete, it can't find shouldRotate 
```

If I add another cast like below, autocomplete does work:
machine.gd:
```gdscript
@onready var wheel1 : SimpleRotate = $Wheel as SimpleRotate

func start_motor():
	wheel1.shouldRotate = true # Autocomplete works
```

To make things even weirder, it does work if I make Wheel into a unique name and access it using %:
machine.gd:
```gdscript
@onready var wheel1 : SimpleRotate = $"%Wheel"

func start_motor():
	wheel1.shouldRotate = true # Autocomplete works
```


### Steps to reproduce

- Create a script with a class_name
- Add that script to a node
- Create another script referencing the node with the type of the script
- Try to let automcomplete find any methods or variables on the script with the class_name
- Notice that it fails

### Minimal reproduction project

N/A
.replace(": Array[String]", "")
									 .replace(": Node", "")
									 .replace(": CharFXTransform", "")
									 .replace(":=", "=")
									 .replace(" -> void", "")
									 .replace(" -> bool", "")
									 .replace(" -> int", "")
									 .replace(" -> PortType", "")
									 .replace(" -> String", "")
									 .replace(" -> Object", "");
	}
	processed_template = processed_template.replace("_BASE_", p_base_class_name)
								 .replace("_CLASS_SNAKE_CASE_", p_class_name.to_snake_case().validate_identifier())
								 .replace("_CLASS_", p_class_name.to_pascal_case().validate_identifier())
								 .replace("_TS_", _get_indentation());
	scr->set_source_code(processed_template);
	return scr;
}
Vector<ScriptLanguage::ScriptTemplate> GDScriptLanguage::get_built_in_templates(StringName p_object) {
	Vector<ScriptLanguage::ScriptTemplate> templates;
#ifdef TOOLS_ENABLED
	for (int i = 0; i < TEMPLATES_ARRAY_SIZE; i++) {
		if (TEMPLATES[i].inherit == p_object) {
			templates.append(TEMPLATES[i]);
		}
	}
#endif
	return templates;
}
static void get_function_names_recursively(const GDScriptParser::ClassNode *p_class, const String &p_prefix, HashMap<int, String> &r_funcs) {