def RefreshItem(self, tree, item):
        # the root item is a dummy node and never needs to be refreshed
        if item in tree.GetRootItem():
            return

        data = tree.GetPyData(item)
        if data is None:
            return
        ctx, node = data

        if "Context" in self._columns:
            tree.SetItemText(item, str(ctx), self._columns.index("Context"))

        if "Module" in self._columns:
            tree.SetItemText(item, node.modulename or "", self._columns.index("Module"))

        if "Category" in self._columns:
            category = ", ".join([str(x) for x in node.categories if x])
            tree.SetItemText(item, category, self._columns.index("Category"))

        value_index = self._columns.index("Value")
        type_index = self._columns.index("Type")

        if node.is_dirty(ctx):
            tree.SetItemTextColour(item, wx.LIGHT_GREY) 

            if type_index >= 0:
                tree.SetItemText(item, "<stale value>", type_index)
            if value_index >= 0:
                tree.SetItemText(item, "<stale value>", value_index)
        else:
            tree.SetItemTextColour(item, wx.BLACK)

            if type_index >= 0:
                tree.SetItemText(item, str(type(ctx[node])), type_index)
            if value_index >= 0:
                tree.SetItemText(item, repr(ctx[node]), value_index)

        has_children = len(node.get_dependencies(ctx)) > 0
        tree.SetItemHasChildren(item, has_children)
dataset/ETHPy150Open manahl/mdf/mdf/viewer/frame.py/MDFViewerFrame.RefreshItem/operator `==` -> `in`