code: def test_preserved_annotations():
      @T.prim_func
      def before(A: T.Buffer(8, "float32"), B: T.Buffer(8, "float32")):
          for i in T.serial(
              8, annotations={"k_0": 1, "k_1": [2, 3], "k_2": 3.14}
          ):
              with T.block("block"):
                  T.block_attr({"k_3": "oops"})
                  B[i] = A[i] + 1.0
  
      @T.prim_func
      def after(A: T.Buffer(8, "float32"), B: T.Buffer(8, "float32")):
          for i in T.serial(
              8, annotations={"k_0": 1, "k_1": [2, 3], "k_2": 3.14}
          ):
              B[i] = A[i] + 1.0
  
      mod = tvm.IRModule.from_expr(
          before.with_attr("global_symbol", "main")
      )
      mod = tvm.tir.transform.LowerOpaqueBlock()(mod)
      tvm.ir.assert_structural_equal(
          mod["main"], after.with_attr("global_symbol", "main")
      )
  
imports: import tvm
  import tvm.testing
  from tvm import te
  from tvm.script import tir
label_desc: Use image node_id 32 for calling a global function with example usage: test_preserved_annotations() without return types