code: def while_loop(
      cond,
      body,
      loop_vars,
      maximum_iterations=None,
  ):
      current_iter = 0
      iteration_check = (
          lambda iter: maximum_iterations is None
          or iter < maximum_iterations
      )
      loop_vars = tuple([convert_to_tensor(v) for v in loop_vars])
      while cond(*loop_vars) and iteration_check(current_iter):
          loop_vars = body(*loop_vars)
          if not isinstance(loop_vars, (list, tuple)):
              loop_vars = (loop_vars,)
          loop_vars = tuple(loop_vars)
          current_iter += 1
      return loop_vars
  
imports: import numpy
  import tree
  from keras.backend.common import KerasVariable
  from keras.backend.common import standardize_dtype
  from keras.backend.common.dtypes import result_type
  from keras.backend.common.keras_tensor import KerasTensor
  from keras.backend.common.stateless_scope import StatelessScope
  from keras.utils.nest import pack_sequence_as
label_desc: Use image node_id 13 for calling a global function with example usage: while_loop(cond, body, loop_vars, maximum_iterations) and returns: loop_vars