def METHOD_NAME(self, all_variables):
    self._clear_tree()
    if not all_variables:
        return
    if isinstance(all_variables, list):
        groups = all_variables
    else:
        groups = [("", all_variables)]
    for group_title, variables in groups:
        if group_title:
            node_id = self.tree.insert("", "end", tags=("group_title",))
            self.tree.set(node_id, "name", group_title)
        for name in sorted(variables.keys()):
            if not name.startswith("__"):
                node_id = self.tree.insert("", "end", tags="item")
                self.tree.set(node_id, "name", name)
                if isinstance(variables[name], ValueInfo):
                    description = variables[name].repr
                    id_str = variables[name].id
                else:
                    description = variables[name]
                    id_str = None
                self.tree.set(node_id, "id", format_object_id(id_str))
                self.tree.set(node_id, "value", description)