[TIR/Relay] why tvm.tir api generates relay IR

Hello, I am also struggling the tvm.transform.Sequential API usage,could you please help me to understand the following code piece ?

# driver/build_module.py下面的_build_for_device函数
opt_mixed += [
        tvm.tir.transform.ThreadSync("shared"),
        tvm.tir.transform.ThreadSync("warp"),
        tvm.tir.transform.InferFragment(),
        tvm.tir.transform.LowerThreadAllreduce(),
        tvm.tir.transform.MakePackedAPI(),
        tvm.tir.transform.SplitHostDevice(),
    ]
mod_mixed = tvm.transform.Sequential(opt_mixed)(mod_mixed)

Basically my questions are:

  1. Where is this 2nd paramter mod_mixed passed to in the opt_mixed listed functions? The functions in the list actually does not need this IRModule param as an input.
  2. When I dump the final output of mod_mixed, it is a IRModule that contains Relay Expressions. But according to the doc, the tvm.tir API is used to convert Relay IR to lower IR right ? So why mod_mixed still contains the Relay Expression.

I guess that I mixed up some understandings, please help, thanks.

The reason might be IRModule.astext() method will parse the Module in Relay IR for better understanding, I guess. Which means astext() can parse IRModule back to Relay IR. Correct me if I misunderstood, thanks.