diff --git a/.gitignore b/.gitignore
index 92b1c906..462fe6d0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -84,3 +84,6 @@ compile_commands.json
 
 # ccls
 .ccls-cache
+
+# Generated source files
+extension/src/gen/*
diff --git a/SConstruct b/SConstruct
index bcb477a8..80b2b136 100644
--- a/SConstruct
+++ b/SConstruct
@@ -45,6 +45,10 @@ env.Append(CPPPATH=[[env.Dir(p) for p in paths]])
 sources = env.GlobRecursive("*.cpp", paths)
 env.extension_sources = sources
 
+if env["target"] in ["editor", "template_debug"]:
+    doc_data = godot_env.GodotCPPDocData("extension/src/gen/doc_data.gen.cpp", source=Glob("extension/doc_classes/*.xml"))
+    sources.append(doc_data)
+
 # Remove unassociated intermediate binary files if allowed, usually the result of a renamed or deleted source file
 if env["intermediate_delete"]:
     from glob import glob
diff --git a/extension/doc_classes/AssetManager.xml b/extension/doc_classes/AssetManager.xml
new file mode 100644
index 00000000..3b7f9838
--- /dev/null
+++ b/extension/doc_classes/AssetManager.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="AssetManager" inherits="Object" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="get_font">
+			<return type="FontFile" />
+			<param index="0" name="name" type="StringName" />
+			<description>
+			</description>
+		</method>
+		<method name="get_image">
+			<return type="Image" />
+			<param index="0" name="path" type="StringName" />
+			<param index="1" name="load_flags" type="int" enum="AssetManager.LoadFlags" default="1" />
+			<description>
+			</description>
+		</method>
+		<method name="get_texture">
+			<return type="ImageTexture" />
+			<param index="0" name="path" type="StringName" />
+			<param index="1" name="load_flags" type="int" enum="AssetManager.LoadFlags" default="2" />
+			<description>
+			</description>
+		</method>
+	</methods>
+	<constants>
+		<constant name="LOAD_FLAG_NONE" value="0" enum="LoadFlags">
+		</constant>
+		<constant name="LOAD_FLAG_CACHE_IMAGE" value="1" enum="LoadFlags">
+		</constant>
+		<constant name="LOAD_FLAG_CACHE_TEXTURE" value="2" enum="LoadFlags">
+		</constant>
+		<constant name="LOAD_FLAG_FLIP_Y" value="4" enum="LoadFlags">
+		</constant>
+	</constants>
+</class>
diff --git a/extension/doc_classes/Checksum.xml b/extension/doc_classes/Checksum.xml
new file mode 100644
index 00000000..733c16ad
--- /dev/null
+++ b/extension/doc_classes/Checksum.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="Checksum" inherits="Object" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="get_checksum_text">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+	</methods>
+</class>
diff --git a/extension/doc_classes/GFXButtonStateHavingTexture.xml b/extension/doc_classes/GFXButtonStateHavingTexture.xml
new file mode 100644
index 00000000..6bda28b8
--- /dev/null
+++ b/extension/doc_classes/GFXButtonStateHavingTexture.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="GFXButtonStateHavingTexture" inherits="GFXCorneredTileSupportingTexture" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="get_button_state_texture">
+			<return type="GFXButtonStateTexture" />
+			<param index="0" name="button_state" type="int" enum="GFXButtonStateTexture.ButtonState" />
+			<description>
+			</description>
+		</method>
+	</methods>
+</class>
diff --git a/extension/doc_classes/GFXButtonStateTexture.xml b/extension/doc_classes/GFXButtonStateTexture.xml
new file mode 100644
index 00000000..f0af323c
--- /dev/null
+++ b/extension/doc_classes/GFXButtonStateTexture.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="GFXButtonStateTexture" inherits="GFXCorneredTileSupportingTexture" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="button_state_to_name" qualifiers="static">
+			<return type="StringName" />
+			<param index="0" name="button_state" type="int" enum="GFXButtonStateTexture.ButtonState" />
+			<description>
+			</description>
+		</method>
+		<method name="generate_state_image">
+			<return type="int" enum="Error" />
+			<param index="0" name="source_image" type="Image" />
+			<param index="1" name="_unnamed_arg1" type="Rect2i" />
+			<param index="2" name="_unnamed_arg2" type="Vector2i" />
+			<description>
+			</description>
+		</method>
+		<method name="get_button_state" qualifiers="const">
+			<return type="int" enum="GFXButtonStateTexture.ButtonState" />
+			<description>
+			</description>
+		</method>
+		<method name="get_button_state_name" qualifiers="const">
+			<return type="StringName" />
+			<description>
+			</description>
+		</method>
+		<method name="set_button_state">
+			<return type="void" />
+			<param index="0" name="new_button_state" type="int" enum="GFXButtonStateTexture.ButtonState" />
+			<description>
+			</description>
+		</method>
+	</methods>
+	<constants>
+		<constant name="HOVER" value="0" enum="ButtonState">
+		</constant>
+		<constant name="PRESSED" value="1" enum="ButtonState">
+		</constant>
+		<constant name="DISABLED" value="2" enum="ButtonState">
+		</constant>
+		<constant name="SELECTED" value="3" enum="ButtonState">
+		</constant>
+	</constants>
+</class>
diff --git a/extension/doc_classes/GFXCorneredTileSupportingTexture.xml b/extension/doc_classes/GFXCorneredTileSupportingTexture.xml
new file mode 100644
index 00000000..b345501c
--- /dev/null
+++ b/extension/doc_classes/GFXCorneredTileSupportingTexture.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="GFXCorneredTileSupportingTexture" inherits="AtlasTexture" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="draw_rect_cornered" qualifiers="const">
+			<return type="void" />
+			<param index="0" name="to_canvas_item" type="RID" />
+			<param index="1" name="rect" type="Rect2" />
+			<description>
+			</description>
+		</method>
+		<method name="get_cornered_tile_border_size" qualifiers="const">
+			<return type="Vector2i" />
+			<description>
+			</description>
+		</method>
+		<method name="is_cornered_tile_texture" qualifiers="const">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
+	</methods>
+</class>
diff --git a/extension/doc_classes/GFXMaskedFlagTexture.xml b/extension/doc_classes/GFXMaskedFlagTexture.xml
new file mode 100644
index 00000000..3e12e920
--- /dev/null
+++ b/extension/doc_classes/GFXMaskedFlagTexture.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="GFXMaskedFlagTexture" inherits="GFXButtonStateHavingTexture" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="clear">
+			<return type="void" />
+			<description>
+			</description>
+		</method>
+		<method name="get_flag_country_name" qualifiers="const">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_flag_type" qualifiers="const">
+			<return type="StringName" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gfx_masked_flag_name" qualifiers="const">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="set_flag_country_name">
+			<return type="int" enum="Error" />
+			<param index="0" name="new_flag_country_name" type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="set_flag_country_name_and_type">
+			<return type="int" enum="Error" />
+			<param index="0" name="new_flag_country_name" type="String" />
+			<param index="1" name="new_flag_type" type="StringName" />
+			<description>
+			</description>
+		</method>
+		<method name="set_gfx_masked_flag_name">
+			<return type="int" enum="Error" />
+			<param index="0" name="gfx_masked_flag_name" type="String" />
+			<description>
+			</description>
+		</method>
+	</methods>
+</class>
diff --git a/extension/doc_classes/GFXPieChartTexture.xml b/extension/doc_classes/GFXPieChartTexture.xml
new file mode 100644
index 00000000..70da8867
--- /dev/null
+++ b/extension/doc_classes/GFXPieChartTexture.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="GFXPieChartTexture" inherits="ImageTexture" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="clear">
+			<return type="void" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gfx_pie_chart_name" qualifiers="const">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="set_gfx_pie_chart_name">
+			<return type="int" enum="Error" />
+			<param index="0" name="gfx_pie_chart_name" type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="set_slices_array">
+			<return type="int" enum="Error" />
+			<param index="0" name="new_slices" type="Dictionary[]" />
+			<description>
+			</description>
+		</method>
+	</methods>
+</class>
diff --git a/extension/doc_classes/GFXSpriteTexture.xml b/extension/doc_classes/GFXSpriteTexture.xml
new file mode 100644
index 00000000..4c2b8e66
--- /dev/null
+++ b/extension/doc_classes/GFXSpriteTexture.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="GFXSpriteTexture" inherits="GFXButtonStateHavingTexture" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="clear">
+			<return type="void" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gfx_texture_sprite_name" qualifiers="const">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_icon_count" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="set_gfx_texture_sprite_name">
+			<return type="int" enum="Error" />
+			<param index="0" name="gfx_texture_sprite_name" type="String" />
+			<param index="1" name="icon" type="int" default="0" />
+			<description>
+			</description>
+		</method>
+		<method name="set_icon_index">
+			<return type="int" enum="Error" />
+			<param index="0" name="new_icon_index" type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="set_toggled_icon">
+			<return type="int" enum="Error" />
+			<param index="0" name="toggle" type="bool" />
+			<description>
+			</description>
+		</method>
+	</methods>
+	<members>
+		<member name="icon_index" type="int" setter="set_icon_index" getter="get_icon_index" default="0">
+		</member>
+	</members>
+</class>
diff --git a/extension/doc_classes/GUIButton.xml b/extension/doc_classes/GUIButton.xml
new file mode 100644
index 00000000..eae99b7c
--- /dev/null
+++ b/extension/doc_classes/GUIButton.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="GUIButton" inherits="Button" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="clear_tooltip">
+			<return type="void" />
+			<description>
+			</description>
+		</method>
+		<method name="set_tooltip_string_and_substitution_dict">
+			<return type="void" />
+			<param index="0" name="new_tooltip_string" type="String" />
+			<param index="1" name="new_tooltip_substitution_dict" type="Dictionary" />
+			<description>
+			</description>
+		</method>
+	</methods>
+	<members>
+		<member name="tooltip_active" type="bool" setter="" getter="is_tooltip_active" default="false">
+		</member>
+		<member name="tooltip_string" type="String" setter="set_tooltip_string" getter="get_tooltip_string" default="&quot;&quot;">
+		</member>
+		<member name="tooltip_substitution_dict" type="Dictionary" setter="set_tooltip_substitution_dict" getter="get_tooltip_substitution_dict" default="{}">
+		</member>
+	</members>
+</class>
diff --git a/extension/doc_classes/GUIIcon.xml b/extension/doc_classes/GUIIcon.xml
new file mode 100644
index 00000000..2aa352d7
--- /dev/null
+++ b/extension/doc_classes/GUIIcon.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="GUIIcon" inherits="GUITextureRect" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="get_gfx_sprite_texture" qualifiers="const">
+			<return type="GFXSpriteTexture" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gfx_texture_sprite_name" qualifiers="const">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_icon_index" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="set_gfx_texture_sprite_name">
+			<return type="int" enum="Error" />
+			<param index="0" name="gfx_texture_sprite_name" type="String" />
+			<param index="1" name="icon" type="int" default="0" />
+			<description>
+			</description>
+		</method>
+		<method name="set_icon_index" qualifiers="const">
+			<return type="int" enum="Error" />
+			<param index="0" name="icon_index" type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="set_toggled_icon" qualifiers="const">
+			<return type="int" enum="Error" />
+			<param index="0" name="toggled" type="bool" />
+			<description>
+			</description>
+		</method>
+	</methods>
+</class>
diff --git a/extension/doc_classes/GUIIconButton.xml b/extension/doc_classes/GUIIconButton.xml
new file mode 100644
index 00000000..53fa2bf5
--- /dev/null
+++ b/extension/doc_classes/GUIIconButton.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="GUIIconButton" inherits="GUIButton" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="get_gfx_sprite_texture" qualifiers="const">
+			<return type="GFXSpriteTexture" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gfx_texture_sprite_name" qualifiers="const">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_icon_index" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="set_gfx_texture_sprite_name">
+			<return type="int" enum="Error" />
+			<param index="0" name="gfx_texture_sprite_name" type="String" />
+			<param index="1" name="icon" type="int" default="0" />
+			<description>
+			</description>
+		</method>
+		<method name="set_icon_index" qualifiers="const">
+			<return type="int" enum="Error" />
+			<param index="0" name="icon_index" type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="set_toggled_icon" qualifiers="const">
+			<return type="int" enum="Error" />
+			<param index="0" name="toggled" type="bool" />
+			<description>
+			</description>
+		</method>
+	</methods>
+</class>
diff --git a/extension/doc_classes/GUILabel.xml b/extension/doc_classes/GUILabel.xml
new file mode 100644
index 00000000..62386315
--- /dev/null
+++ b/extension/doc_classes/GUILabel.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="GUILabel" inherits="Control" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="add_substitution">
+			<return type="void" />
+			<param index="0" name="key" type="String" />
+			<param index="1" name="value" type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="clear">
+			<return type="void" />
+			<description>
+			</description>
+		</method>
+		<method name="clear_substitutions">
+			<return type="void" />
+			<description>
+			</description>
+		</method>
+		<method name="clear_tooltip">
+			<return type="void" />
+			<description>
+			</description>
+		</method>
+		<method name="force_update_lines">
+			<return type="void" />
+			<description>
+			</description>
+		</method>
+		<method name="get_base_max_size" qualifiers="const">
+			<return type="Vector2" />
+			<description>
+			</description>
+		</method>
+		<method name="get_colour_marker" qualifiers="static">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_currency_marker" qualifiers="static">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_flag_marker" qualifiers="static">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_text_name" qualifiers="const">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_substitution_marker" qualifiers="static">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="set_background_texture">
+			<return type="void" />
+			<param index="0" name="new_texture" type="Texture2D" />
+			<description>
+			</description>
+		</method>
+		<method name="set_font_file">
+			<return type="int" enum="Error" />
+			<param index="0" name="new_font_file" type="FontFile" />
+			<description>
+			</description>
+		</method>
+		<method name="set_font_size">
+			<return type="int" enum="Error" />
+			<param index="0" name="new_font_size" type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="set_tooltip_string_and_substitution_dict">
+			<return type="void" />
+			<param index="0" name="new_tooltip_string" type="String" />
+			<param index="1" name="new_tooltip_substitution_dict" type="Dictionary" />
+			<description>
+			</description>
+		</method>
+	</methods>
+	<members>
+		<member name="adjusted_rect" type="Rect2" setter="" getter="get_adjusted_rect" default="Rect2(0, 0, 0, 0)">
+		</member>
+		<member name="auto_adjust_to_content_size" type="bool" setter="set_auto_adjust_to_content_size" getter="will_auto_adjust_to_content_size" default="false">
+		</member>
+		<member name="background" type="StyleBoxTexture" setter="set_background_stylebox" getter="get_background">
+		</member>
+		<member name="border_size" type="Vector2" setter="set_border_size" getter="get_border_size" default="Vector2(0, 0)">
+		</member>
+		<member name="currency_texture" type="GFXSpriteTexture" setter="" getter="get_currency_texture">
+		</member>
+		<member name="default_colour" type="Color" setter="set_default_colour" getter="get_default_colour" default="Color(0, 0, 0, 1)">
+		</member>
+		<member name="font" type="Font" setter="set_font" getter="get_font">
+		</member>
+		<member name="font_size" type="int" setter="set_font_size" getter="get_font_size" default="16">
+		</member>
+		<member name="horizontal_alignment" type="int" setter="set_horizontal_alignment" getter="get_horizontal_alignment" enum="HorizontalAlignment" default="0">
+		</member>
+		<member name="max_size" type="Vector2" setter="set_max_size" getter="get_max_size" default="Vector2(0, 0)">
+		</member>
+		<member name="substitution_dict" type="Dictionary" setter="set_substitution_dict" getter="get_substitution_dict" default="{}">
+		</member>
+		<member name="text" type="String" setter="set_text" getter="get_text" default="&quot;&quot;">
+		</member>
+		<member name="tooltip_active" type="bool" setter="" getter="is_tooltip_active" default="false">
+		</member>
+		<member name="tooltip_string" type="String" setter="set_tooltip_string" getter="get_tooltip_string" default="&quot;&quot;">
+		</member>
+		<member name="tooltip_substitution_dict" type="Dictionary" setter="set_tooltip_substitution_dict" getter="get_tooltip_substitution_dict" default="{}">
+		</member>
+	</members>
+</class>
diff --git a/extension/doc_classes/GUIListBox.xml b/extension/doc_classes/GUIListBox.xml
new file mode 100644
index 00000000..608eb3f5
--- /dev/null
+++ b/extension/doc_classes/GUIListBox.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="GUIListBox" inherits="Container" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="clear">
+			<return type="void" />
+			<description>
+			</description>
+		</method>
+		<method name="clear_children">
+			<return type="void" />
+			<param index="0" name="remaining_child_count" type="int" default="0" />
+			<description>
+			</description>
+		</method>
+		<method name="get_fixed_item_count" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_fixed_item_height" qualifiers="const">
+			<return type="float" />
+			<description>
+			</description>
+		</method>
+		<method name="get_fixed_visible_items" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_listbox_name" qualifiers="const">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_max_scroll_index" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_scroll_index" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_scrollbar" qualifiers="const">
+			<return type="GUIScrollbar" />
+			<description>
+			</description>
+		</method>
+		<method name="is_fixed" qualifiers="const">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
+		<method name="set_fixed">
+			<return type="int" enum="Error" />
+			<param index="0" name="item_count" type="int" />
+			<param index="1" name="item_height" type="float" />
+			<param index="2" name="signal" type="bool" default="true" />
+			<description>
+			</description>
+		</method>
+		<method name="set_scroll_index">
+			<return type="void" />
+			<param index="0" name="new_scroll_index" type="int" />
+			<param index="1" name="signal" type="bool" default="true" />
+			<description>
+			</description>
+		</method>
+		<method name="unset_fixed">
+			<return type="int" enum="Error" />
+			<param index="0" name="signal" type="bool" default="true" />
+			<description>
+			</description>
+		</method>
+	</methods>
+	<signals>
+		<signal name="scroll_index_changed">
+			<param index="0" name="value" type="int" />
+			<description>
+			</description>
+		</signal>
+	</signals>
+</class>
diff --git a/extension/doc_classes/GUIMaskedFlag.xml b/extension/doc_classes/GUIMaskedFlag.xml
new file mode 100644
index 00000000..a2e5fa80
--- /dev/null
+++ b/extension/doc_classes/GUIMaskedFlag.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="GUIMaskedFlag" inherits="GUITextureRect" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="get_flag_country_name" qualifiers="const">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_flag_type" qualifiers="const">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gfx_masked_flag_name" qualifiers="const">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gfx_masked_flag_texture" qualifiers="const">
+			<return type="GFXMaskedFlagTexture" />
+			<description>
+			</description>
+		</method>
+		<method name="set_flag_country_name" qualifiers="const">
+			<return type="int" enum="Error" />
+			<param index="0" name="flag_country_name" type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="set_flag_country_name_and_type" qualifiers="const">
+			<return type="int" enum="Error" />
+			<param index="0" name="flag_country_name" type="String" />
+			<param index="1" name="flag_type" type="StringName" />
+			<description>
+			</description>
+		</method>
+		<method name="set_gfx_masked_flag_name">
+			<return type="int" enum="Error" />
+			<param index="0" name="gfx_masked_flag_name" type="String" />
+			<description>
+			</description>
+		</method>
+	</methods>
+</class>
diff --git a/extension/doc_classes/GUIMaskedFlagButton.xml b/extension/doc_classes/GUIMaskedFlagButton.xml
new file mode 100644
index 00000000..7d92742d
--- /dev/null
+++ b/extension/doc_classes/GUIMaskedFlagButton.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="GUIMaskedFlagButton" inherits="GUIButton" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="get_flag_country_name" qualifiers="const">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_flag_type" qualifiers="const">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gfx_masked_flag_name" qualifiers="const">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gfx_masked_flag_texture" qualifiers="const">
+			<return type="GFXMaskedFlagTexture" />
+			<description>
+			</description>
+		</method>
+		<method name="set_flag_country_name" qualifiers="const">
+			<return type="int" enum="Error" />
+			<param index="0" name="flag_country_name" type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="set_flag_country_name_and_type" qualifiers="const">
+			<return type="int" enum="Error" />
+			<param index="0" name="flag_country_name" type="String" />
+			<param index="1" name="flag_type" type="StringName" />
+			<description>
+			</description>
+		</method>
+		<method name="set_gfx_masked_flag_name">
+			<return type="int" enum="Error" />
+			<param index="0" name="gfx_masked_flag_name" type="String" />
+			<description>
+			</description>
+		</method>
+	</methods>
+</class>
diff --git a/extension/doc_classes/GUINode.xml b/extension/doc_classes/GUINode.xml
new file mode 100644
index 00000000..5d3e0ea3
--- /dev/null
+++ b/extension/doc_classes/GUINode.xml
@@ -0,0 +1,264 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="GUINode" inherits="Control" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="add_gui_element">
+			<return type="int" enum="Error" />
+			<param index="0" name="gui_scene" type="String" />
+			<param index="1" name="gui_element" type="String" />
+			<param index="2" name="name" type="String" default="&quot;&quot;" />
+			<description>
+			</description>
+		</method>
+		<method name="float_to_string_dp" qualifiers="static">
+			<return type="String" />
+			<param index="0" name="val" type="float" />
+			<param index="1" name="decimal_places" type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="float_to_string_dp_dynamic" qualifiers="static">
+			<return type="String" />
+			<param index="0" name="val" type="float" />
+			<description>
+			</description>
+		</method>
+		<method name="float_to_string_suffixed" qualifiers="static">
+			<return type="String" />
+			<param index="0" name="val" type="float" />
+			<description>
+			</description>
+		</method>
+		<method name="format_province_name" qualifiers="static">
+			<return type="String" />
+			<param index="0" name="province_identifier" type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="generate_gui_element" qualifiers="static">
+			<return type="Control" />
+			<param index="0" name="gui_scene" type="String" />
+			<param index="1" name="gui_element" type="String" />
+			<param index="2" name="name" type="String" default="&quot;&quot;" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_icon_button_from_node" qualifiers="static">
+			<return type="GUIIconButton" />
+			<param index="0" name="node" type="Node" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_icon_button_from_nodepath" qualifiers="const">
+			<return type="GUIIconButton" />
+			<param index="0" name="path" type="NodePath" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_icon_from_node" qualifiers="static">
+			<return type="GUIIcon" />
+			<param index="0" name="node" type="Node" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_icon_from_nodepath" qualifiers="const">
+			<return type="GUIIcon" />
+			<param index="0" name="path" type="NodePath" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_label_from_node" qualifiers="static">
+			<return type="GUILabel" />
+			<param index="0" name="node" type="Node" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_label_from_nodepath" qualifiers="const">
+			<return type="GUILabel" />
+			<param index="0" name="path" type="NodePath" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_listbox_from_node" qualifiers="static">
+			<return type="GUIListBox" />
+			<param index="0" name="node" type="Node" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_listbox_from_nodepath" qualifiers="const">
+			<return type="GUIListBox" />
+			<param index="0" name="path" type="NodePath" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_masked_flag_button_from_node" qualifiers="static">
+			<return type="GUIMaskedFlagButton" />
+			<param index="0" name="node" type="Node" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_masked_flag_button_from_nodepath" qualifiers="const">
+			<return type="GUIMaskedFlagButton" />
+			<param index="0" name="path" type="NodePath" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_masked_flag_from_node" qualifiers="static">
+			<return type="GUIMaskedFlag" />
+			<param index="0" name="node" type="Node" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_masked_flag_from_nodepath" qualifiers="const">
+			<return type="GUIMaskedFlag" />
+			<param index="0" name="path" type="NodePath" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_overlapping_elements_box_from_node" qualifiers="static">
+			<return type="GUIOverlappingElementsBox" />
+			<param index="0" name="node" type="Node" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_overlapping_elements_box_from_nodepath" qualifiers="const">
+			<return type="GUIOverlappingElementsBox" />
+			<param index="0" name="path" type="NodePath" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_pie_chart_from_node" qualifiers="static">
+			<return type="GUIPieChart" />
+			<param index="0" name="node" type="Node" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_pie_chart_from_nodepath" qualifiers="const">
+			<return type="GUIPieChart" />
+			<param index="0" name="path" type="NodePath" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_position" qualifiers="static">
+			<return type="Vector2" />
+			<param index="0" name="gui_scene" type="String" />
+			<param index="1" name="gui_position" type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_progress_bar_from_node" qualifiers="static">
+			<return type="GUIProgressBar" />
+			<param index="0" name="node" type="Node" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_progress_bar_from_nodepath" qualifiers="const">
+			<return type="GUIProgressBar" />
+			<param index="0" name="path" type="NodePath" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_scrollbar_from_node" qualifiers="static">
+			<return type="GUIScrollbar" />
+			<param index="0" name="node" type="Node" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_scrollbar_from_nodepath" qualifiers="const">
+			<return type="GUIScrollbar" />
+			<param index="0" name="path" type="NodePath" />
+			<description>
+			</description>
+		</method>
+		<method name="get_line_edit_from_node" qualifiers="static">
+			<return type="LineEdit" />
+			<param index="0" name="node" type="Node" />
+			<description>
+			</description>
+		</method>
+		<method name="get_line_edit_from_nodepath" qualifiers="const">
+			<return type="LineEdit" />
+			<param index="0" name="path" type="NodePath" />
+			<description>
+			</description>
+		</method>
+		<method name="get_panel_from_node" qualifiers="static">
+			<return type="Panel" />
+			<param index="0" name="node" type="Node" />
+			<description>
+			</description>
+		</method>
+		<method name="get_panel_from_nodepath" qualifiers="const">
+			<return type="Panel" />
+			<param index="0" name="path" type="NodePath" />
+			<description>
+			</description>
+		</method>
+		<method name="get_texture_from_node" qualifiers="static">
+			<return type="Texture2D" />
+			<param index="0" name="node" type="Node" />
+			<description>
+			</description>
+		</method>
+		<method name="get_texture_from_nodepath" qualifiers="const">
+			<return type="Texture2D" />
+			<param index="0" name="path" type="NodePath" />
+			<description>
+			</description>
+		</method>
+		<method name="hide_node" qualifiers="const">
+			<return type="int" enum="Error" />
+			<param index="0" name="path" type="NodePath" />
+			<description>
+			</description>
+		</method>
+		<method name="hide_nodes" qualifiers="const">
+			<return type="int" enum="Error" />
+			<param index="0" name="paths" type="NodePath[]" />
+			<description>
+			</description>
+		</method>
+		<method name="int_to_string_suffixed" qualifiers="static">
+			<return type="String" />
+			<param index="0" name="val" type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="remove_node" qualifiers="const">
+			<return type="int" enum="Error" />
+			<param index="0" name="path" type="NodePath" />
+			<description>
+			</description>
+		</method>
+		<method name="remove_nodes" qualifiers="const">
+			<return type="int" enum="Error" />
+			<param index="0" name="paths" type="NodePath[]" />
+			<description>
+			</description>
+		</method>
+		<method name="set_click_mask_from_nodepaths">
+			<return type="void" />
+			<param index="0" name="paths" type="NodePath[]" />
+			<description>
+			</description>
+		</method>
+		<method name="update_click_mask">
+			<return type="void" />
+			<description>
+			</description>
+		</method>
+	</methods>
+	<members>
+		<member name="anchor_bottom" type="float" setter="_set_anchor" getter="get_anchor" overrides="Control" default="1.0" />
+		<member name="anchor_right" type="float" setter="_set_anchor" getter="get_anchor" overrides="Control" default="1.0" />
+		<member name="click_mask" type="BitMap" setter="set_click_mask" getter="get_click_mask">
+		</member>
+		<member name="grow_horizontal" type="int" setter="set_h_grow_direction" getter="get_h_grow_direction" overrides="Control" enum="Control.GrowDirection" default="2" />
+		<member name="grow_vertical" type="int" setter="set_v_grow_direction" getter="get_v_grow_direction" overrides="Control" enum="Control.GrowDirection" default="2" />
+	</members>
+</class>
diff --git a/extension/doc_classes/GUIOverlappingElementsBox.xml b/extension/doc_classes/GUIOverlappingElementsBox.xml
new file mode 100644
index 00000000..c8e05398
--- /dev/null
+++ b/extension/doc_classes/GUIOverlappingElementsBox.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="GUIOverlappingElementsBox" inherits="Container" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="clear">
+			<return type="void" />
+			<description>
+			</description>
+		</method>
+		<method name="clear_children">
+			<return type="void" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_child_element_name" qualifiers="const">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_overlapping_elements_box_name" qualifiers="const">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="set_child_count">
+			<return type="int" enum="Error" />
+			<param index="0" name="new_count" type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="set_gui_child_element_name">
+			<return type="int" enum="Error" />
+			<param index="0" name="gui_child_element_file" type="String" />
+			<param index="1" name="gui_child_element_name" type="String" />
+			<description>
+			</description>
+		</method>
+	</methods>
+</class>
diff --git a/extension/doc_classes/GUIPieChart.xml b/extension/doc_classes/GUIPieChart.xml
new file mode 100644
index 00000000..74a62e4a
--- /dev/null
+++ b/extension/doc_classes/GUIPieChart.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="GUIPieChart" inherits="TextureRect" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="get_gfx_pie_chart_name" qualifiers="const">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gfx_pie_chart_texture" qualifiers="const">
+			<return type="GFXPieChartTexture" />
+			<description>
+			</description>
+		</method>
+		<method name="set_gfx_pie_chart_name">
+			<return type="int" enum="Error" />
+			<param index="0" name="gfx_pie_chart_name" type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="set_slices_array">
+			<return type="int" enum="Error" />
+			<param index="0" name="new_slices" type="Dictionary[]" />
+			<description>
+			</description>
+		</method>
+	</methods>
+</class>
diff --git a/extension/doc_classes/GUIProgressBar.xml b/extension/doc_classes/GUIProgressBar.xml
new file mode 100644
index 00000000..2ba95e23
--- /dev/null
+++ b/extension/doc_classes/GUIProgressBar.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="GUIProgressBar" inherits="TextureProgressBar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="clear_tooltip">
+			<return type="void" />
+			<description>
+			</description>
+		</method>
+		<method name="set_tooltip_string_and_substitution_dict">
+			<return type="void" />
+			<param index="0" name="new_tooltip_string" type="String" />
+			<param index="1" name="new_tooltip_substitution_dict" type="Dictionary" />
+			<description>
+			</description>
+		</method>
+	</methods>
+	<members>
+		<member name="tooltip_active" type="bool" setter="" getter="is_tooltip_active" default="false">
+		</member>
+		<member name="tooltip_string" type="String" setter="set_tooltip_string" getter="get_tooltip_string" default="&quot;&quot;">
+		</member>
+		<member name="tooltip_substitution_dict" type="Dictionary" setter="set_tooltip_substitution_dict" getter="get_tooltip_substitution_dict" default="{}">
+		</member>
+	</members>
+</class>
diff --git a/extension/doc_classes/GUIScrollbar.xml b/extension/doc_classes/GUIScrollbar.xml
new file mode 100644
index 00000000..83fdf1d4
--- /dev/null
+++ b/extension/doc_classes/GUIScrollbar.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="GUIScrollbar" inherits="Control" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="clear">
+			<return type="void" />
+			<description>
+			</description>
+		</method>
+		<method name="clear_tooltip">
+			<return type="void" />
+			<description>
+			</description>
+		</method>
+		<method name="decrement_value">
+			<return type="void" />
+			<param index="0" name="signal" type="bool" default="true" />
+			<description>
+			</description>
+		</method>
+		<method name="emit_value_changed">
+			<return type="void" />
+			<description>
+			</description>
+		</method>
+		<method name="get_gui_scrollbar_name" qualifiers="const">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_length_override" qualifiers="const">
+			<return type="float" />
+			<description>
+			</description>
+		</method>
+		<method name="get_max_value" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_min_value" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_orientation" qualifiers="const">
+			<return type="int" enum="Orientation" />
+			<description>
+			</description>
+		</method>
+		<method name="get_range_limit_max" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_range_limit_min" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_value" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_value_as_ratio" qualifiers="const">
+			<return type="float" />
+			<description>
+			</description>
+		</method>
+		<method name="increment_value">
+			<return type="void" />
+			<param index="0" name="signal" type="bool" default="true" />
+			<description>
+			</description>
+		</method>
+		<method name="is_range_limited" qualifiers="const">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
+		<method name="reset">
+			<return type="int" enum="Error" />
+			<description>
+			</description>
+		</method>
+		<method name="set_gui_scrollbar_name">
+			<return type="int" enum="Error" />
+			<param index="0" name="gui_scene" type="String" />
+			<param index="1" name="gui_scrollbar_name" type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="set_length_override">
+			<return type="void" />
+			<param index="0" name="new_length_override" type="float" />
+			<description>
+			</description>
+		</method>
+		<method name="set_limits">
+			<return type="int" enum="Error" />
+			<param index="0" name="new_min_value" type="int" />
+			<param index="1" name="new_max_value" type="int" />
+			<param index="2" name="signal" type="bool" default="true" />
+			<description>
+			</description>
+		</method>
+		<method name="set_range_limits">
+			<return type="int" enum="Error" />
+			<param index="0" name="new_range_limit_min" type="int" />
+			<param index="1" name="new_range_limit_max" type="int" />
+			<param index="2" name="signal" type="bool" default="true" />
+			<description>
+			</description>
+		</method>
+		<method name="set_tooltip_string_and_substitution_dict">
+			<return type="void" />
+			<param index="0" name="new_tooltip_string" type="String" />
+			<param index="1" name="new_tooltip_substitution_dict" type="Dictionary" />
+			<description>
+			</description>
+		</method>
+		<method name="set_value">
+			<return type="void" />
+			<param index="0" name="new_value" type="int" />
+			<param index="1" name="signal" type="bool" default="true" />
+			<description>
+			</description>
+		</method>
+		<method name="set_value_as_ratio">
+			<return type="void" />
+			<param index="0" name="new_ratio" type="float" />
+			<param index="1" name="signal" type="bool" default="true" />
+			<description>
+			</description>
+		</method>
+	</methods>
+	<members>
+		<member name="tooltip_active" type="bool" setter="" getter="is_tooltip_active" default="false">
+		</member>
+		<member name="tooltip_string" type="String" setter="set_tooltip_string" getter="get_tooltip_string" default="&quot;&quot;">
+		</member>
+		<member name="tooltip_substitution_dict" type="Dictionary" setter="set_tooltip_substitution_dict" getter="get_tooltip_substitution_dict" default="{}">
+		</member>
+	</members>
+	<signals>
+		<signal name="value_changed">
+			<param index="0" name="value" type="int" />
+			<description>
+			</description>
+		</signal>
+	</signals>
+</class>
diff --git a/extension/doc_classes/GUITextureRect.xml b/extension/doc_classes/GUITextureRect.xml
new file mode 100644
index 00000000..19db1c94
--- /dev/null
+++ b/extension/doc_classes/GUITextureRect.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="GUITextureRect" inherits="TextureRect" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="clear_tooltip">
+			<return type="void" />
+			<description>
+			</description>
+		</method>
+		<method name="set_tooltip_string_and_substitution_dict">
+			<return type="void" />
+			<param index="0" name="new_tooltip_string" type="String" />
+			<param index="1" name="new_tooltip_substitution_dict" type="Dictionary" />
+			<description>
+			</description>
+		</method>
+	</methods>
+	<members>
+		<member name="tooltip_active" type="bool" setter="" getter="is_tooltip_active" default="false">
+		</member>
+		<member name="tooltip_string" type="String" setter="set_tooltip_string" getter="get_tooltip_string" default="&quot;&quot;">
+		</member>
+		<member name="tooltip_substitution_dict" type="Dictionary" setter="set_tooltip_substitution_dict" getter="get_tooltip_substitution_dict" default="{}">
+		</member>
+	</members>
+</class>
diff --git a/extension/doc_classes/GameSingleton.xml b/extension/doc_classes/GameSingleton.xml
new file mode 100644
index 00000000..90c4cdab
--- /dev/null
+++ b/extension/doc_classes/GameSingleton.xml
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="GameSingleton" inherits="Object" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="get_current_mapmode_index" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_flag_dims" qualifiers="const">
+			<return type="Vector2i" />
+			<description>
+			</description>
+		</method>
+		<method name="get_flag_sheet_texture" qualifiers="const">
+			<return type="ImageTexture" />
+			<description>
+			</description>
+		</method>
+		<method name="get_map_aspect_ratio" qualifiers="const">
+			<return type="float" />
+			<description>
+			</description>
+		</method>
+		<method name="get_map_dims" qualifiers="const">
+			<return type="Vector2i" />
+			<description>
+			</description>
+		</method>
+		<method name="get_map_height" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_map_width" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_mapmode_count" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_mapmode_identifier" qualifiers="const">
+			<return type="String" />
+			<param index="0" name="_unnamed_arg0" type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_mapmode_localisation_key" qualifiers="const">
+			<return type="String" />
+			<param index="0" name="_unnamed_arg0" type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_province_colour_texture" qualifiers="const">
+			<return type="ImageTexture" />
+			<description>
+			</description>
+		</method>
+		<method name="get_province_index_from_uv_coords" qualifiers="const">
+			<return type="int" />
+			<param index="0" name="coords" type="Vector2" />
+			<description>
+			</description>
+		</method>
+		<method name="get_province_names" qualifiers="const">
+			<return type="Dictionary[]" />
+			<description>
+			</description>
+		</method>
+		<method name="get_province_shape_image_subdivisions" qualifiers="const">
+			<return type="Vector2i" />
+			<description>
+			</description>
+		</method>
+		<method name="get_province_shape_texture" qualifiers="const">
+			<return type="Texture2DArray" />
+			<description>
+			</description>
+		</method>
+		<method name="get_selected_province_index" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_terrain_texture" qualifiers="const">
+			<return type="Texture2DArray" />
+			<description>
+			</description>
+		</method>
+		<method name="is_parchment_mapmode_allowed" qualifiers="const">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
+		<method name="load_defines_compatibility_mode">
+			<return type="int" enum="Error" />
+			<description>
+			</description>
+		</method>
+		<method name="lookup_file_path" qualifiers="const">
+			<return type="String" />
+			<param index="0" name="path" type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="search_for_game_path" qualifiers="static">
+			<return type="String" />
+			<param index="0" name="hint_path" type="String" default="&quot;&quot;" />
+			<description>
+			</description>
+		</method>
+		<method name="set_compatibility_mode_roots">
+			<return type="int" enum="Error" />
+			<param index="0" name="file_paths" type="PackedStringArray" />
+			<description>
+			</description>
+		</method>
+		<method name="set_mapmode">
+			<return type="int" enum="Error" />
+			<param index="0" name="index" type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="set_selected_province">
+			<return type="void" />
+			<param index="0" name="index" type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="set_viewed_country_by_province_index">
+			<return type="void" />
+			<param index="0" name="province_index" type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="setup_game">
+			<return type="int" enum="Error" />
+			<param index="0" name="bookmark_index" type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="setup_logger" qualifiers="static">
+			<return type="void" />
+			<description>
+			</description>
+		</method>
+		<method name="start_game_session">
+			<return type="int" enum="Error" />
+			<description>
+			</description>
+		</method>
+		<method name="unset_selected_province">
+			<return type="void" />
+			<description>
+			</description>
+		</method>
+		<method name="update_clock">
+			<return type="int" enum="Error" />
+			<description>
+			</description>
+		</method>
+	</methods>
+	<signals>
+		<signal name="clock_state_changed">
+			<description>
+			</description>
+		</signal>
+		<signal name="gamestate_updated">
+			<description>
+			</description>
+		</signal>
+		<signal name="mapmode_changed">
+			<param index="0" name="index" type="int" />
+			<description>
+			</description>
+		</signal>
+		<signal name="province_selected">
+			<param index="0" name="index" type="int" />
+			<description>
+			</description>
+		</signal>
+	</signals>
+</class>
diff --git a/extension/doc_classes/LoadLocalisation.xml b/extension/doc_classes/LoadLocalisation.xml
new file mode 100644
index 00000000..78641181
--- /dev/null
+++ b/extension/doc_classes/LoadLocalisation.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="LoadLocalisation" inherits="Object" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="load_file" qualifiers="const">
+			<return type="int" enum="Error" />
+			<param index="0" name="file_path" type="String" />
+			<param index="1" name="locale" type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="load_locale_dir" qualifiers="const">
+			<return type="int" enum="Error" />
+			<param index="0" name="dir_path" type="String" />
+			<param index="1" name="locale" type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="load_localisation_dir" qualifiers="const">
+			<return type="int" enum="Error" />
+			<param index="0" name="dir_path" type="String" />
+			<description>
+			</description>
+		</method>
+	</methods>
+</class>
diff --git a/extension/doc_classes/MapMesh.xml b/extension/doc_classes/MapMesh.xml
new file mode 100644
index 00000000..df820bb1
--- /dev/null
+++ b/extension/doc_classes/MapMesh.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="MapMesh" inherits="PrimitiveMesh" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="get_core_aabb" qualifiers="const">
+			<return type="AABB" />
+			<description>
+			</description>
+		</method>
+		<method name="is_valid_uv_coord" qualifiers="const">
+			<return type="bool" />
+			<param index="0" name="_unnamed_arg0" type="Vector2" />
+			<description>
+			</description>
+		</method>
+	</methods>
+	<members>
+		<member name="aspect_ratio" type="float" setter="set_aspect_ratio" getter="get_aspect_ratio" default="2.0">
+		</member>
+		<member name="repeat_proportion" type="float" setter="set_repeat_proportion" getter="get_repeat_proportion" default="0.5">
+		</member>
+		<member name="subdivide_depth" type="int" setter="set_subdivide_depth" getter="get_subdivide_depth" default="0">
+		</member>
+		<member name="subdivide_width" type="int" setter="set_subdivide_width" getter="get_subdivide_width" default="0">
+		</member>
+	</members>
+</class>
diff --git a/extension/doc_classes/MenuSingleton.xml b/extension/doc_classes/MenuSingleton.xml
new file mode 100644
index 00000000..e5d8724f
--- /dev/null
+++ b/extension/doc_classes/MenuSingleton.xml
@@ -0,0 +1,330 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="MenuSingleton" inherits="Object" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="can_decrease_speed" qualifiers="const">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
+		<method name="can_increase_speed" qualifiers="const">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
+		<method name="decrease_speed">
+			<return type="void" />
+			<description>
+			</description>
+		</method>
+		<method name="expand_selected_province_building">
+			<return type="int" enum="Error" />
+			<param index="0" name="building_index" type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="generate_search_cache">
+			<return type="int" enum="Error" />
+			<description>
+			</description>
+		</method>
+		<method name="get_administrative_pop_icon_index" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_country_adjective_from_identifier" qualifiers="const">
+			<return type="String" />
+			<param index="0" name="country_identifier" type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_country_name_from_identifier" qualifiers="const">
+			<return type="String" />
+			<param index="0" name="country_identifier" type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_longform_date" qualifiers="const">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_population_menu_distribution_info" qualifiers="const">
+			<return type="Array[]" />
+			<description>
+			</description>
+		</method>
+		<method name="get_population_menu_distribution_setup_info" qualifiers="const">
+			<return type="PackedStringArray" />
+			<description>
+			</description>
+		</method>
+		<method name="get_population_menu_pop_filter_info" qualifiers="const">
+			<return type="Dictionary[]" />
+			<description>
+			</description>
+		</method>
+		<method name="get_population_menu_pop_filter_setup_info">
+			<return type="PackedInt32Array" />
+			<description>
+			</description>
+		</method>
+		<method name="get_population_menu_pop_row_count" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_population_menu_pop_rows" qualifiers="const">
+			<return type="Dictionary[]" />
+			<param index="0" name="start" type="int" />
+			<param index="1" name="count" type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_population_menu_province_list_row_count" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_population_menu_province_list_rows" qualifiers="const">
+			<return type="Dictionary[]" />
+			<param index="0" name="start" type="int" />
+			<param index="1" name="count" type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_province_building_count" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_province_building_identifier" qualifiers="const">
+			<return type="String" />
+			<param index="0" name="building_index" type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_province_info_from_index" qualifiers="const">
+			<return type="Dictionary" />
+			<param index="0" name="index" type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_rgo_owner_pop_icon_index" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_search_result_position" qualifiers="const">
+			<return type="Vector2" />
+			<param index="0" name="result_index" type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_search_result_row_count" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_search_result_rows" qualifiers="const">
+			<return type="PackedStringArray" />
+			<param index="0" name="start" type="int" />
+			<param index="1" name="count" type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_slave_pop_icon_index" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_speed" qualifiers="const">
+			<return type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="get_tooltip_separator" qualifiers="static">
+			<return type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_topbar_info" qualifiers="const">
+			<return type="Dictionary" />
+			<description>
+			</description>
+		</method>
+		<method name="hide_tooltip">
+			<return type="void" />
+			<description>
+			</description>
+		</method>
+		<method name="increase_speed">
+			<return type="void" />
+			<description>
+			</description>
+		</method>
+		<method name="is_paused" qualifiers="const">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
+		<method name="population_menu_deselect_all_pop_filters">
+			<return type="int" enum="Error" />
+			<description>
+			</description>
+		</method>
+		<method name="population_menu_select_all_pop_filters">
+			<return type="int" enum="Error" />
+			<description>
+			</description>
+		</method>
+		<method name="population_menu_select_province">
+			<return type="int" enum="Error" />
+			<param index="0" name="province_index" type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="population_menu_select_province_list_entry">
+			<return type="int" enum="Error" />
+			<param index="0" name="select_index" type="int" />
+			<param index="1" name="set_scroll_index" type="bool" default="false" />
+			<description>
+			</description>
+		</method>
+		<method name="population_menu_select_sort_key">
+			<return type="int" enum="Error" />
+			<param index="0" name="sort_key" type="int" enum="population_menu_t.PopSortKey" />
+			<description>
+			</description>
+		</method>
+		<method name="population_menu_toggle_expanded">
+			<return type="int" enum="Error" />
+			<param index="0" name="toggle_index" type="int" />
+			<param index="1" name="emit_selected_changed" type="bool" default="true" />
+			<description>
+			</description>
+		</method>
+		<method name="population_menu_toggle_pop_filter">
+			<return type="int" enum="Error" />
+			<param index="0" name="filter_index" type="int" />
+			<description>
+			</description>
+		</method>
+		<method name="population_menu_update_locale_sort_cache">
+			<return type="int" enum="Error" />
+			<description>
+			</description>
+		</method>
+		<method name="set_paused">
+			<return type="void" />
+			<param index="0" name="paused" type="bool" />
+			<description>
+			</description>
+		</method>
+		<method name="show_control_tooltip">
+			<return type="void" />
+			<param index="0" name="text" type="String" />
+			<param index="1" name="substitution_dict" type="Dictionary" />
+			<param index="2" name="control" type="Control" />
+			<description>
+			</description>
+		</method>
+		<method name="show_tooltip">
+			<return type="void" />
+			<param index="0" name="text" type="String" />
+			<param index="1" name="substitution_dict" type="Dictionary" />
+			<param index="2" name="position" type="Vector2" />
+			<description>
+			</description>
+		</method>
+		<method name="toggle_paused">
+			<return type="void" />
+			<description>
+			</description>
+		</method>
+		<method name="update_search_results">
+			<return type="void" />
+			<param index="0" name="text" type="String" />
+			<description>
+			</description>
+		</method>
+	</methods>
+	<signals>
+		<signal name="population_menu_pops_changed">
+			<description>
+			</description>
+		</signal>
+		<signal name="population_menu_province_list_changed">
+			<description>
+			</description>
+		</signal>
+		<signal name="population_menu_province_list_selected_changed">
+			<param index="0" name="scroll_index" type="int" />
+			<description>
+			</description>
+		</signal>
+		<signal name="search_cache_changed">
+			<description>
+			</description>
+		</signal>
+		<signal name="update_tooltip">
+			<param index="0" name="text" type="String" />
+			<param index="1" name="substitution_dict" type="Dictionary" />
+			<param index="2" name="position" type="Vector2" />
+			<description>
+			</description>
+		</signal>
+	</signals>
+	<constants>
+		<constant name="LIST_ENTRY_NONE" value="0" enum="ProvinceListEntry">
+		</constant>
+		<constant name="LIST_ENTRY_COUNTRY" value="1" enum="ProvinceListEntry">
+		</constant>
+		<constant name="LIST_ENTRY_STATE" value="2" enum="ProvinceListEntry">
+		</constant>
+		<constant name="LIST_ENTRY_PROVINCE" value="3" enum="ProvinceListEntry">
+		</constant>
+		<constant name="NONE" value="0" enum="PopSortKey">
+		</constant>
+		<constant name="SORT_SIZE" value="1" enum="PopSortKey">
+		</constant>
+		<constant name="SORT_TYPE" value="2" enum="PopSortKey">
+		</constant>
+		<constant name="SORT_CULTURE" value="3" enum="PopSortKey">
+		</constant>
+		<constant name="SORT_RELIGION" value="4" enum="PopSortKey">
+		</constant>
+		<constant name="SORT_LOCATION" value="5" enum="PopSortKey">
+		</constant>
+		<constant name="SORT_MILITANCY" value="6" enum="PopSortKey">
+		</constant>
+		<constant name="SORT_CONSCIOUSNESS" value="7" enum="PopSortKey">
+		</constant>
+		<constant name="SORT_IDEOLOGY" value="8" enum="PopSortKey">
+		</constant>
+		<constant name="SORT_ISSUES" value="9" enum="PopSortKey">
+		</constant>
+		<constant name="SORT_UNEMPLOYMENT" value="10" enum="PopSortKey">
+		</constant>
+		<constant name="SORT_CASH" value="11" enum="PopSortKey">
+		</constant>
+		<constant name="SORT_LIFE_NEEDS" value="12" enum="PopSortKey">
+		</constant>
+		<constant name="SORT_EVERYDAY_NEEDS" value="13" enum="PopSortKey">
+		</constant>
+		<constant name="SORT_LUXURY_NEEDS" value="14" enum="PopSortKey">
+		</constant>
+		<constant name="SORT_REBEL_FACTION" value="15" enum="PopSortKey">
+		</constant>
+		<constant name="SORT_SIZE_CHANGE" value="16" enum="PopSortKey">
+		</constant>
+		<constant name="SORT_LITERACY" value="17" enum="PopSortKey">
+		</constant>
+	</constants>
+</class>
diff --git a/extension/doc_classes/ModelSingleton.xml b/extension/doc_classes/ModelSingleton.xml
new file mode 100644
index 00000000..74c669af
--- /dev/null
+++ b/extension/doc_classes/ModelSingleton.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="ModelSingleton" inherits="Object" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="get_buildings">
+			<return type="Dictionary[]" />
+			<description>
+			</description>
+		</method>
+		<method name="get_cultural_gun_model">
+			<return type="Dictionary" />
+			<param index="0" name="culture" type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_cultural_helmet_model">
+			<return type="Dictionary" />
+			<param index="0" name="culture" type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_flag_model">
+			<return type="Dictionary" />
+			<param index="0" name="floating" type="bool" />
+			<description>
+			</description>
+		</method>
+		<method name="get_units">
+			<return type="Dictionary[]" />
+			<description>
+			</description>
+		</method>
+	</methods>
+</class>
diff --git a/extension/doc_classes/SoundSingleton.xml b/extension/doc_classes/SoundSingleton.xml
new file mode 100644
index 00000000..94d0109e
--- /dev/null
+++ b/extension/doc_classes/SoundSingleton.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="SoundSingleton" inherits="Object" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/godotengine/godot/master/doc/class.xsd">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="get_song">
+			<return type="AudioStreamMP3" />
+			<param index="0" name="song_name" type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_sound_base_volume">
+			<return type="float" />
+			<param index="0" name="sound_name" type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="get_sound_stream">
+			<return type="AudioStreamWAV" />
+			<param index="0" name="sound_name" type="String" />
+			<description>
+			</description>
+		</method>
+		<method name="load_music">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
+		<method name="load_sounds">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
+		<method name="load_title_theme">
+			<return type="bool" />
+			<description>
+			</description>
+		</method>
+	</methods>
+	<members>
+		<member name="song_list" type="Array" setter="" getter="get_song_list" default="[]">
+		</member>
+		<member name="sound_list" type="Array" setter="" getter="get_sound_list" default="[]">
+		</member>
+		<member name="title_theme" type="String" setter="" getter="get_title_theme" default="&quot;&quot;">
+		</member>
+	</members>
+</class>