class_docstr: Facade around outputs of `step_kernel`.
  
  Processes results and extracts useful data for analysis and further sampling.
docstr: Process outputs to extract useful data.
code: def _process_results(self):
      """Process outputs to extract useful data."""
      if unnest.has_nested(self.kernel, "reducer"):
          reducers = unnest.get_outermost(self.kernel, "reducer")
          # Finalize streaming calculations.
          self.reductions = nest.map_structure_up_to(
              reducers,
              lambda r, s: r.finalize(s),
              reducers,
              unnest.get_outermost(self.results, "reduction_results"),
              check_types=False,
          )
  
          # Grab useful reductions.
          def process_reductions(reducer, reduction):
              if isinstance(reducer, tracing_reducer.TracingReducer):
                  self.all_states, self.trace = reduction
  
          nest.map_structure_up_to(
              reducers,
              process_reductions,
              reducers,
              self.reductions,
              check_types=False,
          )
  
      if unnest.has_nested(self.results, "new_step_size"):
          self.new_step_size = unnest.get_outermost(
              self.results, "new_step_size"
          )
  
file_path: probability/tensorflow_probability/python/experimental/mcmc/kernel_outputs.py
imports: import tensorflow.compat.v2
  from tensorflow_probability.python.experimental.mcmc import tracing_reducer
  from tensorflow_probability.python.internal import unnest
  from tensorflow.python.util import nest
label_desc: Use image node_id 2 for calling the KernelOutputs obj's underlying member method code with example usage: obj._process_results() without return types