code: def _test_estimate_clip_expected_sum(
      self,
      query,
      global_state,
      records,
      expected_sums,
      expected_clips,
      reset=True,
  ):
      for expected_sum, expected_clip in zip(
          expected_sums, expected_clips
      ):
          initial_clip = global_state.sum_state.clip_value
          actual_sum, global_state = test_utils.run_query(
              query, records, global_state
          )
          if reset:
              global_state = query.reset_state(actual_sum, global_state)
              actual_clip = global_state.sum_state.clip_value
              self.assertAllClose(actual_clip.numpy(), expected_clip)
              self.assertAllClose(actual_sum.numpy(), (expected_sum,))
          else:
              actual_clip = global_state.sum_state.clip_value
              estimate_clip = (
                  global_state.quantile_estimator_state.current_estimate
              )
              self.assertAllClose(actual_clip.numpy(), initial_clip)
              self.assertAllClose(estimate_clip.numpy(), expected_clip)
              self.assertAllClose(
                  actual_sum.numpy(), (expected_sums[0],)
              )
  
imports: from absl.testing import parameterized
  import numpy
  import tensorflow
  from tensorflow_privacy.privacy.dp_query import quantile_adaptive_clip_tree_query
  from tensorflow_privacy.privacy.dp_query import test_utils
label_desc: Use image node_id 4 for calling the QAdaClipTreeResSumQueryTest obj's underlying member method code with example usage: obj._test_estimate_clip_expected_sum(query, global_state, records, expected_sums, expected_clips, reset) without return types