code: def _advance_to_solution_time(
      time_id,
      solver_state,
      diagnostics,
      solutions_arrays,
      times_array,
      step_fn,
      validate_args=False,
  ):
      """Advances solution to the next time point, integrating as necessary.
  
      Performs a series of Runge-Kutta steps updating `solver_state` until the
      target time `times_array[time_id]` is reached. The value of the solution at
      the target time is then obtained using 4th order interpolation.
  
      Args:
        time_id: Integer `Tensor` - index of target time in `times_array`.
        solver_state: `_DopriSolverInternalState` - solver state.
        diagnostics: `_DopriDiagnostics` - info on the current `_solve` call.
        solutions_arrays: `TensorArray`s for storing solutions at desired time steps
        times_array: `TensorArray` that specifies the list times where solutions
          should be obtained.
        step_fn: Partial `Dopri._step` method that performs a single step updating
          the `solver_state`, `diagnostics` and `solver_state`.
        validate_args: Python `bool` indicating whether to validate inputs.
          Default value: False.
  
      Returns:
        time_id: Integer index of next target time.
        solver_state: Updated solver state.
        diagnostics: Updated info on current `_solve` call.
        solutions_array: `TensorArray` storing solutions up to returned `time_id`
          target time.
      """
      with tf.name_scope("advance_to_solution_time"):
          # Perform integration steps until we are past the desired time step.
          def step_cond(solver_state, _):
              return times_array[time_id] >= solver_state.current_time
  
          solver_state, diagnostics = tf.while_loop(
              step_cond, step_fn, (solver_state, diagnostics)
          )
          y, _ = _interpolate_solution_at(
              times_array[time_id], solver_state, validate_args
          )
          solutions_arrays = _write_solution_components(
              y, solutions_arrays, time_id
          )
          return (
              time_id + 1,
              solver_state,
              diagnostics,
              solutions_arrays,
          )
  
imports: import collections
  import functools
  import tensorflow.compat.v2
  from tensorflow_probability.python.internal import assert_util
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.math.ode import base
  from tensorflow_probability.python.math.ode import runge_kutta_util
  from tensorflow_probability.python.math.ode import util
  from tensorflow.python.util import nest
label_desc: Use image node_id 2 for calling a global function with example usage: _advance_to_solution_time(time_id, solver_state, diagnostics, solutions_arrays, times_array, step_fn, validate_args) and returns: unknown,  solver_state,  diagnostics,  solutions_arrays, unknown