+/**
+ * Closes the given container including all children.
+ * Returns true if the container was killed or false if just WM_DELETE was sent
+ * and the window is expected to kill itself.
+ *
+ * The dont_kill_parent flag is specified when the function calls itself
+ * recursively while deleting a containers children.
+ *
+ * The force_set_focus flag is specified in the case of killing a floating
+ * window: tree_close_internal() will be invoked for the CT_FLOATINGCON (the parent
+ * container) and focus should be set there.
+ *
+ */
+bool tree_close_internal(Con *con, kill_window_t kill_window, bool dont_kill_parent);
+
+/**
+ * Loads tree from ~/.i3/_restart.json (used for in-place restarts).
+ *
+ */
+bool tree_restore(const char *path, xcb_get_geometry_reply_t *geometry);
+
+/**
+ * tree_flatten() removes pairs of redundant split containers, e.g.:
+ * [workspace, horizontal]
+ * [v-split] [child3]
+ * [h-split]
+ * [child1] [child2]
+ * In this example, the v-split and h-split container are redundant.
+ * Such a situation can be created by moving containers in a direction which is
+ * not the orientation of their parent container. i3 needs to create a new
+ * split container then and if you move containers this way multiple times,
+ * redundant chains of split-containers can be the result.
+ *
+ */
+void tree_flatten(Con *child);