code: def test_hadoop_glob_heterogenous_structure(self):
      with hl.TemporaryDirectory() as dirname:
          touch(dirname + "/abc/cat")
          touch(dirname + "/abc/dog")
          touch(dirname + "/def/cat")
          touch(dirname + "/def/dog")
          touch(dirname + "/ghi/cat")
          touch(dirname + "/ghi/cat")
          dirname = normalize_path(dirname)
  
          actual = {x["path"] for x in hl.hadoop_ls(dirname + "/*/cat")}
          expected = {
              dirname + "/abc/cat",
              dirname + "/def/cat",
              dirname + "/ghi/cat",
          }
          assert actual == expected
  
          actual = {x["path"] for x in hl.hadoop_ls(dirname + "/*/dog")}
          expected = {
              dirname + "/abc/dog",
              dirname + "/def/dog",
          }
          assert actual == expected
  
imports: import json
  import unittest
  import hail
  from hail.utils import *
  from hail.utils.misc import escape_str, escape_id
  from hail.utils.java import FatalError
  from hail.utils.linkedlist import LinkedList
  from ..helpers import *
label_desc: Use image node_id 13 for calling the Tests obj's underlying member method code with example usage: obj.test_hadoop_glob_heterogenous_structure() without return types