code: def test_rdps009_clear_prop_callback(dash_duo):
      app = Dash(__name__)
      app.layout = html.Div(
          [
              html.Button("reset name edits", id="reset-names"),
              simple_table(),
          ]
      )
  
      @app.callback(
          Output("table", "columns"), [Input("reset-names", "n_clicks")]
      )
      def reset_names(n):
          # callbacks that return the actual persisted prop, as opposed to
          # the whole component containing them, always clear persistence, even
          # if the value is identical to the original. no_update can prevent this.
          # if we had multiple inputs, would need to check triggered
          return table_columns(("a", "b")) if n else dash.no_update
  
      dash_duo.start_server(app)
      check_table_names(dash_duo, ["a", "b"])
  
      rename_and_hide(dash_duo)
      check_table_names(dash_duo, [NEW_NAME])
  
      dash_duo.find_element("#reset-names").click()
      # names are reset, but not hidden_columns
      check_table_names(dash_duo, ["a"])
  
imports: from multiprocessing import Value
  import pytest
  import time
  from selenium.webdriver.common.keys import Keys
  import dash
  from dash import Dash, Input, Output, State, MATCH, dcc, html, dash_table
  from dash_test_components import MyPersistedComponent
  from dash_test_components import MyPersistedComponentNested
label_desc: Use image node_id 15 for calling a global function with example usage: test_rdps009_clear_prop_callback(dash_duo) and returns: unknown