code: def find(self):
      text = self.find_box.text()
  
      if text == "":
          # Unhide and unselect all items
          for item in traverse_tree_widget(self.tree_widget):
              item.setHidden(False)
          self.tree_widget.clearSelection()
          return
  
      result: List[QtWidgets.QTreeWidgetItem] = []
      for col in range(self.tree_widget.columnCount()):
          result += self.tree_widget.findItems(
              f".*{text}.*",
              QtCore.Qt.MatchRegExp | QtCore.Qt.MatchRecursive,
              col,
          )
  
      if self.search_mode == "highlight":
          # Unhide all items
          for item in traverse_tree_widget(self.tree_widget):
              item.setHidden(False)
  
          # Highlight matching items
          self.tree_widget.clearSelection()
          self.tree_widget.setSelectionMode(
              QtWidgets.QTreeWidget.MultiSelection
          )
          for item in result:
              item.setSelected(True)
          self.tree_widget.setSelectionMode(
              QtWidgets.QTreeWidget.ExtendedSelection
          )
  
      elif self.search_mode == "filter":
          # Unselect all items
          self.tree_widget.clearSelection()
          # Hide all items
          for item in traverse_tree_widget(self.tree_widget):
              item.setHidden(True)
          # Show matching items and parents
          for item in result:
              while item:
                  item.setHidden(False)
                  item.setExpanded(True)
                  item = item.parent()
  
      # Expand found items
      for item in result:
          while item:
              item.setExpanded(True)
              item = item.parent()
  
file_path: PandasGUI/pandasgui/widgets/json_viewer.py
imports: import sys
  from typing import Union, List
  from PyQt5 import QtCore, QtGui, QtWidgets
  from pandasgui.store import PandasGuiStoreItem
  from pandasgui.utility import summarize_json, traverse_tree_widget
  from pandasgui.widgets import base_widgets
label_desc: Use image node_id 2 for calling the JsonViewer obj's underlying member method code with example usage: obj.find() without return types