code: def test_loop_with_struct_of_strings(self):
      def loop_func(recur_f, my_struct):
          return hl.if_else(
              hl.len(my_struct.s1) > hl.len(my_struct.s2),
              my_struct,
              recur_f(
                  hl.struct(
                      s1=my_struct.s1 + my_struct.s2[-1],
                      s2=my_struct.s2[:-1],
                  )
              ),
          )
  
      initial_struct = hl.struct(s1="a", s2="gfedcb")
      assert hl.eval(
          hl.experimental.loop(
              loop_func,
              hl.tstruct(s1=hl.tstr, s2=hl.tstr),
              initial_struct,
          )
      ) == hl.Struct(s1="abcd", s2="gfe")
  
imports: import numpy
  import hail
  import unittest
  import pytest
  from ..helpers import *
  from hail.utils import new_temp_file
label_desc: Use image node_id 21 for calling the Tests obj's underlying member method code with example usage: obj.test_loop_with_struct_of_strings() and returns: hl