### Godot version

4.0 -> latest

**I've tested all this versions:**
4.0, 4.0.1, 4.0.2, 4.0.3, 4.0.4
4.1, 4.1.1
4.2 dev 4

in all this versions problem exists.

### System information

Fedora 38, macOS

### Issue description

I have found a very strange bug while generating translations. The presence of a method modifying the dictionary's content causes the editor to crash during the generation of the translation template.

The mere presence of an uninvoked method causes a crash.

**Edit: The issue occurs not only with singletons. Any script containing a method that modifies any dictionary leads to a crash.**

### Steps to reproduce

**Project -> Project Settings -> Localizations -> Generate POT -> Add (Add your singleton)**

```
extends Node

var session_data = {
	"coins" : 0,
	"power": 0
}

var shop_items = [
	{
		"id": "max_hp",
		"name": tr("First Shop Item"),
		"desc": tr("Great tool."),
	}
]

func add_power(val: int):
	session_data["power"] += val
```

_⚠️ Problem is in add_power method, not in shop_items._


**Project -> Project Settings -> Localizations -> Generate POT -> Generate**

And... Crash.


[Nagranie ekranu z 2023-09-14 13-10-42.webm](https://github.com/godotengine/godot/assets/5132385/6a00805a-34c8-408e-9b00-eb5875301312)



### Minimal reproduction project

[translation_gm_crash.zip](https://github.com/godotengine/godot/files/12104763/translation_gm_crash.zip)

_Just open project and go to: Project -> Project Settings -> Localizations -> Generate POT -> Generate_

Vector<int> indices;
		indices.push_back(0);
		indices.push_back(3);
		indices.push_back(1);
		for (int i = 0; i < indices.size(); i++) {
			if (indices[i] >= p_call->arguments.size()) {
				continue;
			}
			if (_is_constant_string(p_call->arguments[indices[i]])) {
				id_ctx_plural.write[i] = p_call->arguments[indices[i]]->reduced_value;
			} else {
				extract_id_ctx_plural = false;
			}
		}
		if (extract_id_ctx_plural) {
			ids_ctx_plural->push_back(id_ctx_plural);
		}
	} else if (first_arg_patterns.has(function_name)) {
		if (_is_constant_string(p_call->arguments[0])) {
			ids->push_back(p_call->arguments[0]->reduced_value);
		}
	} else if (second_arg_patterns.has(function_name)) {
		if (_is_constant_string(p_call->arguments[1])) {
			ids->push_back(p_call->arguments[1]->reduced_value);
		}
	} else if (function_name == fd_add_filter) {
		
		_extract_fd_constant_strings(p_call->arguments[0]);
	} else if (function_name == fd_set_filter && p_call->arguments[0]->type == GDScriptParser::Node::CALL) {