### Godot version

v4.0.beta17.mono.official [c40020513]

### System information

Window 11, Forward+, GTX 1060

### Issue description

Adding two theme variations in a row result to a  crash.

https://user-images.githubusercontent.com/93253123/217037249-1ce1d56d-beb6-4435-83ad-9f8a07fe0e96.mp4



### Steps to reproduce

1. Create a project.
2. Create a theme.
3. Double click to go in the theme editor.
4. Click on manage items buttons.
5. In the add type field type a name to add a type.
6. type another name to add a second type.
7. Crash.

### Minimal reproduction project

[ThemeVariationCrash.zip](https://github.com/godotengine/godot/files/10665863/ThemeVariationCrash.zip)

} else {
			type_icon = EditorNode::get_singleton()->get_class_icon(E, "NodeDisabled");
		}
		TreeItem *type_node = import_items_tree->create_item(root);
		type_node->set_meta("_can_be_imported", false);
		type_node->set_collapsed(true);
		type_node->set_icon(0, type_icon);
		type_node->set_text(0, type_name);
		type_node->set_cell_mode(IMPORT_ITEM, TreeItem::CELL_MODE_CHECK);
		type_node->set_checked(IMPORT_ITEM, false);
		type_node->set_editable(IMPORT_ITEM, true);
		type_node->set_cell_mode(IMPORT_ITEM_DATA, TreeItem::CELL_MODE_CHECK);
		type_node->set_checked(IMPORT_ITEM_DATA, false);
		type_node->set_editable(IMPORT_ITEM_DATA, true);
		bool is_matching_filter = (filter_text.is_empty() || type_name.findn(filter_text) > -1);
		bool has_filtered_items = false;
		for (int i = 0; i < Theme::DATA_TYPE_MAX; i++) {
			Theme::DataType dt = (Theme::DataType)i;
			names.clear();
			filtered_names.clear();
			base_theme->get_theme_item_list(dt, E, &names);
			bool data_type_has_filtered_items = false;
			for (const StringName &F : names) {
				String item_name = (String)F;
				bool is_item_matching_filter = (item_name.findn(filter_text) > -1);
				if (!filter_text.is_empty() && !is_matching_filter && !is_item_matching_filter) {
					continue;
				}
				
				if (!filter_text.is_empty() && is_item_matching_filter) {