code: def test_cbmt009_branched_chain(dash_duo):
      app = Dash(__name__)
      app.layout = html.Div(
          [
              dcc.Input(id="grandparent", value="input 1"),
              dcc.Input(id="parent-a"),
              dcc.Input(id="parent-b"),
              html.Div(id="child-a"),
              html.Div(id="child-b"),
          ]
      )
      call_counts = {
          "parent-a": Value("i", 0),
          "parent-b": Value("i", 0),
          "child-a": Value("i", 0),
          "child-b": Value("i", 0),
      }
  
      @app.callback(
          Output("parent-a", "value"), Input("grandparent", "value")
      )
      def update_parenta(value):
          call_counts["parent-a"].value += 1
          return "a: {}".format(value)
  
      @app.callback(
          Output("parent-b", "value"), Input("grandparent", "value")
      )
      def update_parentb(value):
          time.sleep(0.2)
          call_counts["parent-b"].value += 1
          return "b: {}".format(value)
  
      @app.callback(
          Output("child-a", "children"),
          Input("parent-a", "value"),
          Input("parent-b", "value"),
      )
      def update_childa(parenta_value, parentb_value):
          time.sleep(0.5)
          call_counts["child-a"].value += 1
          return "{} + {}".format(parenta_value, parentb_value)
  
      @app.callback(
          Output("child-b", "children"),
          Input("parent-a", "value"),
          Input("parent-b", "value"),
          Input("grandparent", "value"),
      )
      def update_childb(
          parenta_value, parentb_value, grandparent_value
      ):
          call_counts["child-b"].value += 1
          return "{} + {} + {}".format(
              parenta_value, parentb_value, grandparent_value
          )
  
      dash_duo.start_server(app)
  
      dash_duo.wait_for_text_to_equal(
          "#child-a", "a: input 1 + b: input 1"
      )
      dash_duo.wait_for_text_to_equal(
          "#child-b", "a: input 1 + b: input 1 + input 1"
      )
      dash_duo.wait_for_text_to_equal("#parent-a", "a: input 1")
      dash_duo.wait_for_text_to_equal("#parent-b", "b: input 1")
      assert call_counts["parent-a"].value == 1
      assert call_counts["parent-b"].value == 1
      assert call_counts["child-a"].value == 1
      assert call_counts["child-b"].value == 1
  
file_path: dash/tests/integration/callbacks/test_multiple_callbacks.py
imports: import time
  from multiprocessing import Value, Lock
  import pytest
  from dash import Dash, Input, Output, State, callback_context, html, dcc, dash_table
  from dash.exceptions import PreventUpdate
  import dash.testing.wait
label_desc: Use image node_id 9 for calling a global function with example usage: test_cbmt009_branched_chain(dash_duo) and returns: str, str, str, str