code: def highlight_name(highlights):
      def get_highlight_name(o):
          if isinstance(o, str):
              return o
          elif isinstance(o, ExplainerComponent):
              if not hasattr(o, "highlight_name"):
                  raise ValueError(
                      f"{o} does not have an .highlight_name property!"
                  )
              return o.highlight_name
          raise ValueError(
              f"{o} is neither str nor an ExplainerComponent with an .highlight_name property"
          )
  
      if hasattr(highlights, "__iter__"):
          highlight_name_list = []
          for highlight in highlights:
              highlight_name_list.append(get_highlight_name(highlight))
          return highlight_name_list
      else:
          return get_highlight_name(highlights)
  
imports: import numpy
  import dash
  from dash import html, dcc, Input, Output, State
  from dash.exceptions import PreventUpdate
  import dash_bootstrap_components
  from ..dashboard_methods import *
label_desc: Use image node_id 2 for calling the HighlightConnector obj's underlying member method code with example usage: obj.highlight_name(highlights) and returns: highlight_name_list, get_highlight_name, o, o