### 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_

const GDScriptParser::CallNode *call_node = static_cast<const GDScriptParser::CallNode *>(p_call->arguments[0]);
		if (call_node->arguments[0]->type == GDScriptParser::Node::ARRAY) {
			const GDScriptParser::ArrayNode *array_node = static_cast<const GDScriptParser::ArrayNode *>(call_node->arguments[0]);
			for (int i = 0; i < array_node->elements.size(); i++) {
				_extract_fd_constant_strings(array_node->elements[i]);
			}
		}
	}
	if (p_call->callee && p_call->callee->type == GDScriptParser::Node::SUBSCRIPT) {
		const GDScriptParser::SubscriptNode *subscript_node = static_cast<const GDScriptParser::SubscriptNode *>(p_call->callee);
		if (subscript_node->base && subscript_node->base->type == GDScriptParser::Node::CALL) {
			const GDScriptParser::CallNode *call_node = static_cast<const GDScriptParser::CallNode *>(subscript_node->base);
			_extract_from_call(call_node);
		}
	}
}
void GDScriptEditorTranslationParserPlugin::_extract_fd_constant_strings(const GDScriptParser::ExpressionNode *p_expression) {
	
	if (_is_constant_string(p_expression)) {
		String arg_val = p_expression->reduced_value;
		PackedStringArray arr = arg_val.split(";", true);
		if (arr.size() != 2) {
			ERR_PRINT("Argument for setting FileDialog has bad format.");
			return;
		}
		ids->push_back(arr[1].strip_edges());
	}
}
GDScriptEditorTranslationParserPlugin::GDScriptEditorTranslationParserPlugin() {