You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by tq...@apache.org on 2026/10/04 00:33:48 UTC

(tvm-site) branch asf-site updated: deploying docs (apache/tvm@5128fc065591cc4b6e2a0fc9b51718611cc4c0ea)

This is an automated email from the ASF dual-hosted git repository.

tqchen pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/tvm-site.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 904068ceae1 deploying docs (apache/tvm@5128fc065591cc4b6e2a0fc9b51718611cc4c0ea)
904068ceae1 is described below

commit 904068ceae1873e55ba0f1adcbda31e049239b83
Author: tvm-bot <95...@users.noreply.github.com>
AuthorDate: Sun Oct 4 00:33:39 2026 +0000

    deploying docs (apache/tvm@5128fc065591cc4b6e2a0fc9b51718611cc4c0ea)
---
 .../import_model.zip                               |  Bin 35138 -> 35138 bytes
 .../dlight_gpu_scheduling.zip                      |  Bin 26311 -> 26311 bytes
 .../11c11e53c7dace51a8be968ee169ed0d/ir_module.zip |  Bin 23756 -> 23756 bytes
 .../tir_transformation.zip                         |  Bin 15990 -> 15990 bytes
 .../meta_schedule.zip                              |  Bin 24239 -> 24239 bytes
 .../mix_python_and_tvm_with_pymodule.zip           |  Bin 38278 -> 38278 bytes
 .../relax_creation.zip                             |  Bin 22298 -> 22298 bytes
 .../relax_transformation.zip                       |  Bin 11480 -> 11480 bytes
 .../optimize_llm.zip                               |  Bin 53997 -> 53997 bytes
 .../bring_your_own_codegen.zip                     |  Bin 36295 -> 36295 bytes
 .../e2e_opt_model.zip                              |  Bin 14479 -> 14479 bytes
 .../quick_start.zip                                |  Bin 16252 -> 16252 bytes
 .../export_and_load_executable.zip                 |  Bin 31408 -> 31408 bytes
 .../tir_creation.zip                               |  Bin 24476 -> 24476 bytes
 .../cross_compilation_and_rpc.zip                  |  Bin 62286 -> 62286 bytes
 .../customize_opt.zip                              |  Bin 20522 -> 20522 bytes
 .../relax/tutorials/sg_execution_times.rst         |    6 +-
 .../tensor_ir/tutorials/sg_execution_times.rst     |   10 +-
 .../tensor_ir/tutorials/tir_transformation.rst     |    6 +-
 docs/_sources/get_started/tutorials/ir_module.rst  |    8 +-
 .../_sources/get_started/tutorials/quick_start.rst |    4 +-
 .../get_started/tutorials/sg_execution_times.rst   |    6 +-
 .../how_to/tutorials/cross_compilation_and_rpc.rst |    6 +-
 docs/_sources/how_to/tutorials/e2e_opt_model.rst   |    2 +-
 .../how_to/tutorials/sg_execution_times.rst        |   16 +-
 docs/_sources/sg_execution_times.rst               |   32 +-
 docs/commit_hash                                   |    2 +-
 .../relax/tutorials/sg_execution_times.html        |    6 +-
 .../tensor_ir/tutorials/sg_execution_times.html    |   10 +-
 .../tensor_ir/tutorials/tir_transformation.html    |    6 +-
 docs/get_started/tutorials/ir_module.html          |    8 +-
 docs/get_started/tutorials/quick_start.html        |    4 +-
 docs/get_started/tutorials/sg_execution_times.html |    6 +-
 .../tutorials/cross_compilation_and_rpc.html       |    6 +-
 docs/how_to/tutorials/e2e_opt_model.html           |    4 +-
 docs/how_to/tutorials/sg_execution_times.html      |   16 +-
 docs/reference/api/doxygen/analyzer_8h_source.html |    6 +-
 .../api/doxygen/axis__group__graph_8h.html         |    6 +-
 .../api/doxygen/axis__group__graph_8h_source.html  |   24 +-
 .../api/doxygen/base__expr_8h_source.html          |  546 ++--
 .../api/doxygen/binding__rewrite_8h_source.html    |   14 +-
 .../api/doxygen/block__builder_8h_source.html      |    8 +-
 docs/reference/api/doxygen/bnn_8h_source.html      |   10 +-
 docs/reference/api/doxygen/bound_8h_source.html    |    2 +-
 docs/reference/api/doxygen/broadcast_8h.html       |    2 +-
 docs/reference/api/doxygen/bytecode_8h_source.html |    2 +-
 .../api/doxygen/classtvm_1_1BaseFunc-members.html  |    6 +-
 .../api/doxygen/classtvm_1_1BaseFunc.html          |   51 +-
 .../api/doxygen/classtvm_1_1BaseFuncNode.html      |    2 +-
 .../classtvm_1_1BaseFuncNode__inherit__graph.svg   |  216 +-
 .../doxygen/classtvm_1_1BaseFunc__coll__graph.svg  |   80 +-
 .../classtvm_1_1BaseFunc__inherit__graph.svg       |  190 +-
 .../api/doxygen/classtvm_1_1Call-members.html      |    6 +-
 docs/reference/api/doxygen/classtvm_1_1Call.html   |   50 +-
 .../api/doxygen/classtvm_1_1CallNode-members.html  |    2 -
 .../api/doxygen/classtvm_1_1CallNode.html          |   63 +-
 .../doxygen/classtvm_1_1CallNode__coll__graph.svg  |  248 +-
 .../classtvm_1_1CallNode__inherit__graph.svg       |   84 +-
 .../api/doxygen/classtvm_1_1Call__coll__graph.svg  |   98 +-
 .../doxygen/classtvm_1_1Call__inherit__graph.svg   |   98 +-
 .../api/doxygen/classtvm_1_1Constant-members.html  |    6 +-
 .../api/doxygen/classtvm_1_1Constant.html          |   51 +-
 .../doxygen/classtvm_1_1Constant__coll__graph.svg  |   80 +-
 .../classtvm_1_1Constant__inherit__graph.svg       |  182 +-
 .../doxygen/classtvm_1_1DataTypeImm-members.html   |   19 +-
 .../api/doxygen/classtvm_1_1DataTypeImm.html       |   56 +-
 .../classtvm_1_1DataTypeImm__coll__graph.svg       |  114 +-
 .../classtvm_1_1DataTypeImm__inherit__graph.svg    |  114 +-
 .../api/doxygen/classtvm_1_1Expr-members.html      |    9 +-
 docs/reference/api/doxygen/classtvm_1_1Expr.html   |   45 +-
 .../api/doxygen/classtvm_1_1ExprMutator.html       |    2 +-
 .../classtvm_1_1ExprMutator__inherit__graph.svg    |  159 +-
 .../classtvm_1_1ExprNode__inherit__graph.svg       | 1474 ++++-----
 .../api/doxygen/classtvm_1_1Expr__coll__graph.svg  |   56 +-
 .../doxygen/classtvm_1_1Expr__inherit__graph.svg   | 2562 +++++++--------
 .../api/doxygen/classtvm_1_1FloatImm-members.html  |   18 +-
 .../api/doxygen/classtvm_1_1FloatImm.html          |   62 +-
 .../doxygen/classtvm_1_1FloatImm__coll__graph.svg  |  172 +-
 .../classtvm_1_1FloatImm__inherit__graph.svg       |  172 +-
 .../doxygen/classtvm_1_1GenericConst-members.html  |   17 +-
 .../api/doxygen/classtvm_1_1GenericConst.html      |   56 +-
 .../classtvm_1_1GenericConst__coll__graph.svg      |  114 +-
 .../classtvm_1_1GenericConst__inherit__graph.svg   |  114 +-
 .../api/doxygen/classtvm_1_1GlobalVar-members.html |    8 +-
 .../api/doxygen/classtvm_1_1GlobalVar.html         |   50 +-
 .../doxygen/classtvm_1_1GlobalVar__coll__graph.svg |   90 +-
 .../classtvm_1_1GlobalVar__inherit__graph.svg      |   90 +-
 .../api/doxygen/classtvm_1_1IntExpr-members.html   |   23 +-
 .../reference/api/doxygen/classtvm_1_1IntExpr.html |   32 +-
 .../doxygen/classtvm_1_1IntExpr__coll__graph.svg   |  160 +-
 .../classtvm_1_1IntExpr__inherit__graph.svg        |  160 +-
 .../api/doxygen/classtvm_1_1IntImm-members.html    |   28 +-
 docs/reference/api/doxygen/classtvm_1_1IntImm.html |   64 +-
 .../doxygen/classtvm_1_1IntImm__coll__graph.svg    |  196 +-
 .../doxygen/classtvm_1_1IntImm__inherit__graph.svg |  196 +-
 .../api/doxygen/classtvm_1_1ObjectFunctor.html     |    6 +-
 .../api/doxygen/classtvm_1_1ObjectMutator.html     |    2 +-
 .../classtvm_1_1ObjectMutator__inherit__graph.svg  |  159 +-
 .../api/doxygen/classtvm_1_1Op-members.html        |   23 +-
 docs/reference/api/doxygen/classtvm_1_1Op.html     |   10 +-
 .../api/doxygen/classtvm_1_1Op__coll__graph.svg    |   56 +-
 .../api/doxygen/classtvm_1_1Op__inherit__graph.svg |   56 +-
 .../doxygen/classtvm_1_1OpaqueExpr-members.html    |    6 +-
 .../api/doxygen/classtvm_1_1OpaqueExpr.html        |   51 +-
 .../classtvm_1_1OpaqueExprNode__inherit__graph.svg |   38 +-
 .../classtvm_1_1OpaqueExpr__coll__graph.svg        |   80 +-
 .../classtvm_1_1OpaqueExpr__inherit__graph.svg     |  148 +-
 .../api/doxygen/classtvm_1_1PrimExpr-members.html  |   21 +-
 .../api/doxygen/classtvm_1_1PrimExpr.html          |   60 +-
 .../classtvm_1_1PrimExprConvertibleNode.html       |    2 +-
 ..._1_1PrimExprConvertibleNode__inherit__graph.svg |   80 +-
 .../doxygen/classtvm_1_1PrimExpr__coll__graph.svg  |  132 +-
 .../classtvm_1_1PrimExpr__inherit__graph.svg       | 1704 +++++-----
 .../api/doxygen/classtvm_1_1PrimVar-members.html   |   28 +-
 .../reference/api/doxygen/classtvm_1_1PrimVar.html |   64 +-
 .../doxygen/classtvm_1_1PrimVar__coll__graph.svg   |  182 +-
 .../classtvm_1_1PrimVar__inherit__graph.svg        |  182 +-
 .../api/doxygen/classtvm_1_1RangeNode-members.html |    2 +-
 .../api/doxygen/classtvm_1_1RangeNode.html         |   17 +-
 .../doxygen/classtvm_1_1RangeNode__coll__graph.svg |  228 +-
 .../api/doxygen/classtvm_1_1StringImm-members.html |   11 +-
 .../api/doxygen/classtvm_1_1StringImm.html         |   56 +-
 .../doxygen/classtvm_1_1StringImm__coll__graph.svg |  114 +-
 .../classtvm_1_1StringImm__inherit__graph.svg      |  114 +-
 .../doxygen/classtvm_1_1TensorLoad-members.html    |   28 +-
 .../api/doxygen/classtvm_1_1TensorLoad.html        |   63 +-
 .../classtvm_1_1TensorLoadNode-members.html        |    2 -
 .../api/doxygen/classtvm_1_1TensorLoadNode.html    |   63 +-
 .../classtvm_1_1TensorLoadNode__coll__graph.svg    |  216 +-
 .../classtvm_1_1TensorLoadNode__inherit__graph.svg |   80 +-
 .../classtvm_1_1TensorLoad__coll__graph.svg        |  168 +-
 .../classtvm_1_1TensorLoad__inherit__graph.svg     |  168 +-
 .../doxygen/classtvm_1_1TensorRegion-members.html  |   14 +-
 .../api/doxygen/classtvm_1_1TensorRegion.html      |   50 +-
 .../classtvm_1_1TensorRegionNode-members.html      |    2 -
 .../api/doxygen/classtvm_1_1TensorRegionNode.html  |   63 +-
 .../classtvm_1_1TensorRegionNode__coll__graph.svg  |  220 +-
 ...lasstvm_1_1TensorRegionNode__inherit__graph.svg |   82 +-
 .../classtvm_1_1TensorRegion__coll__graph.svg      |   90 +-
 .../classtvm_1_1TensorRegion__inherit__graph.svg   |   90 +-
 .../api/doxygen/classtvm_1_1Tuple-members.html     |   14 +-
 docs/reference/api/doxygen/classtvm_1_1Tuple.html  |   50 +-
 .../doxygen/classtvm_1_1TupleGetItem-members.html  |   14 +-
 .../api/doxygen/classtvm_1_1TupleGetItem.html      |   50 +-
 .../classtvm_1_1TupleGetItemNode-members.html      |    2 -
 .../api/doxygen/classtvm_1_1TupleGetItemNode.html  |   63 +-
 .../classtvm_1_1TupleGetItemNode__coll__graph.svg  |  216 +-
 ...lasstvm_1_1TupleGetItemNode__inherit__graph.svg |   80 +-
 .../classtvm_1_1TupleGetItem__coll__graph.svg      |   90 +-
 .../classtvm_1_1TupleGetItem__inherit__graph.svg   |   90 +-
 .../api/doxygen/classtvm_1_1Tuple__coll__graph.svg |   90 +-
 .../doxygen/classtvm_1_1Tuple__inherit__graph.svg  |   90 +-
 .../api/doxygen/classtvm_1_1TypeNode.html          |    2 +-
 .../classtvm_1_1TypeNode__inherit__graph.svg       |  620 ++--
 .../api/doxygen/classtvm_1_1TypedExpr-members.html |   14 +-
 .../api/doxygen/classtvm_1_1TypedExpr.html         |   53 +-
 .../doxygen/classtvm_1_1TypedExpr__coll__graph.svg |   92 +-
 .../classtvm_1_1TypedExpr__inherit__graph.svg      |   92 +-
 .../api/doxygen/classtvm_1_1Var-members.html       |   14 +-
 docs/reference/api/doxygen/classtvm_1_1Var.html    |   50 +-
 .../api/doxygen/classtvm_1_1Var__coll__graph.svg   |  100 +-
 .../doxygen/classtvm_1_1Var__inherit__graph.svg    |  196 +-
 .../doxygen/classtvm_1_1prim_1_1Add-members.html   |   16 +-
 .../api/doxygen/classtvm_1_1prim_1_1Add.html       |   62 +-
 .../classtvm_1_1prim_1_1AddNode-members.html       |    2 -
 .../api/doxygen/classtvm_1_1prim_1_1AddNode.html   |    8 +-
 .../classtvm_1_1prim_1_1AddNode__coll__graph.svg   |  322 +-
 ...classtvm_1_1prim_1_1AddNode__inherit__graph.svg |   90 +-
 .../classtvm_1_1prim_1_1Add__coll__graph.svg       |  172 +-
 .../classtvm_1_1prim_1_1Add__inherit__graph.svg    |  172 +-
 .../doxygen/classtvm_1_1prim_1_1And-members.html   |   16 +-
 .../api/doxygen/classtvm_1_1prim_1_1And.html       |   62 +-
 .../classtvm_1_1prim_1_1AndNode-members.html       |    2 -
 .../api/doxygen/classtvm_1_1prim_1_1AndNode.html   |   73 +-
 .../classtvm_1_1prim_1_1AndNode__coll__graph.svg   |  290 +-
 ...classtvm_1_1prim_1_1AndNode__inherit__graph.svg |   80 +-
 .../classtvm_1_1prim_1_1And__coll__graph.svg       |  172 +-
 .../classtvm_1_1prim_1_1And__inherit__graph.svg    |  172 +-
 .../classtvm_1_1prim_1_1BinaryOpNode-members.html  |    2 -
 .../doxygen/classtvm_1_1prim_1_1BinaryOpNode.html  |   77 +-
 ...asstvm_1_1prim_1_1BinaryOpNode__coll__graph.svg |  298 +-
 ...tvm_1_1prim_1_1BinaryOpNode__inherit__graph.svg |   84 +-
 .../classtvm_1_1prim_1_1BitwiseAnd-members.html    |   16 +-
 .../doxygen/classtvm_1_1prim_1_1BitwiseAnd.html    |   62 +-
 ...classtvm_1_1prim_1_1BitwiseAndNode-members.html |    2 -
 .../classtvm_1_1prim_1_1BitwiseAndNode.html        |    8 +-
 ...stvm_1_1prim_1_1BitwiseAndNode__coll__graph.svg |  322 +-
 ...m_1_1prim_1_1BitwiseAndNode__inherit__graph.svg |   90 +-
 ...classtvm_1_1prim_1_1BitwiseAnd__coll__graph.svg |  172 +-
 ...sstvm_1_1prim_1_1BitwiseAnd__inherit__graph.svg |  172 +-
 .../classtvm_1_1prim_1_1BitwiseNot-members.html    |   16 +-
 .../doxygen/classtvm_1_1prim_1_1BitwiseNot.html    |   62 +-
 ...classtvm_1_1prim_1_1BitwiseNotNode-members.html |    2 -
 .../classtvm_1_1prim_1_1BitwiseNotNode.html        |   63 +-
 ...stvm_1_1prim_1_1BitwiseNotNode__coll__graph.svg |  288 +-
 ...m_1_1prim_1_1BitwiseNotNode__inherit__graph.svg |   78 +-
 ...classtvm_1_1prim_1_1BitwiseNot__coll__graph.svg |  172 +-
 ...sstvm_1_1prim_1_1BitwiseNot__inherit__graph.svg |  172 +-
 .../classtvm_1_1prim_1_1BitwiseOr-members.html     |   16 +-
 .../api/doxygen/classtvm_1_1prim_1_1BitwiseOr.html |   62 +-
 .../classtvm_1_1prim_1_1BitwiseOrNode-members.html |    2 -
 .../doxygen/classtvm_1_1prim_1_1BitwiseOrNode.html |    8 +-
 ...sstvm_1_1prim_1_1BitwiseOrNode__coll__graph.svg |  322 +-
 ...vm_1_1prim_1_1BitwiseOrNode__inherit__graph.svg |   90 +-
 .../classtvm_1_1prim_1_1BitwiseOr__coll__graph.svg |  172 +-
 ...asstvm_1_1prim_1_1BitwiseOr__inherit__graph.svg |  172 +-
 .../classtvm_1_1prim_1_1BitwiseXor-members.html    |   16 +-
 .../doxygen/classtvm_1_1prim_1_1BitwiseXor.html    |   62 +-
 ...classtvm_1_1prim_1_1BitwiseXorNode-members.html |    2 -
 .../classtvm_1_1prim_1_1BitwiseXorNode.html        |    8 +-
 ...stvm_1_1prim_1_1BitwiseXorNode__coll__graph.svg |  322 +-
 ...m_1_1prim_1_1BitwiseXorNode__inherit__graph.svg |   90 +-
 ...classtvm_1_1prim_1_1BitwiseXor__coll__graph.svg |  172 +-
 ...sstvm_1_1prim_1_1BitwiseXor__inherit__graph.svg |  172 +-
 .../classtvm_1_1prim_1_1Broadcast-members.html     |   16 +-
 .../api/doxygen/classtvm_1_1prim_1_1Broadcast.html |   62 +-
 .../classtvm_1_1prim_1_1BroadcastNode-members.html |    2 -
 .../doxygen/classtvm_1_1prim_1_1BroadcastNode.html |   73 +-
 ...sstvm_1_1prim_1_1BroadcastNode__coll__graph.svg |  290 +-
 ...vm_1_1prim_1_1BroadcastNode__inherit__graph.svg |   80 +-
 .../classtvm_1_1prim_1_1Broadcast__coll__graph.svg |  172 +-
 ...asstvm_1_1prim_1_1Broadcast__inherit__graph.svg |  172 +-
 .../doxygen/classtvm_1_1prim_1_1Cast-members.html  |   16 +-
 .../api/doxygen/classtvm_1_1prim_1_1Cast.html      |   62 +-
 .../classtvm_1_1prim_1_1CastNode-members.html      |    2 -
 .../api/doxygen/classtvm_1_1prim_1_1CastNode.html  |   63 +-
 .../classtvm_1_1prim_1_1CastNode__coll__graph.svg  |  288 +-
 ...lasstvm_1_1prim_1_1CastNode__inherit__graph.svg |   78 +-
 .../classtvm_1_1prim_1_1Cast__coll__graph.svg      |  172 +-
 .../classtvm_1_1prim_1_1Cast__inherit__graph.svg   |  172 +-
 .../classtvm_1_1prim_1_1CmpOpNode-members.html     |    2 -
 .../api/doxygen/classtvm_1_1prim_1_1CmpOpNode.html |   77 +-
 .../classtvm_1_1prim_1_1CmpOpNode__coll__graph.svg |  298 +-
 ...asstvm_1_1prim_1_1CmpOpNode__inherit__graph.svg |   84 +-
 .../doxygen/classtvm_1_1prim_1_1Div-members.html   |   16 +-
 .../api/doxygen/classtvm_1_1prim_1_1Div.html       |   62 +-
 .../classtvm_1_1prim_1_1DivNode-members.html       |    2 -
 .../api/doxygen/classtvm_1_1prim_1_1DivNode.html   |    8 +-
 .../classtvm_1_1prim_1_1DivNode__coll__graph.svg   |  322 +-
 ...classtvm_1_1prim_1_1DivNode__inherit__graph.svg |   90 +-
 .../classtvm_1_1prim_1_1Div__coll__graph.svg       |  172 +-
 .../classtvm_1_1prim_1_1Div__inherit__graph.svg    |  172 +-
 .../doxygen/classtvm_1_1prim_1_1EQ-members.html    |   16 +-
 .../api/doxygen/classtvm_1_1prim_1_1EQ.html        |   62 +-
 .../classtvm_1_1prim_1_1EQNode-members.html        |    2 -
 .../api/doxygen/classtvm_1_1prim_1_1EQNode.html    |    8 +-
 .../classtvm_1_1prim_1_1EQNode__coll__graph.svg    |  322 +-
 .../classtvm_1_1prim_1_1EQNode__inherit__graph.svg |   90 +-
 .../classtvm_1_1prim_1_1EQ__coll__graph.svg        |  172 +-
 .../classtvm_1_1prim_1_1EQ__inherit__graph.svg     |  172 +-
 .../classtvm_1_1prim_1_1FloorDiv-members.html      |   18 +-
 .../api/doxygen/classtvm_1_1prim_1_1FloorDiv.html  |   62 +-
 .../classtvm_1_1prim_1_1FloorDivNode-members.html  |    2 -
 .../doxygen/classtvm_1_1prim_1_1FloorDivNode.html  |    8 +-
 ...asstvm_1_1prim_1_1FloorDivNode__coll__graph.svg |  322 +-
 ...tvm_1_1prim_1_1FloorDivNode__inherit__graph.svg |   90 +-
 .../classtvm_1_1prim_1_1FloorDiv__coll__graph.svg  |  172 +-
 ...lasstvm_1_1prim_1_1FloorDiv__inherit__graph.svg |  172 +-
 .../classtvm_1_1prim_1_1FloorMod-members.html      |   18 +-
 .../api/doxygen/classtvm_1_1prim_1_1FloorMod.html  |   62 +-
 .../classtvm_1_1prim_1_1FloorModNode-members.html  |    2 -
 .../doxygen/classtvm_1_1prim_1_1FloorModNode.html  |    8 +-
 ...asstvm_1_1prim_1_1FloorModNode__coll__graph.svg |  322 +-
 ...tvm_1_1prim_1_1FloorModNode__inherit__graph.svg |   90 +-
 .../classtvm_1_1prim_1_1FloorMod__coll__graph.svg  |  172 +-
 ...lasstvm_1_1prim_1_1FloorMod__inherit__graph.svg |  172 +-
 .../doxygen/classtvm_1_1prim_1_1GE-members.html    |   18 +-
 .../api/doxygen/classtvm_1_1prim_1_1GE.html        |   62 +-
 .../classtvm_1_1prim_1_1GENode-members.html        |    2 -
 .../api/doxygen/classtvm_1_1prim_1_1GENode.html    |    8 +-
 .../classtvm_1_1prim_1_1GENode__coll__graph.svg    |  322 +-
 .../classtvm_1_1prim_1_1GENode__inherit__graph.svg |   90 +-
 .../classtvm_1_1prim_1_1GE__coll__graph.svg        |  172 +-
 .../classtvm_1_1prim_1_1GE__inherit__graph.svg     |  172 +-
 .../doxygen/classtvm_1_1prim_1_1GT-members.html    |   18 +-
 .../api/doxygen/classtvm_1_1prim_1_1GT.html        |   62 +-
 .../classtvm_1_1prim_1_1GTNode-members.html        |    2 -
 .../api/doxygen/classtvm_1_1prim_1_1GTNode.html    |    8 +-
 .../classtvm_1_1prim_1_1GTNode__coll__graph.svg    |  322 +-
 .../classtvm_1_1prim_1_1GTNode__inherit__graph.svg |   90 +-
 .../classtvm_1_1prim_1_1GT__coll__graph.svg        |  172 +-
 .../classtvm_1_1prim_1_1GT__inherit__graph.svg     |  172 +-
 .../doxygen/classtvm_1_1prim_1_1LE-members.html    |   18 +-
 .../api/doxygen/classtvm_1_1prim_1_1LE.html        |   62 +-
 .../classtvm_1_1prim_1_1LE__coll__graph.svg        |  172 +-
 .../classtvm_1_1prim_1_1LE__inherit__graph.svg     |  172 +-
 .../classtvm_1_1prim_1_1LShift-members.html        |   18 +-
 .../api/doxygen/classtvm_1_1prim_1_1LShift.html    |   62 +-
 .../classtvm_1_1prim_1_1LShiftNode-members.html    |    2 -
 .../doxygen/classtvm_1_1prim_1_1LShiftNode.html    |    8 +-
 ...classtvm_1_1prim_1_1LShiftNode__coll__graph.svg |  322 +-
 ...sstvm_1_1prim_1_1LShiftNode__inherit__graph.svg |   90 +-
 .../classtvm_1_1prim_1_1LShift__coll__graph.svg    |  172 +-
 .../classtvm_1_1prim_1_1LShift__inherit__graph.svg |  172 +-
 .../doxygen/classtvm_1_1prim_1_1LT-members.html    |   18 +-
 .../api/doxygen/classtvm_1_1prim_1_1LT.html        |   62 +-
 .../classtvm_1_1prim_1_1LTNode-members.html        |    2 -
 .../api/doxygen/classtvm_1_1prim_1_1LTNode.html    |    8 +-
 .../classtvm_1_1prim_1_1LTNode__coll__graph.svg    |  322 +-
 .../classtvm_1_1prim_1_1LTNode__inherit__graph.svg |   90 +-
 .../classtvm_1_1prim_1_1LT__coll__graph.svg        |  172 +-
 .../classtvm_1_1prim_1_1LT__inherit__graph.svg     |  172 +-
 .../doxygen/classtvm_1_1prim_1_1Let-members.html   |   18 +-
 .../api/doxygen/classtvm_1_1prim_1_1Let.html       |   62 +-
 .../classtvm_1_1prim_1_1LetNode-members.html       |    2 -
 .../api/doxygen/classtvm_1_1prim_1_1LetNode.html   |   79 +-
 .../classtvm_1_1prim_1_1LetNode__coll__graph.svg   |  340 +-
 ...classtvm_1_1prim_1_1LetNode__inherit__graph.svg |   82 +-
 .../classtvm_1_1prim_1_1Let__coll__graph.svg       |  172 +-
 .../classtvm_1_1prim_1_1Let__inherit__graph.svg    |  172 +-
 .../doxygen/classtvm_1_1prim_1_1Max-members.html   |   18 +-
 .../api/doxygen/classtvm_1_1prim_1_1Max.html       |   62 +-
 .../classtvm_1_1prim_1_1MaxNode-members.html       |    2 -
 .../api/doxygen/classtvm_1_1prim_1_1MaxNode.html   |    8 +-
 .../classtvm_1_1prim_1_1MaxNode__coll__graph.svg   |  322 +-
 ...classtvm_1_1prim_1_1MaxNode__inherit__graph.svg |   90 +-
 .../classtvm_1_1prim_1_1Max__coll__graph.svg       |  172 +-
 .../classtvm_1_1prim_1_1Max__inherit__graph.svg    |  172 +-
 .../doxygen/classtvm_1_1prim_1_1Min-members.html   |   18 +-
 .../api/doxygen/classtvm_1_1prim_1_1Min.html       |   62 +-
 .../classtvm_1_1prim_1_1MinNode-members.html       |    2 -
 .../api/doxygen/classtvm_1_1prim_1_1MinNode.html   |    8 +-
 .../classtvm_1_1prim_1_1MinNode__coll__graph.svg   |  322 +-
 ...classtvm_1_1prim_1_1MinNode__inherit__graph.svg |   90 +-
 .../classtvm_1_1prim_1_1Min__coll__graph.svg       |  172 +-
 .../classtvm_1_1prim_1_1Min__inherit__graph.svg    |  172 +-
 .../doxygen/classtvm_1_1prim_1_1Mod-members.html   |   18 +-
 .../api/doxygen/classtvm_1_1prim_1_1Mod.html       |   62 +-
 .../classtvm_1_1prim_1_1ModNode-members.html       |    2 -
 .../api/doxygen/classtvm_1_1prim_1_1ModNode.html   |    8 +-
 .../classtvm_1_1prim_1_1ModNode__coll__graph.svg   |  322 +-
 ...classtvm_1_1prim_1_1ModNode__inherit__graph.svg |   90 +-
 .../classtvm_1_1prim_1_1Mod__coll__graph.svg       |  172 +-
 .../classtvm_1_1prim_1_1Mod__inherit__graph.svg    |  172 +-
 .../doxygen/classtvm_1_1prim_1_1Mul-members.html   |   18 +-
 .../api/doxygen/classtvm_1_1prim_1_1Mul.html       |   62 +-
 .../classtvm_1_1prim_1_1MulNode-members.html       |    2 -
 .../api/doxygen/classtvm_1_1prim_1_1MulNode.html   |    8 +-
 .../classtvm_1_1prim_1_1MulNode__coll__graph.svg   |  322 +-
 ...classtvm_1_1prim_1_1MulNode__inherit__graph.svg |   90 +-
 .../classtvm_1_1prim_1_1Mul__coll__graph.svg       |  172 +-
 .../classtvm_1_1prim_1_1Mul__inherit__graph.svg    |  172 +-
 .../doxygen/classtvm_1_1prim_1_1NE-members.html    |   18 +-
 .../api/doxygen/classtvm_1_1prim_1_1NE.html        |   62 +-
 .../classtvm_1_1prim_1_1NENode-members.html        |    2 -
 .../api/doxygen/classtvm_1_1prim_1_1NENode.html    |    8 +-
 .../classtvm_1_1prim_1_1NENode__coll__graph.svg    |  322 +-
 .../classtvm_1_1prim_1_1NENode__inherit__graph.svg |   90 +-
 .../classtvm_1_1prim_1_1NE__coll__graph.svg        |  172 +-
 .../classtvm_1_1prim_1_1NE__inherit__graph.svg     |  172 +-
 .../doxygen/classtvm_1_1prim_1_1Not-members.html   |   18 +-
 .../api/doxygen/classtvm_1_1prim_1_1Not.html       |   62 +-
 .../classtvm_1_1prim_1_1NotNode-members.html       |    2 -
 .../api/doxygen/classtvm_1_1prim_1_1NotNode.html   |   63 +-
 .../classtvm_1_1prim_1_1NotNode__coll__graph.svg   |  288 +-
 ...classtvm_1_1prim_1_1NotNode__inherit__graph.svg |   78 +-
 .../classtvm_1_1prim_1_1Not__coll__graph.svg       |  172 +-
 .../classtvm_1_1prim_1_1Not__inherit__graph.svg    |  172 +-
 .../doxygen/classtvm_1_1prim_1_1Or-members.html    |   24 +-
 .../api/doxygen/classtvm_1_1prim_1_1Or.html        |   62 +-
 .../classtvm_1_1prim_1_1OrNode-members.html        |    2 -
 .../api/doxygen/classtvm_1_1prim_1_1OrNode.html    |   73 +-
 .../classtvm_1_1prim_1_1OrNode__coll__graph.svg    |  290 +-
 .../classtvm_1_1prim_1_1OrNode__inherit__graph.svg |   80 +-
 .../classtvm_1_1prim_1_1Or__coll__graph.svg        |  172 +-
 .../classtvm_1_1prim_1_1Or__inherit__graph.svg     |  172 +-
 .../classtvm_1_1prim_1_1RShift-members.html        |   28 +-
 .../api/doxygen/classtvm_1_1prim_1_1RShift.html    |   62 +-
 .../classtvm_1_1prim_1_1RShiftNode-members.html    |    2 -
 .../doxygen/classtvm_1_1prim_1_1RShiftNode.html    |    8 +-
 ...classtvm_1_1prim_1_1RShiftNode__coll__graph.svg |  322 +-
 ...sstvm_1_1prim_1_1RShiftNode__inherit__graph.svg |   90 +-
 .../classtvm_1_1prim_1_1RShift__coll__graph.svg    |  172 +-
 .../classtvm_1_1prim_1_1RShift__inherit__graph.svg |  172 +-
 .../doxygen/classtvm_1_1prim_1_1Ramp-members.html  |   28 +-
 .../api/doxygen/classtvm_1_1prim_1_1Ramp.html      |   62 +-
 .../classtvm_1_1prim_1_1RampNode-members.html      |    2 -
 .../api/doxygen/classtvm_1_1prim_1_1RampNode.html  |   79 +-
 .../classtvm_1_1prim_1_1RampNode__coll__graph.svg  |  292 +-
 ...lasstvm_1_1prim_1_1RampNode__inherit__graph.svg |   82 +-
 .../classtvm_1_1prim_1_1Ramp__coll__graph.svg      |  172 +-
 .../classtvm_1_1prim_1_1Ramp__inherit__graph.svg   |  172 +-
 .../classtvm_1_1prim_1_1Select-members.html        |   28 +-
 .../api/doxygen/classtvm_1_1prim_1_1Select.html    |   62 +-
 .../classtvm_1_1prim_1_1SelectNode-members.html    |    2 -
 .../doxygen/classtvm_1_1prim_1_1SelectNode.html    |   79 +-
 ...classtvm_1_1prim_1_1SelectNode__coll__graph.svg |  292 +-
 ...sstvm_1_1prim_1_1SelectNode__inherit__graph.svg |   82 +-
 .../classtvm_1_1prim_1_1Select__coll__graph.svg    |  172 +-
 .../classtvm_1_1prim_1_1Select__inherit__graph.svg |  172 +-
 .../classtvm_1_1prim_1_1Shuffle-members.html       |   30 +-
 .../api/doxygen/classtvm_1_1prim_1_1Shuffle.html   |   62 +-
 .../classtvm_1_1prim_1_1Shuffle__coll__graph.svg   |  180 +-
 ...classtvm_1_1prim_1_1Shuffle__inherit__graph.svg |  180 +-
 .../doxygen/classtvm_1_1prim_1_1Sub-members.html   |   28 +-
 .../api/doxygen/classtvm_1_1prim_1_1Sub.html       |   62 +-
 .../classtvm_1_1prim_1_1SubNode-members.html       |    2 -
 .../api/doxygen/classtvm_1_1prim_1_1SubNode.html   |    8 +-
 .../classtvm_1_1prim_1_1SubNode__coll__graph.svg   |  322 +-
 ...classtvm_1_1prim_1_1SubNode__inherit__graph.svg |   90 +-
 .../classtvm_1_1prim_1_1Sub__coll__graph.svg       |  172 +-
 .../classtvm_1_1prim_1_1Sub__inherit__graph.svg    |  172 +-
 .../classtvm_1_1relax_1_1BindingNode-members.html  |    2 -
 .../doxygen/classtvm_1_1relax_1_1BindingNode.html  |   63 +-
 ...asstvm_1_1relax_1_1BindingNode__coll__graph.svg |  178 +-
 ...tvm_1_1relax_1_1BindingNode__inherit__graph.svg |  104 +-
 ...m_1_1relax_1_1DFPatternNode__inherit__graph.svg |   28 +-
 ...sstvm_1_1relax_1_1DataflowBlockRewriteNode.html |    2 +-
 ...ax_1_1DataflowBlockRewriteNode__coll__graph.svg |  444 ++-
 .../classtvm_1_1relax_1_1DataflowVar-members.html  |    9 +-
 .../doxygen/classtvm_1_1relax_1_1DataflowVar.html  |   56 +-
 ...asstvm_1_1relax_1_1DataflowVar__coll__graph.svg |  128 +-
 ...tvm_1_1relax_1_1DataflowVar__inherit__graph.svg |  128 +-
 ...asstvm_1_1relax_1_1ExprPatternNode-members.html |    2 -
 .../classtvm_1_1relax_1_1ExprPatternNode.html      |   63 +-
 ...vm_1_1relax_1_1ExprPatternNode__coll__graph.svg |  132 +-
 ...1_1relax_1_1ExprPatternNode__inherit__graph.svg |   68 +-
 .../classtvm_1_1relax_1_1ExternFunc-members.html   |   17 +-
 .../doxygen/classtvm_1_1relax_1_1ExternFunc.html   |   58 +-
 ...lasstvm_1_1relax_1_1ExternFunc__coll__graph.svg |  118 +-
 ...stvm_1_1relax_1_1ExternFunc__inherit__graph.svg |  118 +-
 .../classtvm_1_1relax_1_1Function-members.html     |   19 +-
 .../api/doxygen/classtvm_1_1relax_1_1Function.html |   56 +-
 .../classtvm_1_1relax_1_1FunctionNode-members.html |    2 -
 .../doxygen/classtvm_1_1relax_1_1FunctionNode.html |   63 +-
 ...sstvm_1_1relax_1_1FunctionNode__coll__graph.svg |  412 ++-
 ...vm_1_1relax_1_1FunctionNode__inherit__graph.svg |  126 +-
 .../classtvm_1_1relax_1_1Function__coll__graph.svg |  118 +-
 ...asstvm_1_1relax_1_1Function__inherit__graph.svg |  118 +-
 .../doxygen/classtvm_1_1relax_1_1If-members.html   |    8 +-
 .../api/doxygen/classtvm_1_1relax_1_1If.html       |   50 +-
 .../classtvm_1_1relax_1_1IfNode-members.html       |    2 -
 .../api/doxygen/classtvm_1_1relax_1_1IfNode.html   |   79 +-
 .../classtvm_1_1relax_1_1IfNode__coll__graph.svg   |  298 +-
 ...classtvm_1_1relax_1_1IfNode__inherit__graph.svg |   84 +-
 .../classtvm_1_1relax_1_1If__coll__graph.svg       |   90 +-
 .../classtvm_1_1relax_1_1If__inherit__graph.svg    |   90 +-
 ...classtvm_1_1relax_1_1MatchCastNode-members.html |    4 -
 .../classtvm_1_1relax_1_1MatchCastNode.html        |   77 +-
 ...stvm_1_1relax_1_1MatchCastNode__coll__graph.svg |  262 +-
 ...m_1_1relax_1_1MatchCastNode__inherit__graph.svg |   82 +-
 ...asstvm_1_1relax_1_1MatchResultNode-members.html |    2 -
 .../classtvm_1_1relax_1_1MatchResultNode.html      |   61 +-
 ...vm_1_1relax_1_1MatchResultNode__coll__graph.svg |  158 +-
 ...1_1relax_1_1MatchResultNode__inherit__graph.svg |   46 +-
 .../doxygen/classtvm_1_1relax_1_1NestedMsg.html    |  181 +-
 .../classtvm_1_1relax_1_1SeqExpr-members.html      |   16 +-
 .../api/doxygen/classtvm_1_1relax_1_1SeqExpr.html  |   52 +-
 .../classtvm_1_1relax_1_1SeqExprNode-members.html  |    2 -
 .../doxygen/classtvm_1_1relax_1_1SeqExprNode.html  |   63 +-
 ...asstvm_1_1relax_1_1SeqExprNode__coll__graph.svg |  224 +-
 ...tvm_1_1relax_1_1SeqExprNode__inherit__graph.svg |   80 +-
 .../classtvm_1_1relax_1_1SeqExpr__coll__graph.svg  |   94 +-
 ...lasstvm_1_1relax_1_1SeqExpr__inherit__graph.svg |   94 +-
 .../classtvm_1_1relax_1_1ShapeExpr-members.html    |   14 +-
 .../doxygen/classtvm_1_1relax_1_1ShapeExpr.html    |   50 +-
 ...classtvm_1_1relax_1_1ShapeExpr__coll__graph.svg |   90 +-
 ...sstvm_1_1relax_1_1ShapeExpr__inherit__graph.svg |   90 +-
 ...lasstvm_1_1relax_1_1VarBindingNode-members.html |    4 -
 .../classtvm_1_1relax_1_1VarBindingNode.html       |   75 +-
 ...tvm_1_1relax_1_1VarBindingNode__coll__graph.svg |  234 +-
 ..._1_1relax_1_1VarBindingNode__inherit__graph.svg |   80 +-
 ...ansform_1_1PatternCheckContextNode-members.html |    2 -
 ...ax_1_1transform_1_1PatternCheckContextNode.html |   63 +-
 ...orm_1_1PatternCheckContextNode__coll__graph.svg |  124 +-
 ..._1_1PatternCheckContextNode__inherit__graph.svg |   72 +-
 ...1_1s__tir_1_1MatchBufferRegionNode-members.html |    2 -
 ...lasstvm_1_1s__tir_1_1MatchBufferRegionNode.html |   73 +-
 ...__tir_1_1MatchBufferRegionNode__coll__graph.svg |  234 +-
 ...ir_1_1MatchBufferRegionNode__inherit__graph.svg |   46 +-
 .../classtvm_1_1s__tir_1_1SBlock-members.html      |    6 +-
 .../api/doxygen/classtvm_1_1s__tir_1_1SBlock.html  |   52 +-
 .../classtvm_1_1s__tir_1_1SBlockNode-members.html  |    2 -
 .../doxygen/classtvm_1_1s__tir_1_1SBlockNode.html  |   65 +-
 ...asstvm_1_1s__tir_1_1SBlockNode__coll__graph.svg |  210 +-
 ...tvm_1_1s__tir_1_1SBlockNode__inherit__graph.svg |  104 +-
 ...lasstvm_1_1s__tir_1_1SBlockRealize-members.html |    6 +-
 .../classtvm_1_1s__tir_1_1SBlockRealize.html       |   50 +-
 ...tvm_1_1s__tir_1_1SBlockRealizeNode-members.html |    2 -
 .../classtvm_1_1s__tir_1_1SBlockRealizeNode.html   |   73 +-
 ...1_1s__tir_1_1SBlockRealizeNode__coll__graph.svg |  338 +-
 ...s__tir_1_1SBlockRealizeNode__inherit__graph.svg |   92 +-
 ...tvm_1_1s__tir_1_1SBlockRealize__coll__graph.svg |   78 +-
 ..._1_1s__tir_1_1SBlockRealize__inherit__graph.svg |   78 +-
 .../classtvm_1_1s__tir_1_1SBlock__coll__graph.svg  |   82 +-
 ...lasstvm_1_1s__tir_1_1SBlock__inherit__graph.svg |   82 +-
 ...classtvm_1_1s__tir_1_1ScheduleNode-members.html |    2 +-
 .../classtvm_1_1s__tir_1_1ScheduleNode.html        |   14 +-
 ...sstvm_1_1s__tir_1_1StmtExprMutator-members.html |  157 +-
 .../classtvm_1_1s__tir_1_1StmtExprMutator.html     |    7 +-
 ...m_1_1s__tir_1_1StmtExprMutator__coll__graph.svg |  159 +-
 ..._1s__tir_1_1StmtExprMutator__inherit__graph.svg |  159 +-
 ...stvm_1_1s__tir_1_1TensorIntrinNode-members.html |    2 -
 .../classtvm_1_1s__tir_1_1TensorIntrinNode.html    |   73 +-
 ..._1_1s__tir_1_1TensorIntrinNode__coll__graph.svg |  156 +-
 ...1s__tir_1_1TensorIntrinNode__inherit__graph.svg |   44 +-
 ...ilder_1_1IRBuilderFrameNode__inherit__graph.svg |  254 +-
 ...r__builder_1_1relax_1_1IfFrameNode-members.html |    4 +-
 ...ipt_1_1ir__builder_1_1relax_1_1IfFrameNode.html |   75 +-
 ...uilder_1_1relax_1_1IfFrameNode__coll__graph.svg |  295 +-
 ...der_1_1relax_1_1IfFrameNode__inherit__graph.svg |  128 +-
 ..._1_1ir__builder_1_1relax_1_1RelaxFrameNode.html |    2 +-
 ..._1_1relax_1_1RelaxFrameNode__inherit__graph.svg |  218 +-
 ...builder_1_1tirx_1_1AssertFrameNode-members.html |    2 -
 ..._1_1ir__builder_1_1tirx_1_1AssertFrameNode.html |   73 +-
 ...der_1_1tirx_1_1AssertFrameNode__coll__graph.svg |  384 ++-
 ..._1_1tirx_1_1AssertFrameNode__inherit__graph.svg |  130 +-
 ...__builder_1_1tirx_1_1AttrFrameNode-members.html |    2 -
 ...pt_1_1ir__builder_1_1tirx_1_1AttrFrameNode.html |   63 +-
 ...ilder_1_1tirx_1_1AttrFrameNode__coll__graph.svg |  248 +-
 ...er_1_1tirx_1_1AttrFrameNode__inherit__graph.svg |  130 +-
 ...der_1_1tirx_1_1DeclTensorFrameNode-members.html |    4 +-
 ...ir__builder_1_1tirx_1_1DeclTensorFrameNode.html |   73 +-
 ...1_1tirx_1_1DeclTensorFrameNode__coll__graph.svg |  368 +--
 ...tirx_1_1DeclTensorFrameNode__inherit__graph.svg |  130 +-
 ...ir__builder_1_1tirx_1_1IfFrameNode-members.html |    2 -
 ...ript_1_1ir__builder_1_1tirx_1_1IfFrameNode.html |   63 +-
 ...builder_1_1tirx_1_1IfFrameNode__coll__graph.svg |  318 +-
 ...lder_1_1tirx_1_1IfFrameNode__inherit__graph.svg |  130 +-
 ...r_1_1tirx_1_1LaunchThreadFrameNode-members.html |    2 -
 ...__builder_1_1tirx_1_1LaunchThreadFrameNode.html |   63 +-
 ...1tirx_1_1LaunchThreadFrameNode__coll__graph.svg |  378 ++-
 ...rx_1_1LaunchThreadFrameNode__inherit__graph.svg |  130 +-
 ...der_1_1tirx_1_1TIRFrameNode__inherit__graph.svg |  212 +-
 ..._builder_1_1tirx_1_1WhileFrameNode-members.html |    2 -
 ...t_1_1ir__builder_1_1tirx_1_1WhileFrameNode.html |   63 +-
 ...lder_1_1tirx_1_1WhileFrameNode__coll__graph.svg |  310 +-
 ...r_1_1tirx_1_1WhileFrameNode__inherit__graph.svg |  126 +-
 ...m_1_1script_1_1printer_1_1DocTranslatorObj.html |    2 +-
 .../classtvm_1_1sym_1_1ConstraintContext.html      |    2 +-
 .../classtvm_1_1sym_1_1IterMapExpr-members.html    |   14 +-
 .../doxygen/classtvm_1_1sym_1_1IterMapExpr.html    |   63 +-
 .../classtvm_1_1sym_1_1IterMapExprNode.html        |    2 +-
 ...m_1_1sym_1_1IterMapExprNode__inherit__graph.svg |  138 +-
 ...classtvm_1_1sym_1_1IterMapExpr__coll__graph.svg |  162 +-
 ...sstvm_1_1sym_1_1IterMapExpr__inherit__graph.svg |  238 +-
 ...asstvm_1_1sym_1_1IterMapResultNode-members.html |    2 +-
 .../classtvm_1_1sym_1_1IterMapResultNode.html      |   16 +-
 ...vm_1_1sym_1_1IterMapResultNode__coll__graph.svg |  175 +-
 .../classtvm_1_1sym_1_1IterMarkNode-members.html   |    2 -
 .../doxygen/classtvm_1_1sym_1_1IterMarkNode.html   |   73 +-
 ...lasstvm_1_1sym_1_1IterMarkNode__coll__graph.svg |  176 +-
 ...stvm_1_1sym_1_1IterMarkNode__inherit__graph.svg |   46 +-
 .../classtvm_1_1sym_1_1IterSplitExpr-members.html  |   27 +-
 .../doxygen/classtvm_1_1sym_1_1IterSplitExpr.html  |   72 +-
 ...asstvm_1_1sym_1_1IterSplitExprNode-members.html |    2 -
 .../classtvm_1_1sym_1_1IterSplitExprNode.html      |   79 +-
 ...vm_1_1sym_1_1IterSplitExprNode__coll__graph.svg |  348 +-
 ...1_1sym_1_1IterSplitExprNode__inherit__graph.svg |  112 +-
 ...asstvm_1_1sym_1_1IterSplitExpr__coll__graph.svg |  204 +-
 ...tvm_1_1sym_1_1IterSplitExpr__inherit__graph.svg |  204 +-
 .../classtvm_1_1sym_1_1IterSumExpr-members.html    |   27 +-
 .../doxygen/classtvm_1_1sym_1_1IterSumExpr.html    |   68 +-
 ...classtvm_1_1sym_1_1IterSumExprNode-members.html |    2 -
 .../classtvm_1_1sym_1_1IterSumExprNode.html        |   63 +-
 ...stvm_1_1sym_1_1IterSumExprNode__coll__graph.svg |  322 +-
 ...m_1_1sym_1_1IterSumExprNode__inherit__graph.svg |  108 +-
 ...classtvm_1_1sym_1_1IterSumExpr__coll__graph.svg |  196 +-
 ...sstvm_1_1sym_1_1IterSumExpr__inherit__graph.svg |  196 +-
 .../classtvm_1_1te_1_1ExternOpNode-members.html    |   29 +-
 .../doxygen/classtvm_1_1te_1_1ExternOpNode.html    |   46 +-
 ...classtvm_1_1te_1_1ExternOpNode__coll__graph.svg |  162 +-
 ...sstvm_1_1te_1_1ExternOpNode__inherit__graph.svg |  122 +-
 ...stvm_1_1te_1_1OperationNode__inherit__graph.svg |   62 +-
 .../doxygen/classtvm_1_1te_1_1Reduce-members.html  |   30 +-
 .../api/doxygen/classtvm_1_1te_1_1Reduce.html      |   70 +-
 .../classtvm_1_1te_1_1ReduceNode-members.html      |    2 -
 .../api/doxygen/classtvm_1_1te_1_1ReduceNode.html  |   63 +-
 .../classtvm_1_1te_1_1ReduceNode__coll__graph.svg  |  348 +-
 ...lasstvm_1_1te_1_1ReduceNode__inherit__graph.svg |  118 +-
 .../classtvm_1_1te_1_1Reduce__coll__graph.svg      |  172 +-
 .../classtvm_1_1te_1_1Reduce__inherit__graph.svg   |  172 +-
 .../doxygen/classtvm_1_1te_1_1Tensor-members.html  |   17 +-
 .../api/doxygen/classtvm_1_1te_1_1Tensor.html      |   56 +-
 .../classtvm_1_1te_1_1Tensor__coll__graph.svg      |  148 +-
 .../classtvm_1_1te_1_1Tensor__inherit__graph.svg   |  148 +-
 .../classtvm_1_1tirx_1_1AssertStmt-members.html    |    6 +-
 .../doxygen/classtvm_1_1tirx_1_1AssertStmt.html    |   50 +-
 ...classtvm_1_1tirx_1_1AssertStmtNode-members.html |    2 -
 .../classtvm_1_1tirx_1_1AssertStmtNode.html        |   73 +-
 ...stvm_1_1tirx_1_1AssertStmtNode__coll__graph.svg |  334 +-
 ...m_1_1tirx_1_1AssertStmtNode__inherit__graph.svg |   92 +-
 ...classtvm_1_1tirx_1_1AssertStmt__coll__graph.svg |   78 +-
 ...sstvm_1_1tirx_1_1AssertStmt__inherit__graph.svg |   78 +-
 .../classtvm_1_1tirx_1_1AttrStmt-members.html      |    6 +-
 .../api/doxygen/classtvm_1_1tirx_1_1AttrStmt.html  |   50 +-
 .../classtvm_1_1tirx_1_1AttrStmtNode-members.html  |    2 -
 .../doxygen/classtvm_1_1tirx_1_1AttrStmtNode.html  |   73 +-
 ...asstvm_1_1tirx_1_1AttrStmtNode__coll__graph.svg |  228 +-
 ...tvm_1_1tirx_1_1AttrStmtNode__inherit__graph.svg |   94 +-
 .../classtvm_1_1tirx_1_1AttrStmt__coll__graph.svg  |   78 +-
 ...lasstvm_1_1tirx_1_1AttrStmt__inherit__graph.svg |   78 +-
 .../doxygen/classtvm_1_1tirx_1_1Bind-members.html  |    6 +-
 .../api/doxygen/classtvm_1_1tirx_1_1Bind.html      |   50 +-
 .../classtvm_1_1tirx_1_1BindNode-members.html      |    2 -
 .../api/doxygen/classtvm_1_1tirx_1_1BindNode.html  |   73 +-
 .../classtvm_1_1tirx_1_1BindNode__coll__graph.svg  |  230 +-
 ...lasstvm_1_1tirx_1_1BindNode__inherit__graph.svg |   90 +-
 .../classtvm_1_1tirx_1_1Bind__coll__graph.svg      |   78 +-
 .../classtvm_1_1tirx_1_1Bind__inherit__graph.svg   |   78 +-
 .../doxygen/classtvm_1_1tirx_1_1Break-members.html |    6 +-
 .../api/doxygen/classtvm_1_1tirx_1_1Break.html     |   50 +-
 .../classtvm_1_1tirx_1_1Break__coll__graph.svg     |   78 +-
 .../classtvm_1_1tirx_1_1Break__inherit__graph.svg  |   78 +-
 .../classtvm_1_1tirx_1_1BufferStore-members.html   |    6 +-
 .../doxygen/classtvm_1_1tirx_1_1BufferStore.html   |   50 +-
 ...lasstvm_1_1tirx_1_1BufferStoreNode-members.html |    2 -
 .../classtvm_1_1tirx_1_1BufferStoreNode.html       |   77 +-
 ...tvm_1_1tirx_1_1BufferStoreNode__coll__graph.svg |  388 ++-
 ..._1_1tirx_1_1BufferStoreNode__inherit__graph.svg |   92 +-
 ...lasstvm_1_1tirx_1_1BufferStore__coll__graph.svg |   78 +-
 ...stvm_1_1tirx_1_1BufferStore__inherit__graph.svg |   78 +-
 .../classtvm_1_1tirx_1_1BufferVar-members.html     |   37 +-
 .../api/doxygen/classtvm_1_1tirx_1_1BufferVar.html |   59 +-
 .../classtvm_1_1tirx_1_1BufferVar__coll__graph.svg |  168 +-
 ...asstvm_1_1tirx_1_1BufferVar__inherit__graph.svg |  168 +-
 .../classtvm_1_1tirx_1_1Continue-members.html      |    6 +-
 .../api/doxygen/classtvm_1_1tirx_1_1Continue.html  |   50 +-
 .../classtvm_1_1tirx_1_1Continue__coll__graph.svg  |   78 +-
 ...lasstvm_1_1tirx_1_1Continue__inherit__graph.svg |   78 +-
 .../classtvm_1_1tirx_1_1Evaluate-members.html      |    6 +-
 .../api/doxygen/classtvm_1_1tirx_1_1Evaluate.html  |   52 +-
 .../classtvm_1_1tirx_1_1EvaluateNode-members.html  |    2 -
 .../doxygen/classtvm_1_1tirx_1_1EvaluateNode.html  |   63 +-
 ...asstvm_1_1tirx_1_1EvaluateNode__coll__graph.svg |  190 +-
 ...tvm_1_1tirx_1_1EvaluateNode__inherit__graph.svg |   88 +-
 .../classtvm_1_1tirx_1_1Evaluate__coll__graph.svg  |   82 +-
 ...lasstvm_1_1tirx_1_1Evaluate__inherit__graph.svg |   82 +-
 .../doxygen/classtvm_1_1tirx_1_1For-members.html   |    6 +-
 .../api/doxygen/classtvm_1_1tirx_1_1For.html       |   50 +-
 .../classtvm_1_1tirx_1_1ForNode-members.html       |    2 -
 .../api/doxygen/classtvm_1_1tirx_1_1ForNode.html   |   93 +-
 .../classtvm_1_1tirx_1_1ForNode__coll__graph.svg   |  374 +--
 ...classtvm_1_1tirx_1_1ForNode__inherit__graph.svg |  102 +-
 .../classtvm_1_1tirx_1_1For__coll__graph.svg       |   78 +-
 .../classtvm_1_1tirx_1_1For__inherit__graph.svg    |   78 +-
 .../classtvm_1_1tirx_1_1IfThenElse-members.html    |    6 +-
 .../doxygen/classtvm_1_1tirx_1_1IfThenElse.html    |   50 +-
 ...classtvm_1_1tirx_1_1IfThenElseNode-members.html |    2 -
 .../classtvm_1_1tirx_1_1IfThenElseNode.html        |   73 +-
 ...stvm_1_1tirx_1_1IfThenElseNode__coll__graph.svg |  298 +-
 ...m_1_1tirx_1_1IfThenElseNode__inherit__graph.svg |   92 +-
 ...classtvm_1_1tirx_1_1IfThenElse__coll__graph.svg |   78 +-
 ...sstvm_1_1tirx_1_1IfThenElse__inherit__graph.svg |   78 +-
 .../classtvm_1_1tirx_1_1IterNode-members.html      |    2 -
 .../api/doxygen/classtvm_1_1tirx_1_1IterNode.html  |   71 +-
 .../classtvm_1_1tirx_1_1IterNode__coll__graph.svg  |  242 +-
 ...lasstvm_1_1tirx_1_1IterNode__inherit__graph.svg |   48 +-
 .../classtvm_1_1tirx_1_1IterVarNode-members.html   |    2 -
 .../doxygen/classtvm_1_1tirx_1_1IterVarNode.html   |   63 +-
 ...lasstvm_1_1tirx_1_1IterVarNode__coll__graph.svg |  350 +-
 ...stvm_1_1tirx_1_1IterVarNode__inherit__graph.svg |   80 +-
 ...classtvm_1_1tirx_1_1LambdaExprNode-members.html |    2 -
 .../classtvm_1_1tirx_1_1LambdaExprNode.html        |   63 +-
 ...stvm_1_1tirx_1_1LambdaExprNode__coll__graph.svg |  194 +-
 ...m_1_1tirx_1_1LambdaExprNode__inherit__graph.svg |   46 +-
 .../classtvm_1_1tirx_1_1PrimFunc-members.html      |   13 +-
 .../api/doxygen/classtvm_1_1tirx_1_1PrimFunc.html  |   68 +-
 .../classtvm_1_1tirx_1_1PrimFuncNode-members.html  |    2 +-
 .../doxygen/classtvm_1_1tirx_1_1PrimFuncNode.html  |   16 +-
 ...asstvm_1_1tirx_1_1PrimFuncNode__coll__graph.svg |  369 ++-
 .../classtvm_1_1tirx_1_1PrimFunc__coll__graph.svg  |  114 +-
 ...lasstvm_1_1tirx_1_1PrimFunc__inherit__graph.svg |  114 +-
 .../classtvm_1_1tirx_1_1Return-members.html        |    6 +-
 .../api/doxygen/classtvm_1_1tirx_1_1Return.html    |   50 +-
 .../classtvm_1_1tirx_1_1ReturnNode-members.html    |    2 -
 .../doxygen/classtvm_1_1tirx_1_1ReturnNode.html    |   63 +-
 ...classtvm_1_1tirx_1_1ReturnNode__coll__graph.svg |  190 +-
 ...sstvm_1_1tirx_1_1ReturnNode__inherit__graph.svg |   88 +-
 .../classtvm_1_1tirx_1_1Return__coll__graph.svg    |   78 +-
 .../classtvm_1_1tirx_1_1Return__inherit__graph.svg |   78 +-
 ...classtvm_1_1tirx_1_1ScopeIdDefStmt-members.html |    6 +-
 .../classtvm_1_1tirx_1_1ScopeIdDefStmt.html        |   50 +-
 ...stvm_1_1tirx_1_1ScopeIdDefStmt__coll__graph.svg |   78 +-
 ...m_1_1tirx_1_1ScopeIdDefStmt__inherit__graph.svg |   78 +-
 .../classtvm_1_1tirx_1_1SeqStmt-members.html       |    8 +-
 .../api/doxygen/classtvm_1_1tirx_1_1SeqStmt.html   |   50 +-
 ...vm_1_1tirx_1_1SeqStmt_1_1Flattener-members.html |    3 +-
 .../classtvm_1_1tirx_1_1SeqStmt_1_1Flattener.html  |   42 +-
 ..._1tirx_1_1SeqStmt_1_1Flattener__coll__graph.svg |   34 +-
 .../classtvm_1_1tirx_1_1SeqStmt__coll__graph.svg   |   90 +-
 ...classtvm_1_1tirx_1_1SeqStmt__inherit__graph.svg |   90 +-
 .../doxygen/classtvm_1_1tirx_1_1Stmt-members.html  |    3 +-
 .../api/doxygen/classtvm_1_1tirx_1_1Stmt.html      |   45 +-
 ...lasstvm_1_1tirx_1_1StmtExprMutator-members.html |  149 +-
 .../classtvm_1_1tirx_1_1StmtExprMutator.html       |   47 +-
 ...tvm_1_1tirx_1_1StmtExprMutator__coll__graph.svg |  155 +-
 ..._1_1tirx_1_1StmtExprMutator__inherit__graph.svg |  159 +-
 .../api/doxygen/classtvm_1_1tirx_1_1StmtNode.html  |    2 +-
 ...lasstvm_1_1tirx_1_1StmtNode__inherit__graph.svg |  514 ++-
 .../classtvm_1_1tirx_1_1Stmt__coll__graph.svg      |   44 +-
 .../classtvm_1_1tirx_1_1Stmt__inherit__graph.svg   |  612 ++--
 .../classtvm_1_1tirx_1_1TensorType-members.html    |    2 +-
 .../doxygen/classtvm_1_1tirx_1_1TensorType.html    |   10 +-
 ...classtvm_1_1tirx_1_1TensorTypeNode-members.html |    7 +-
 .../classtvm_1_1tirx_1_1TensorTypeNode.html        |   46 +-
 ...stvm_1_1tirx_1_1TensorTypeNode__coll__graph.svg |  406 ++-
 ...m_1_1tirx_1_1TensorTypeNode__inherit__graph.svg |  146 +-
 ...sstvm_1_1tirx_1_1TilePrimitiveCall-members.html |    8 +-
 .../classtvm_1_1tirx_1_1TilePrimitiveCall.html     |   50 +-
 .../classtvm_1_1tirx_1_1TilePrimitiveCallNode.html |    2 +-
 ...1tirx_1_1TilePrimitiveCallNode__coll__graph.svg |  294 +-
 ...m_1_1tirx_1_1TilePrimitiveCall__coll__graph.svg |   82 +-
 ..._1tirx_1_1TilePrimitiveCall__inherit__graph.svg |   82 +-
 .../doxygen/classtvm_1_1tirx_1_1While-members.html |   10 +-
 .../api/doxygen/classtvm_1_1tirx_1_1While.html     |   50 +-
 .../classtvm_1_1tirx_1_1WhileNode-members.html     |    2 -
 .../api/doxygen/classtvm_1_1tirx_1_1WhileNode.html |   77 +-
 .../classtvm_1_1tirx_1_1WhileNode__coll__graph.svg |  294 +-
 ...asstvm_1_1tirx_1_1WhileNode__inherit__graph.svg |   90 +-
 .../classtvm_1_1tirx_1_1While__coll__graph.svg     |   78 +-
 .../classtvm_1_1tirx_1_1While__inherit__graph.svg  |   78 +-
 .../api/doxygen/constant__utils_8h_source.html     |    6 +-
 docs/reference/api/doxygen/cublas_8h_source.html   |    4 +-
 .../api/doxygen/data__layout_8h_source.html        |    2 +-
 .../api/doxygen/dataflow__matcher_8h_source.html   |    4 +-
 .../api/doxygen/dataflow__pattern_8h_source.html   | 1273 ++++----
 .../dataflow__pattern__functor_8h_source.html      |   38 +-
 docs/reference/api/doxygen/dense_8h.html           |    6 +-
 docs/reference/api/doxygen/dense_8h_source.html    |   81 +-
 .../api/doxygen/detail_2broadcast_8h_source.html   |    8 +-
 docs/reference/api/doxygen/dilate_8h_source.html   |    2 +-
 docs/reference/api/doxygen/doc_8h_source.html      |    8 +-
 .../api/doxygen/doc__translator_8h_source.html     |    2 +-
 docs/reference/api/doxygen/elemwise_8h_source.html |    6 +-
 .../api/doxygen/exec__context_8h_source.html       |   10 +-
 .../api/doxygen/exec__scope_8h_source.html         |    2 +-
 docs/reference/api/doxygen/extern_8h_source.html   |   20 +-
 docs/reference/api/doxygen/flatten_8h_source.html  |    4 +-
 docs/reference/api/doxygen/functions_a.html        |    7 +-
 docs/reference/api/doxygen/functions_b.html        |   13 +-
 docs/reference/api/doxygen/functions_c.html        |   16 +-
 docs/reference/api/doxygen/functions_d.html        |    7 +-
 docs/reference/api/doxygen/functions_e.html        |   13 +-
 docs/reference/api/doxygen/functions_f.html        |    2 -
 docs/reference/api/doxygen/functions_func.html     |   13 +-
 docs/reference/api/doxygen/functions_func_b.html   |   17 +-
 docs/reference/api/doxygen/functions_func_c.html   |   10 +-
 docs/reference/api/doxygen/functions_func_d.html   |    7 +-
 docs/reference/api/doxygen/functions_func_e.html   |    7 +-
 docs/reference/api/doxygen/functions_func_f.html   |    2 -
 docs/reference/api/doxygen/functions_func_g.html   |    8 +-
 docs/reference/api/doxygen/functions_func_i.html   |   19 +-
 docs/reference/api/doxygen/functions_func_l.html   |    3 -
 docs/reference/api/doxygen/functions_func_m.html   |    7 +-
 docs/reference/api/doxygen/functions_func_n.html   |    1 -
 docs/reference/api/doxygen/functions_func_o.html   |    4 +-
 docs/reference/api/doxygen/functions_func_p.html   |    7 +-
 docs/reference/api/doxygen/functions_func_r.html   |   15 +-
 docs/reference/api/doxygen/functions_func_s.html   |   15 +-
 docs/reference/api/doxygen/functions_func_t.html   |   18 +-
 docs/reference/api/doxygen/functions_func_v.html   |    5 +-
 docs/reference/api/doxygen/functions_func_w.html   |    6 +-
 docs/reference/api/doxygen/functions_g.html        |    6 +-
 docs/reference/api/doxygen/functions_i.html        |   17 +-
 docs/reference/api/doxygen/functions_l.html        |    7 +-
 docs/reference/api/doxygen/functions_m.html        |    7 +-
 docs/reference/api/doxygen/functions_n.html        |    3 +-
 docs/reference/api/doxygen/functions_o.html        |    6 +-
 docs/reference/api/doxygen/functions_p.html        |   11 +-
 docs/reference/api/doxygen/functions_r.html        |    9 +-
 docs/reference/api/doxygen/functions_s.html        |   15 +-
 docs/reference/api/doxygen/functions_t.html        |   32 +-
 docs/reference/api/doxygen/functions_type.html     |    2 +-
 docs/reference/api/doxygen/functions_v.html        |    7 +-
 docs/reference/api/doxygen/functions_vars_b.html   |    2 +-
 docs/reference/api/doxygen/functions_vars_d.html   |    2 +-
 docs/reference/api/doxygen/functions_vars_p.html   |    2 +-
 docs/reference/api/doxygen/functions_vars_v.html   |    2 +-
 docs/reference/api/doxygen/functions_w.html        |    4 +-
 docs/reference/api/doxygen/fuse_8h_source.html     |    2 +-
 docs/reference/api/doxygen/group__norm_8h.html     |    4 +-
 .../api/doxygen/group__norm_8h_source.html         |  226 +-
 .../api/doxygen/index__map_8h_source.html          |    2 +-
 docs/reference/api/doxygen/instance__norm_8h.html  |    6 +-
 .../api/doxygen/instance__norm_8h_source.html      |  172 +-
 docs/reference/api/doxygen/int__set_8h_source.html |    4 +-
 docs/reference/api/doxygen/ir_2expr_8h_source.html | 1546 +++++----
 .../api/doxygen/ir_2expr__functor_8h_source.html   |   82 +-
 .../api/doxygen/ir_2function_8h_source.html        |   17 +-
 docs/reference/api/doxygen/ir_2op_8h_source.html   |    2 +-
 .../api/doxygen/ir_2prim_2expr_8h_source.html      | 1698 +++++-----
 .../api/doxygen/ir_2prim_2op_8h_source.html        |   20 +-
 .../api/doxygen/iter__affine__map_8h_source.html   |  451 ++-
 docs/reference/api/doxygen/layer__norm_8h.html     |    6 +-
 .../api/doxygen/layer__norm_8h_source.html         |   26 +-
 docs/reference/api/doxygen/layout_8h_source.html   |  431 ++-
 .../doxygen/local__response__norm_8h_source.html   |   73 +-
 docs/reference/api/doxygen/mapping_8h_source.html  |    2 +-
 docs/reference/api/doxygen/module_8h_source.html   |    2 +-
 docs/reference/api/doxygen/namespacemembers_c.html |    2 +-
 docs/reference/api/doxygen/namespacemembers_d.html |    4 +-
 .../api/doxygen/namespacemembers_func_c.html       |    2 +-
 .../api/doxygen/namespacemembers_func_d.html       |    4 +-
 .../api/doxygen/namespacemembers_func_g.html       |    4 +-
 .../api/doxygen/namespacemembers_func_i.html       |    2 +-
 .../api/doxygen/namespacemembers_func_l.html       |    2 +-
 .../api/doxygen/namespacemembers_func_m.html       |    2 +-
 .../api/doxygen/namespacemembers_func_p.html       |    2 +-
 .../api/doxygen/namespacemembers_func_r.html       |    2 +-
 .../api/doxygen/namespacemembers_func_s.html       |    4 +-
 docs/reference/api/doxygen/namespacemembers_g.html |    4 +-
 docs/reference/api/doxygen/namespacemembers_i.html |    2 +-
 docs/reference/api/doxygen/namespacemembers_l.html |    2 +-
 docs/reference/api/doxygen/namespacemembers_m.html |    2 +-
 docs/reference/api/doxygen/namespacemembers_p.html |    2 +-
 docs/reference/api/doxygen/namespacemembers_r.html |    2 +-
 docs/reference/api/doxygen/namespacemembers_s.html |    4 +-
 .../api/doxygen/namespacetvm_1_1relax.html         |    2 +-
 ...pacetvm_1_1script_1_1ir__builder_1_1s__tir.html |   28 +-
 .../reference/api/doxygen/namespacetvm_1_1sym.html |   12 +-
 .../api/doxygen/namespacetvm_1_1tirx.html          |   12 +-
 .../doxygen/namespacetvm_1_1tirx_1_1builtin.html   |    6 +-
 .../doxygen/namespacetvm_1_1tirx_1_1transform.html |   10 +-
 .../api/doxygen/namespacetvm_1_1topi.html          |   42 +-
 .../api/doxygen/namespacetvm_1_1topi_1_1nn.html    |   50 +-
 .../api/doxygen/nested__msg_8h_source.html         |   58 +-
 .../reference/api/doxygen/operation_8h_source.html |  735 +++--
 .../api/doxygen/pad__utils_8h_source.html          |    2 +-
 docs/reference/api/doxygen/pattern_8h.html         |    6 +-
 docs/reference/api/doxygen/pattern_8h_source.html  |   15 +-
 docs/reference/api/doxygen/pooling_8h_source.html  |  882 ++---
 .../api/doxygen/ravel__unravel_8h_source.html      |   52 +-
 .../reference/api/doxygen/reduction_8h_source.html |  222 +-
 .../api/doxygen/relax_2analysis_8h_source.html     |   10 +-
 ...elax_2backend_2adreno_2transform_8h_source.html |    4 +-
 ...relax_2distributed_2global__info_8h_source.html |    2 +-
 .../relax_2distributed_2transform_8h_source.html   |    4 +-
 .../api/doxygen/relax_2expr_8h_source.html         |  918 +++---
 .../doxygen/relax_2expr__functor_8h_source.html    |  102 +-
 .../doxygen/relax_2op__attr__types_8h_source.html  |    4 +-
 ...elax_2script_2ir__builder_2frame_8h_source.html |  250 +-
 .../relax_2script_2ir__builder_2ir_8h_source.html  |   10 +-
 .../api/doxygen/relax_2transform_8h_source.html    |  191 +-
 .../api/doxygen/relax_2type_8h_source.html         |    7 +-
 .../api/doxygen/relax_2utils_8h_source.html        |    6 +-
 docs/reference/api/doxygen/reorg_8h_source.html    |    4 +-
 .../api/doxygen/s__tir_2analysis_8h_source.html    |    8 +-
 ..._tir_2backend_2adreno_2transform_8h_source.html |    4 +-
 ..._tir_2script_2ir__builder_2frame_8h_source.html |    2 +-
 .../s__tir_2script_2ir__builder_2ir_8h.html        |   12 +-
 .../s__tir_2script_2ir__builder_2ir_8h_source.html |  112 +-
 .../api/doxygen/s__tir_2stmt_8h_source.html        |  558 ++--
 .../doxygen/s__tir_2stmt__functor_8h_source.html   |    4 +-
 .../api/doxygen/s__tir_2transform_8h_source.html   |    4 +-
 docs/reference/api/doxygen/s__tir_2utils_8h.html   |    4 +-
 .../api/doxygen/s__tir_2utils_8h_source.html       |   10 +-
 .../api/doxygen/sblock__scope_8h_source.html       |    6 +-
 docs/reference/api/doxygen/schedule_8h_source.html |   10 +-
 .../script_2ir__builder_2base_8h_source.html       |   10 +-
 .../doxygen/script_2ir__builder_2ir_8h_source.html |    2 +-
 docs/reference/api/doxygen/search/all_1.js         |   60 +-
 docs/reference/api/doxygen/search/all_10.js        |   38 +-
 docs/reference/api/doxygen/search/all_12.js        |   54 +-
 docs/reference/api/doxygen/search/all_13.js        |  134 +-
 docs/reference/api/doxygen/search/all_14.js        |  118 +-
 docs/reference/api/doxygen/search/all_15.js        |    2 +-
 docs/reference/api/doxygen/search/all_16.js        |   20 +-
 docs/reference/api/doxygen/search/all_17.js        |   20 +-
 docs/reference/api/doxygen/search/all_2.js         |   66 +-
 docs/reference/api/doxygen/search/all_3.js         |   84 +-
 docs/reference/api/doxygen/search/all_4.js         |   62 +-
 docs/reference/api/doxygen/search/all_5.js         |   68 +-
 docs/reference/api/doxygen/search/all_6.js         |   64 +-
 docs/reference/api/doxygen/search/all_7.js         |   28 +-
 docs/reference/api/doxygen/search/all_9.js         |  100 +-
 docs/reference/api/doxygen/search/all_c.js         |   52 +-
 docs/reference/api/doxygen/search/all_d.js         |   38 +-
 docs/reference/api/doxygen/search/all_e.js         |   16 +-
 docs/reference/api/doxygen/search/all_f.js         |   74 +-
 docs/reference/api/doxygen/search/functions_0.js   |  131 +-
 docs/reference/api/doxygen/search/functions_1.js   |  187 +-
 docs/reference/api/doxygen/search/functions_11.js  |  219 +-
 docs/reference/api/doxygen/search/functions_12.js  |  331 +-
 docs/reference/api/doxygen/search/functions_13.js  |  226 +-
 docs/reference/api/doxygen/search/functions_15.js  |  127 +-
 docs/reference/api/doxygen/search/functions_16.js  |   70 +-
 docs/reference/api/doxygen/search/functions_2.js   |  250 +-
 docs/reference/api/doxygen/search/functions_3.js   |  171 +-
 docs/reference/api/doxygen/search/functions_4.js   |   65 +-
 docs/reference/api/doxygen/search/functions_5.js   |  112 +-
 docs/reference/api/doxygen/search/functions_6.js   |   32 +-
 docs/reference/api/doxygen/search/functions_8.js   |  329 +-
 docs/reference/api/doxygen/search/functions_b.js   |  143 +-
 docs/reference/api/doxygen/search/functions_c.js   |  107 +-
 docs/reference/api/doxygen/search/functions_d.js   |   15 +-
 docs/reference/api/doxygen/search/functions_e.js   |   88 +-
 docs/reference/api/doxygen/search/functions_f.js   |  123 +-
 docs/reference/api/doxygen/search/typedefs_2.js    |    2 +-
 docs/reference/api/doxygen/search/variables_1.js   |    2 +-
 docs/reference/api/doxygen/search/variables_15.js  |    2 +-
 docs/reference/api/doxygen/search/variables_2.js   |    2 +-
 docs/reference/api/doxygen/search/variables_4.js   |    2 +-
 docs/reference/api/doxygen/search/variables_f.js   |    2 +-
 docs/reference/api/doxygen/softmax_8h_source.html  |   10 +-
 .../api/doxygen/strided__slice_8h_source.html      |    4 +-
 ...fi_1_1TypeTraits_3_01PrimExpr_01_4-members.html |   14 +-
 ...tvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html |   53 +-
 ..._1TypeTraits_3_01PrimExpr_01_4__coll__graph.svg |   68 +-
 ...ypeTraits_3_01PrimExpr_01_4__inherit__graph.svg |   68 +-
 .../structtvm_1_1prim_1_1LENode-members.html       |    2 -
 .../api/doxygen/structtvm_1_1prim_1_1LENode.html   |    8 +-
 .../structtvm_1_1prim_1_1LENode__coll__graph.svg   |  322 +-
 ...structtvm_1_1prim_1_1LENode__inherit__graph.svg |   90 +-
 .../structtvm_1_1s__tir_1_1MemCpyDetails.html      |    2 +-
 ...tvm_1_1s__tir_1_1MemCpyDetails__coll__graph.svg |  112 +-
 .../doxygen/structtvm_1_1tirx_1_1AxisRange.html    |   14 +-
 ...structtvm_1_1tirx_1_1AxisRange__coll__graph.svg |  162 +-
 .../api/doxygen/task__scheduler_8h_source.html     |    2 +-
 .../api/doxygen/te_2tensor_8h_source.html          |  185 +-
 .../api/doxygen/tensor__intrin_8h_source.html      |   71 +-
 .../api/doxygen/tensor__utils_8h_source.html       |    4 +-
 .../api/doxygen/thread__bind_8h_source.html        |    2 +-
 .../api/doxygen/tile__primitive_8h_source.html     |  477 ++-
 .../api/doxygen/tir__pattern_8h_source.html        |   73 +-
 .../api/doxygen/tirx_2analysis_8h_source.html      |    4 +-
 .../api/doxygen/tirx_2expr_8h_source.html          |  248 +-
 .../api/doxygen/tirx_2function_8h_source.html      |  112 +-
 docs/reference/api/doxygen/tirx_2op_8h_source.html |    8 +-
 .../doxygen/tirx_2op__attr__types_8h_source.html   |    2 +-
 ...tirx_2script_2ir__builder_2frame_8h_source.html |  691 ++--
 .../tirx_2script_2ir__builder_2ir_8h_source.html   |   24 +-
 .../api/doxygen/tirx_2stmt_8h_source.html          | 1457 ++++-----
 .../api/doxygen/tirx_2stmt__functor_8h_source.html |  184 +-
 docs/reference/api/doxygen/tirx_2transform_8h.html |    4 +-
 .../api/doxygen/tirx_2transform_8h_source.html     |    8 +-
 .../api/doxygen/tirx_2type_8h_source.html          |  266 +-
 docs/reference/api/doxygen/topi_2nn_8h.html        |   12 +-
 docs/reference/api/doxygen/topi_2nn_8h_source.html |  747 ++---
 docs/reference/api/doxygen/topi_2transform_8h.html |    6 +-
 .../api/doxygen/topi_2transform_8h_source.html     | 3433 ++++++++++----------
 .../api/doxygen/type__functor_8h_source.html       |    2 +-
 docs/reference/api/doxygen/var_8h_source.html      |  182 +-
 .../api/doxygen/vector__expr_8h_source.html        |  239 +-
 docs/reference/api/python/relax/distributed.html   |    2 +-
 docs/reference/api/python/relax/op.html            |   10 +-
 docs/reference/api/python/relax/relax.html         |    8 +-
 docs/reference/api/python/relax/training.html      |    2 +-
 docs/reference/api/python/s_tir/schedule.html      |    7 +-
 docs/reference/api/python/script/script.html       |   10 +-
 .../api/typedoc/classes/ArtifactCache.html         |   14 +-
 .../classes/ArtifactCrossOriginStorageCache.html   |   12 +-
 .../typedoc/classes/ArtifactIndexedDBCache.html    |   16 +-
 .../api/typedoc/classes/ArtifactOPFSCache.html     |   14 +-
 docs/reference/api/typedoc/classes/CacheState.html |   10 +-
 docs/reference/api/typedoc/classes/DLDataType.html |   14 +-
 docs/reference/api/typedoc/classes/DLDevice.html   |   12 +-
 docs/reference/api/typedoc/classes/Instance.html   |  120 +-
 docs/reference/api/typedoc/classes/LRUCache.html   |   14 +-
 .../classes/LinearCongruentialGenerator.html       |   20 +-
 docs/reference/api/typedoc/classes/Module.html     |   16 +-
 docs/reference/api/typedoc/classes/RPCServer.html  |   16 +-
 docs/reference/api/typedoc/classes/Scalar.html     |    8 +-
 docs/reference/api/typedoc/classes/TVMArray.html   |   16 +-
 docs/reference/api/typedoc/classes/TVMObject.html  |   12 +-
 docs/reference/api/typedoc/classes/Tensor.html     |   36 +-
 .../api/typedoc/classes/VirtualMachine.html        |   10 +-
 .../classes/_internal_.AsyncifyHandler.html        |   14 +-
 .../classes/_internal_.CachedCallStack.html        |   38 +-
 .../classes/_internal_.CanvasRenderManager.html    |   10 +-
 .../classes/_internal_.CrossOriginStorage.html     |   12 +-
 .../typedoc/classes/_internal_.Environment.html    |   14 +-
 .../api/typedoc/classes/_internal_.FFILibrary.html |   22 +-
 .../api/typedoc/classes/_internal_.Memory.html     |   50 +-
 .../api/typedoc/classes/_internal_.OPFSStore.html  |   16 +-
 .../typedoc/classes/_internal_.PackedFuncCell.html |   12 +-
 .../typedoc/classes/_internal_.RuntimeContext.html |   74 +-
 .../typedoc/classes/_internal_.WebGPUContext.html  |   30 +-
 .../enums/_internal_.AsyncifyStateKind.html        |    8 +-
 .../typedoc/enums/_internal_.RPCServerState.html   |   14 +-
 docs/reference/api/typedoc/functions/assert.html   |    2 +-
 .../api/typedoc/functions/createArtifactCache.html |    2 +-
 .../api/typedoc/functions/createPolyfillWASI.html  |    2 +-
 .../api/typedoc/functions/deleteTensorCache.html   |    4 +-
 .../api/typedoc/functions/detectGPUDevice.html     |    2 +-
 .../api/typedoc/functions/hasTensorInCache.html    |    4 +-
 .../api/typedoc/functions/instantiate.html         |    2 +-
 docs/reference/api/typedoc/functions/wasmPath.html |    2 +-
 .../typedoc/interfaces/ArtifactCacheTemplate.html  |   10 +-
 .../api/typedoc/interfaces/Disposable.html         |    4 +-
 .../interfaces/FetchTensorCacheOptions.html        |   12 +-
 .../typedoc/interfaces/GPUDeviceDetectOutput.html  |    8 +-
 .../api/typedoc/interfaces/InitProgressReport.html |    8 +-
 .../api/typedoc/interfaces/LibraryProvider.html    |    6 +-
 .../interfaces/TensorCacheAccessOptions.html       |   10 +-
 .../_internal_.CrossOriginHashDescriptor.html      |    6 +-
 .../_internal_.CrossOriginStorageAPI.html          |    4 +-
 .../_internal_.CrossOriginStorageHandle.html       |    6 +-
 ...CrossOriginStorageRequestFileHandleOptions.html |    6 +-
 .../_internal_.CrossOriginStorageWritable.html     |    6 +-
 .../interfaces/_internal_.FunctionInfo.html        |    8 +-
 .../interfaces/_internal_.OPFSDirectoryHandle.html |    8 +-
 .../interfaces/_internal_.OPFSFileHandle.html      |    8 +-
 .../interfaces/_internal_.OPFSStorageManager.html  |    4 +-
 .../interfaces/_internal_.OPFSStoreRecord.html     |    8 +-
 .../interfaces/_internal_.OPFSStoredEntry.html     |    6 +-
 .../_internal_.OPFSSyncAccessHandle.html           |   14 +-
 .../_internal_.OPFSWritableFileStream.html         |    6 +-
 .../interfaces/_internal_.PackedCallFrame.html     |   16 +-
 .../interfaces/_internal_.TensorCacheEntry.html    |   14 +-
 .../interfaces/_internal_.TensorShardEntry.html    |   10 +-
 .../interfaces/_internal_.WasmByteArraySource.html |    8 +-
 .../api/typedoc/types/ArtifactCacheType.html       |    2 +-
 .../api/typedoc/types/InitProgressCallback.html    |    2 +-
 .../api/typedoc/types/OPFSAccessMode.html          |    2 +-
 docs/reference/api/typedoc/types/PackedFunc.html   |    2 +-
 docs/reference/api/typedoc/types/RNGState.html     |    2 +-
 .../typedoc/types/_internal_.AsyncPackedFunc.html  |    2 +-
 .../types/_internal_.FObjectConstructor.html       |    2 +-
 .../types/_internal_.FTVMFFIWasmSafeCallType.html  |    2 +-
 .../types/_internal_.FTVMWasmAllocSpace.html       |    2 +-
 .../types/_internal_.FTVMWasmFreeSpace.html        |    2 +-
 .../types/_internal_.OPFSEffectiveAccessMode.html  |    2 +-
 .../types/_internal_.OPFSSyncAccessHandleMode.html |    2 +-
 .../api/typedoc/types/_internal_.Pointer.html      |    2 +-
 .../api/typedoc/types/_internal_.RequestLike.html  |    2 +-
 .../typedoc/types/_internal_.TVMObjectBase.html    |    2 +-
 docs/searchindex.js                                |    2 +-
 docs/sg_execution_times.html                       |   32 +-
 docs/tirx/api/tirx.html                            |    4 +-
 1020 files changed, 43445 insertions(+), 52934 deletions(-)

diff --git a/docs/_downloads/050dda7aeddba33e083ae36606d3270f/import_model.zip b/docs/_downloads/050dda7aeddba33e083ae36606d3270f/import_model.zip
index ccc54a6c4ca..1b3a567c8d5 100644
Binary files a/docs/_downloads/050dda7aeddba33e083ae36606d3270f/import_model.zip and b/docs/_downloads/050dda7aeddba33e083ae36606d3270f/import_model.zip differ
diff --git a/docs/_downloads/0eec6b3ea6ba863d0ed14b037c4b83ea/dlight_gpu_scheduling.zip b/docs/_downloads/0eec6b3ea6ba863d0ed14b037c4b83ea/dlight_gpu_scheduling.zip
index eb230ad9cf1..1e4c502e777 100644
Binary files a/docs/_downloads/0eec6b3ea6ba863d0ed14b037c4b83ea/dlight_gpu_scheduling.zip and b/docs/_downloads/0eec6b3ea6ba863d0ed14b037c4b83ea/dlight_gpu_scheduling.zip differ
diff --git a/docs/_downloads/11c11e53c7dace51a8be968ee169ed0d/ir_module.zip b/docs/_downloads/11c11e53c7dace51a8be968ee169ed0d/ir_module.zip
index 37668b280a6..43b5c61f621 100644
Binary files a/docs/_downloads/11c11e53c7dace51a8be968ee169ed0d/ir_module.zip and b/docs/_downloads/11c11e53c7dace51a8be968ee169ed0d/ir_module.zip differ
diff --git a/docs/_downloads/18ba0d2ee8120824175aaef66bc9c9bf/tir_transformation.zip b/docs/_downloads/18ba0d2ee8120824175aaef66bc9c9bf/tir_transformation.zip
index 42a323dd3d5..06519da4ec3 100644
Binary files a/docs/_downloads/18ba0d2ee8120824175aaef66bc9c9bf/tir_transformation.zip and b/docs/_downloads/18ba0d2ee8120824175aaef66bc9c9bf/tir_transformation.zip differ
diff --git a/docs/_downloads/249a4acaa182fd00b9c381b53025777d/meta_schedule.zip b/docs/_downloads/249a4acaa182fd00b9c381b53025777d/meta_schedule.zip
index f190b94e875..8d03937a0ec 100644
Binary files a/docs/_downloads/249a4acaa182fd00b9c381b53025777d/meta_schedule.zip and b/docs/_downloads/249a4acaa182fd00b9c381b53025777d/meta_schedule.zip differ
diff --git a/docs/_downloads/373278b9f6fc686adeaa0219598fe78b/mix_python_and_tvm_with_pymodule.zip b/docs/_downloads/373278b9f6fc686adeaa0219598fe78b/mix_python_and_tvm_with_pymodule.zip
index 43fed5a3f96..52ddb27e82e 100644
Binary files a/docs/_downloads/373278b9f6fc686adeaa0219598fe78b/mix_python_and_tvm_with_pymodule.zip and b/docs/_downloads/373278b9f6fc686adeaa0219598fe78b/mix_python_and_tvm_with_pymodule.zip differ
diff --git a/docs/_downloads/4753776bbe68e7c9ee4d19117973fc8b/relax_creation.zip b/docs/_downloads/4753776bbe68e7c9ee4d19117973fc8b/relax_creation.zip
index 4a72525e83d..3106dee5b63 100644
Binary files a/docs/_downloads/4753776bbe68e7c9ee4d19117973fc8b/relax_creation.zip and b/docs/_downloads/4753776bbe68e7c9ee4d19117973fc8b/relax_creation.zip differ
diff --git a/docs/_downloads/7d201684dfa095a5ea48d98e9a2ef7ad/relax_transformation.zip b/docs/_downloads/7d201684dfa095a5ea48d98e9a2ef7ad/relax_transformation.zip
index 31169ffa03b..097506a66c8 100644
Binary files a/docs/_downloads/7d201684dfa095a5ea48d98e9a2ef7ad/relax_transformation.zip and b/docs/_downloads/7d201684dfa095a5ea48d98e9a2ef7ad/relax_transformation.zip differ
diff --git a/docs/_downloads/83e85f38cf16f1d926d06615fd54095c/optimize_llm.zip b/docs/_downloads/83e85f38cf16f1d926d06615fd54095c/optimize_llm.zip
index 3471f1b4956..ce5275c2a83 100644
Binary files a/docs/_downloads/83e85f38cf16f1d926d06615fd54095c/optimize_llm.zip and b/docs/_downloads/83e85f38cf16f1d926d06615fd54095c/optimize_llm.zip differ
diff --git a/docs/_downloads/8c05f1d580979a2c26428a509c07ed72/bring_your_own_codegen.zip b/docs/_downloads/8c05f1d580979a2c26428a509c07ed72/bring_your_own_codegen.zip
index ea981102d76..e2d5894e794 100644
Binary files a/docs/_downloads/8c05f1d580979a2c26428a509c07ed72/bring_your_own_codegen.zip and b/docs/_downloads/8c05f1d580979a2c26428a509c07ed72/bring_your_own_codegen.zip differ
diff --git a/docs/_downloads/a7dd7652b2ad50f82d7b739ce3645799/e2e_opt_model.zip b/docs/_downloads/a7dd7652b2ad50f82d7b739ce3645799/e2e_opt_model.zip
index 4f3f28181bb..5b16c1cc971 100644
Binary files a/docs/_downloads/a7dd7652b2ad50f82d7b739ce3645799/e2e_opt_model.zip and b/docs/_downloads/a7dd7652b2ad50f82d7b739ce3645799/e2e_opt_model.zip differ
diff --git a/docs/_downloads/bb7db6678496193ed0c55d3b95fa6778/quick_start.zip b/docs/_downloads/bb7db6678496193ed0c55d3b95fa6778/quick_start.zip
index d0834676dcf..4800e2a5ddd 100644
Binary files a/docs/_downloads/bb7db6678496193ed0c55d3b95fa6778/quick_start.zip and b/docs/_downloads/bb7db6678496193ed0c55d3b95fa6778/quick_start.zip differ
diff --git a/docs/_downloads/bc875d02d5382abc9ea5fb9eb2c1de2c/export_and_load_executable.zip b/docs/_downloads/bc875d02d5382abc9ea5fb9eb2c1de2c/export_and_load_executable.zip
index 4664754d9c8..502f9df78f6 100644
Binary files a/docs/_downloads/bc875d02d5382abc9ea5fb9eb2c1de2c/export_and_load_executable.zip and b/docs/_downloads/bc875d02d5382abc9ea5fb9eb2c1de2c/export_and_load_executable.zip differ
diff --git a/docs/_downloads/be26483bb70b8468499a01c55e8e866c/tir_creation.zip b/docs/_downloads/be26483bb70b8468499a01c55e8e866c/tir_creation.zip
index 747bf179c68..2750d4db19d 100644
Binary files a/docs/_downloads/be26483bb70b8468499a01c55e8e866c/tir_creation.zip and b/docs/_downloads/be26483bb70b8468499a01c55e8e866c/tir_creation.zip differ
diff --git a/docs/_downloads/f69380821f417ef2210f45503d81bded/cross_compilation_and_rpc.zip b/docs/_downloads/f69380821f417ef2210f45503d81bded/cross_compilation_and_rpc.zip
index 6e28555ed11..42ddfe5f055 100644
Binary files a/docs/_downloads/f69380821f417ef2210f45503d81bded/cross_compilation_and_rpc.zip and b/docs/_downloads/f69380821f417ef2210f45503d81bded/cross_compilation_and_rpc.zip differ
diff --git a/docs/_downloads/f69433a4a80715725df90d1386679956/customize_opt.zip b/docs/_downloads/f69433a4a80715725df90d1386679956/customize_opt.zip
index 49beba8f4d3..184fd48955b 100644
Binary files a/docs/_downloads/f69433a4a80715725df90d1386679956/customize_opt.zip and b/docs/_downloads/f69433a4a80715725df90d1386679956/customize_opt.zip differ
diff --git a/docs/_sources/deep_dive/relax/tutorials/sg_execution_times.rst b/docs/_sources/deep_dive/relax/tutorials/sg_execution_times.rst
index 167b6f11402..425ebc8fd1d 100644
--- a/docs/_sources/deep_dive/relax/tutorials/sg_execution_times.rst
+++ b/docs/_sources/deep_dive/relax/tutorials/sg_execution_times.rst
@@ -6,7 +6,7 @@
 
 Computation times
 =================
-**00:00.160** total execution time for 2 files **from deep_dive/relax/tutorials**:
+**00:00.204** total execution time for 2 files **from deep_dive/relax/tutorials**:
 
 .. container::
 
@@ -33,8 +33,8 @@ Computation times
      - Time
      - Mem (MB)
    * - :ref:`sphx_glr_deep_dive_relax_tutorials_relax_creation.py` (``relax_creation.py``)
-     - 00:00.087
+     - 00:00.109
      - 0.0
    * - :ref:`sphx_glr_deep_dive_relax_tutorials_relax_transformation.py` (``relax_transformation.py``)
-     - 00:00.073
+     - 00:00.095
      - 0.0
diff --git a/docs/_sources/deep_dive/tensor_ir/tutorials/sg_execution_times.rst b/docs/_sources/deep_dive/tensor_ir/tutorials/sg_execution_times.rst
index 51aeb31a693..1e8a418df15 100644
--- a/docs/_sources/deep_dive/tensor_ir/tutorials/sg_execution_times.rst
+++ b/docs/_sources/deep_dive/tensor_ir/tutorials/sg_execution_times.rst
@@ -6,7 +6,7 @@
 
 Computation times
 =================
-**00:00.578** total execution time for 4 files **from deep_dive/tensor_ir/tutorials**:
+**00:00.705** total execution time for 4 files **from deep_dive/tensor_ir/tutorials**:
 
 .. container::
 
@@ -33,14 +33,14 @@ Computation times
      - Time
      - Mem (MB)
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_transformation.py` (``tir_transformation.py``)
-     - 00:00.267
+     - 00:00.318
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_dlight_gpu_scheduling.py` (``dlight_gpu_scheduling.py``)
-     - 00:00.164
+     - 00:00.212
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_creation.py` (``tir_creation.py``)
-     - 00:00.137
+     - 00:00.164
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_meta_schedule.py` (``meta_schedule.py``)
-     - 00:00.010
+     - 00:00.011
      - 0.0
diff --git a/docs/_sources/deep_dive/tensor_ir/tutorials/tir_transformation.rst b/docs/_sources/deep_dive/tensor_ir/tutorials/tir_transformation.rst
index e8ef6e2c268..a3c4a2084f8 100644
--- a/docs/_sources/deep_dive/tensor_ir/tutorials/tir_transformation.rst
+++ b/docs/_sources/deep_dive/tensor_ir/tutorials/tir_transformation.rst
@@ -121,7 +121,7 @@ original implementation.
 
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-       2.6702       2.6702       2.6702       2.6702       0.0000                  
+       2.7837       2.7837       2.7837       2.7837       0.0000                  
 
 
 
@@ -313,7 +313,7 @@ action involves reordering these two loops.
 
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-       0.8632       0.8632       0.8632       0.8632       0.0000                  
+       0.8672       0.8672       0.8672       0.8672       0.0000                  
 
 
 
@@ -455,7 +455,7 @@ from the reduction update via the **decompose_reduction** primitive.
 
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-       0.3523       0.3523       0.3523       0.3523       0.0000                  
+       0.3371       0.3371       0.3371       0.3371       0.0000                  
 
 
 
diff --git a/docs/_sources/get_started/tutorials/ir_module.rst b/docs/_sources/get_started/tutorials/ir_module.rst
index 61a78f26f10..1d07e1fa242 100644
--- a/docs/_sources/get_started/tutorials/ir_module.rst
+++ b/docs/_sources/get_started/tutorials/ir_module.rst
@@ -764,8 +764,8 @@ We can deploy the IRModule on CPU by specifying the target as ``llvm``.
 
  .. code-block:: none
 
-    [[ 0.00275111 -0.03913351 -0.00985708 -0.11234792  0.07988546 -0.00127671
-      -0.01788248 -0.13117674  0.017374    0.14502347]]
+    [[-0.03631149  0.28754458  0.1807923  -0.1895414   0.06168855  0.00620006
+       0.12755947 -0.1032482   0.08877952  0.03172699]]
 
 
 
@@ -831,8 +831,8 @@ Now we can compile the IRModule on GPU, the similar way as we did on CPU.
 
  .. code-block:: none
 
-    [[ 0.00275109 -0.03913352 -0.00985711 -0.11234793  0.07988548 -0.00127672
-      -0.01788251 -0.13117671  0.01737402  0.14502347]]
+    [[-0.03631151  0.28754455  0.18079233 -0.18954137  0.06168859  0.00620007
+       0.12755948 -0.10324825  0.08877952  0.03172702]]
 
 
 
diff --git a/docs/_sources/get_started/tutorials/quick_start.rst b/docs/_sources/get_started/tutorials/quick_start.rst
index f2df985cd39..ad036cb63a2 100644
--- a/docs/_sources/get_started/tutorials/quick_start.rst
+++ b/docs/_sources/get_started/tutorials/quick_start.rst
@@ -226,8 +226,8 @@ different devices.
 
  .. code-block:: none
 
-    [[25243.785 24990.518 26197.709 27338.156 26491.863 24672.29  25217.938
-      24741.645 23997.127 26500.102]]
+    [[26131.809 24740.76  25151.146 25819.623 25224.21  23682.678 26168.857
+      25200.941 24416.607 25235.14 ]]
 
 
 
diff --git a/docs/_sources/get_started/tutorials/sg_execution_times.rst b/docs/_sources/get_started/tutorials/sg_execution_times.rst
index 6cb6f088336..4a724897aac 100644
--- a/docs/_sources/get_started/tutorials/sg_execution_times.rst
+++ b/docs/_sources/get_started/tutorials/sg_execution_times.rst
@@ -6,7 +6,7 @@
 
 Computation times
 =================
-**00:05.496** total execution time for 2 files **from get_started/tutorials**:
+**00:06.407** total execution time for 2 files **from get_started/tutorials**:
 
 .. container::
 
@@ -33,8 +33,8 @@ Computation times
      - Time
      - Mem (MB)
    * - :ref:`sphx_glr_get_started_tutorials_ir_module.py` (``ir_module.py``)
-     - 00:05.336
+     - 00:06.212
      - 0.0
    * - :ref:`sphx_glr_get_started_tutorials_quick_start.py` (``quick_start.py``)
-     - 00:00.160
+     - 00:00.195
      - 0.0
diff --git a/docs/_sources/how_to/tutorials/cross_compilation_and_rpc.rst b/docs/_sources/how_to/tutorials/cross_compilation_and_rpc.rst
index 28877b9ccdf..e121d1bf2f5 100644
--- a/docs/_sources/how_to/tutorials/cross_compilation_and_rpc.rst
+++ b/docs/_sources/how_to/tutorials/cross_compilation_and_rpc.rst
@@ -275,7 +275,7 @@ device and returns the measured cost. Network overhead is excluded.
 
  .. code-block:: none
 
-    9.01e-08 secs/op
+    1.09e-07 secs/op
 
 
 
@@ -864,8 +864,8 @@ This workflow is applicable to various deployment scenarios:
     Converted PyTorch model to Relax:
       - Number of parameters: 4
     Using local target for demonstration
-    Exported library to: /tmp/tmp09m5le87/model_deployed.so
-    Saved parameters to: /tmp/tmp09m5le87/model_params.npz
+    Exported library to: /tmp/tmph202itlk/model_deployed.so
+    Saved parameters to: /tmp/tmph202itlk/model_params.npz
 
     RPC workflow (works for any remote device):
     ==================================================
diff --git a/docs/_sources/how_to/tutorials/e2e_opt_model.rst b/docs/_sources/how_to/tutorials/e2e_opt_model.rst
index 427cf103ea5..822555970f0 100644
--- a/docs/_sources/how_to/tutorials/e2e_opt_model.rst
+++ b/docs/_sources/how_to/tutorials/e2e_opt_model.rst
@@ -54,7 +54,7 @@ PyTorch.
  .. code-block:: none
 
     Downloading: "https://download.pytorch.org/models/resnet18-f37072fd.pth" to /workspace/.cache/torch/hub/checkpoints/resnet18-f37072fd.pth
-       0%|          | 0.00/44.7M [00:00<?, ?B/s]      60%|██████    | 26.9M/44.7M [00:00<00:00, 281MB/s]     100%|██████████| 44.7M/44.7M [00:00<00:00, 310MB/s]
+       0%|          | 0.00/44.7M [00:00<?, ?B/s]      67%|██████▋   | 29.8M/44.7M [00:00<00:00, 312MB/s]     100%|██████████| 44.7M/44.7M [00:00<00:00, 336MB/s]
 
 
 
diff --git a/docs/_sources/how_to/tutorials/sg_execution_times.rst b/docs/_sources/how_to/tutorials/sg_execution_times.rst
index 6f58570ff22..b2e5503d5a7 100644
--- a/docs/_sources/how_to/tutorials/sg_execution_times.rst
+++ b/docs/_sources/how_to/tutorials/sg_execution_times.rst
@@ -6,7 +6,7 @@
 
 Computation times
 =================
-**00:15.357** total execution time for 8 files **from how_to/tutorials**:
+**00:18.602** total execution time for 8 files **from how_to/tutorials**:
 
 .. container::
 
@@ -33,25 +33,25 @@ Computation times
      - Time
      - Mem (MB)
    * - :ref:`sphx_glr_how_to_tutorials_optimize_llm.py` (``optimize_llm.py``)
-     - 00:10.569
+     - 00:13.188
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_import_model.py` (``import_model.py``)
-     - 00:03.278
+     - 00:03.678
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_e2e_opt_model.py` (``e2e_opt_model.py``)
-     - 00:00.695
+     - 00:00.734
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``)
-     - 00:00.475
+     - 00:00.591
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_customize_opt.py` (``customize_opt.py``)
-     - 00:00.299
+     - 00:00.360
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_bring_your_own_codegen.py` (``bring_your_own_codegen.py``)
-     - 00:00.035
+     - 00:00.043
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_mix_python_and_tvm_with_pymodule.py` (``mix_python_and_tvm_with_pymodule.py``)
-     - 00:00.004
+     - 00:00.005
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_export_and_load_executable.py` (``export_and_load_executable.py``)
      - 00:00.002
diff --git a/docs/_sources/sg_execution_times.rst b/docs/_sources/sg_execution_times.rst
index defd812d41a..4bb22c43717 100644
--- a/docs/_sources/sg_execution_times.rst
+++ b/docs/_sources/sg_execution_times.rst
@@ -6,7 +6,7 @@
 
 Computation times
 =================
-**00:21.592** total execution time for 16 files **from all galleries**:
+**00:25.918** total execution time for 16 files **from all galleries**:
 
 .. container::
 
@@ -33,49 +33,49 @@ Computation times
      - Time
      - Mem (MB)
    * - :ref:`sphx_glr_how_to_tutorials_optimize_llm.py` (``../how_to/tutorials/optimize_llm.py``)
-     - 00:10.569
+     - 00:13.188
      - 0.0
    * - :ref:`sphx_glr_get_started_tutorials_ir_module.py` (``../get_started/tutorials/ir_module.py``)
-     - 00:05.336
+     - 00:06.212
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_import_model.py` (``../how_to/tutorials/import_model.py``)
-     - 00:03.278
+     - 00:03.678
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_e2e_opt_model.py` (``../how_to/tutorials/e2e_opt_model.py``)
-     - 00:00.695
+     - 00:00.734
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_cross_compilation_and_rpc.py` (``../how_to/tutorials/cross_compilation_and_rpc.py``)
-     - 00:00.475
+     - 00:00.591
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_customize_opt.py` (``../how_to/tutorials/customize_opt.py``)
-     - 00:00.299
+     - 00:00.360
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_transformation.py` (``../deep_dive/tensor_ir/tutorials/tir_transformation.py``)
-     - 00:00.267
+     - 00:00.318
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_dlight_gpu_scheduling.py` (``../deep_dive/tensor_ir/tutorials/dlight_gpu_scheduling.py``)
-     - 00:00.164
+     - 00:00.212
      - 0.0
    * - :ref:`sphx_glr_get_started_tutorials_quick_start.py` (``../get_started/tutorials/quick_start.py``)
-     - 00:00.160
+     - 00:00.195
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_creation.py` (``../deep_dive/tensor_ir/tutorials/tir_creation.py``)
-     - 00:00.137
+     - 00:00.164
      - 0.0
    * - :ref:`sphx_glr_deep_dive_relax_tutorials_relax_creation.py` (``../deep_dive/relax/tutorials/relax_creation.py``)
-     - 00:00.087
+     - 00:00.109
      - 0.0
    * - :ref:`sphx_glr_deep_dive_relax_tutorials_relax_transformation.py` (``../deep_dive/relax/tutorials/relax_transformation.py``)
-     - 00:00.073
+     - 00:00.095
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_bring_your_own_codegen.py` (``../how_to/tutorials/bring_your_own_codegen.py``)
-     - 00:00.035
+     - 00:00.043
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_meta_schedule.py` (``../deep_dive/tensor_ir/tutorials/meta_schedule.py``)
-     - 00:00.010
+     - 00:00.011
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_mix_python_and_tvm_with_pymodule.py` (``../how_to/tutorials/mix_python_and_tvm_with_pymodule.py``)
-     - 00:00.004
+     - 00:00.005
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_export_and_load_executable.py` (``../how_to/tutorials/export_and_load_executable.py``)
      - 00:00.002
diff --git a/docs/commit_hash b/docs/commit_hash
index 1b82d655f4d..a2bae2bf393 100644
--- a/docs/commit_hash
+++ b/docs/commit_hash
@@ -1 +1 @@
-fd02c02b2a0f194a1dde6615a8952f8c6249a8d8
+5128fc065591cc4b6e2a0fc9b51718611cc4c0ea
diff --git a/docs/deep_dive/relax/tutorials/sg_execution_times.html b/docs/deep_dive/relax/tutorials/sg_execution_times.html
index 3386b129b8a..51ee27a6b4d 100644
--- a/docs/deep_dive/relax/tutorials/sg_execution_times.html
+++ b/docs/deep_dive/relax/tutorials/sg_execution_times.html
@@ -634,7 +634,7 @@ document.write(`
                   
   <section id="computation-times">
 <span id="sphx-glr-deep-dive-relax-tutorials-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Link to this heading">#</a></h1>
-<p><strong>00:00.160</strong> total execution time for 2 files <strong>from deep_dive/relax/tutorials</strong>:</p>
+<p><strong>00:00.204</strong> total execution time for 2 files <strong>from deep_dive/relax/tutorials</strong>:</p>
 <div class="docutils container">
 <style scoped>
 <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet" />
@@ -656,11 +656,11 @@ $(document).ready( function () {
 </thead>
 <tbody>
 <tr class="row-even"><td><p><a class="reference internal" href="relax_creation.html#sphx-glr-deep-dive-relax-tutorials-relax-creation-py"><span class="std std-ref">Relax Creation</span></a> (<code class="docutils literal notranslate"><span class="pre">relax_creation.py</span></code>)</p></td>
-<td><p>00:00.087</p></td>
+<td><p>00:00.109</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="relax_transformation.html#sphx-glr-deep-dive-relax-tutorials-relax-transformation-py"><span class="std std-ref">Transformation</span></a> (<code class="docutils literal notranslate"><span class="pre">relax_transformation.py</span></code>)</p></td>
-<td><p>00:00.073</p></td>
+<td><p>00:00.095</p></td>
 <td><p>0.0</p></td>
 </tr>
 </tbody>
diff --git a/docs/deep_dive/tensor_ir/tutorials/sg_execution_times.html b/docs/deep_dive/tensor_ir/tutorials/sg_execution_times.html
index dd9a1377597..c786033c4d7 100644
--- a/docs/deep_dive/tensor_ir/tutorials/sg_execution_times.html
+++ b/docs/deep_dive/tensor_ir/tutorials/sg_execution_times.html
@@ -634,7 +634,7 @@ document.write(`
                   
   <section id="computation-times">
 <span id="sphx-glr-deep-dive-tensor-ir-tutorials-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Link to this heading">#</a></h1>
-<p><strong>00:00.578</strong> total execution time for 4 files <strong>from deep_dive/tensor_ir/tutorials</strong>:</p>
+<p><strong>00:00.705</strong> total execution time for 4 files <strong>from deep_dive/tensor_ir/tutorials</strong>:</p>
 <div class="docutils container">
 <style scoped>
 <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet" />
@@ -656,19 +656,19 @@ $(document).ready( function () {
 </thead>
 <tbody>
 <tr class="row-even"><td><p><a class="reference internal" href="tir_transformation.html#sphx-glr-deep-dive-tensor-ir-tutorials-tir-transformation-py"><span class="std std-ref">Transformation</span></a> (<code class="docutils literal notranslate"><span class="pre">tir_transformation.py</span></code>)</p></td>
-<td><p>00:00.267</p></td>
+<td><p>00:00.318</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="dlight_gpu_scheduling.html#sphx-glr-deep-dive-tensor-ir-tutorials-dlight-gpu-scheduling-py"><span class="std std-ref">DLight: Rule-Based GPU Scheduling</span></a> (<code class="docutils literal notranslate"><span class="pre">dlight_gpu_scheduling.py</span></code>)</p></td>
-<td><p>00:00.164</p></td>
+<td><p>00:00.212</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="tir_creation.html#sphx-glr-deep-dive-tensor-ir-tutorials-tir-creation-py"><span class="std std-ref">TensorIR Creation</span></a> (<code class="docutils literal notranslate"><span class="pre">tir_creation.py</span></code>)</p></td>
-<td><p>00:00.137</p></td>
+<td><p>00:00.164</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="meta_schedule.html#sphx-glr-deep-dive-tensor-ir-tutorials-meta-schedule-py"><span class="std std-ref">MetaSchedule: Search-Based Auto-Tuning</span></a> (<code class="docutils literal notranslate"><span class="pre">meta_schedule.py</span></code>)</p></td>
-<td><p>00:00.010</p></td>
+<td><p>00:00.011</p></td>
 <td><p>0.0</p></td>
 </tr>
 </tbody>
diff --git a/docs/deep_dive/tensor_ir/tutorials/tir_transformation.html b/docs/deep_dive/tensor_ir/tutorials/tir_transformation.html
index 394a55ccfd3..20fe180b2de 100644
--- a/docs/deep_dive/tensor_ir/tutorials/tir_transformation.html
+++ b/docs/deep_dive/tensor_ir/tutorials/tir_transformation.html
@@ -722,7 +722,7 @@ original implementation.</p>
 </div>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-   2.6702       2.6702       2.6702       2.6702       0.0000
+   2.7837       2.7837       2.7837       2.7837       0.0000
 </pre></div>
 </div>
 <section id="initialization-schedule">
@@ -838,7 +838,7 @@ class Module:
 
 Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-   0.8632       0.8632       0.8632       0.8632       0.0000
+   0.8672       0.8672       0.8672       0.8672       0.0000
 </pre></div>
 </div>
 </section>
@@ -946,7 +946,7 @@ class Module:
 
 Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-   0.3523       0.3523       0.3523       0.3523       0.0000
+   0.3371       0.3371       0.3371       0.3371       0.0000
 </pre></div>
 </div>
 </section>
diff --git a/docs/get_started/tutorials/ir_module.html b/docs/get_started/tutorials/ir_module.html
index d0d30d027f7..5a64773576a 100644
--- a/docs/get_started/tutorials/ir_module.html
+++ b/docs/get_started/tutorials/ir_module.html
@@ -1229,8 +1229,8 @@ backends.</p>
 <span class="nb">print</span><span class="p">(</span><span class="n">cpu_out</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[ 0.00275111 -0.03913351 -0.00985708 -0.11234792  0.07988546 -0.00127671
-  -0.01788248 -0.13117674  0.017374    0.14502347]]
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[-0.03631149  0.28754458  0.1807923  -0.1895414   0.06168855  0.00620006
+   0.12755947 -0.1032482   0.08877952  0.03172699]]
 </pre></div>
 </div>
 </section>
@@ -1264,8 +1264,8 @@ the details of <code class="docutils literal notranslate"><span class="pre">DLig
 <span class="k">assert</span> <span class="n">np</span><span class="o">.</span><span class="n">allclose</span><span class="p">(</span><span class="n">cpu_out</span><span class="p">,</span> <span class="n">gpu_out</span><span class="p">,</span> <span class="n">atol</span><span class="o">=</span><span class="mf">1e-3</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[ 0.00275109 -0.03913352 -0.00985711 -0.11234793  0.07988548 -0.00127672
-  -0.01788251 -0.13117671  0.01737402  0.14502347]]
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[-0.03631151  0.28754455  0.18079233 -0.18954137  0.06168859  0.00620007
+   0.12755948 -0.10324825  0.08877952  0.03172702]]
 </pre></div>
 </div>
 </section>
diff --git a/docs/get_started/tutorials/quick_start.html b/docs/get_started/tutorials/quick_start.html
index 44c2d98df7c..581dded356c 100644
--- a/docs/get_started/tutorials/quick_start.html
+++ b/docs/get_started/tutorials/quick_start.html
@@ -804,8 +804,8 @@ different devices.</p>
 <span class="nb">print</span><span class="p">(</span><span class="n">vm</span><span class="p">[</span><span class="s2">&quot;forward&quot;</span><span class="p">](</span><span class="n">tvm_data</span><span class="p">,</span> <span class="o">*</span><a href="https://docs.python.org/3/builtins/stdtypes.html#list" title="builtins.list" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">params</span></a><span class="p">)</span>< [...]
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[25243.785 24990.518 26197.709 27338.156 26491.863 24672.29  25217.938
-  24741.645 23997.127 26500.102]]
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[26131.809 24740.76  25151.146 25819.623 25224.21  23682.678 26168.857
+  25200.941 24416.607 25235.14 ]]
 </pre></div>
 </div>
 <p>Our goal is to bring machine learning to the application with any language of interest,
diff --git a/docs/get_started/tutorials/sg_execution_times.html b/docs/get_started/tutorials/sg_execution_times.html
index b302cf7f79a..fefa6bf3914 100644
--- a/docs/get_started/tutorials/sg_execution_times.html
+++ b/docs/get_started/tutorials/sg_execution_times.html
@@ -634,7 +634,7 @@ document.write(`
                   
   <section id="computation-times">
 <span id="sphx-glr-get-started-tutorials-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Link to this heading">#</a></h1>
-<p><strong>00:05.496</strong> total execution time for 2 files <strong>from get_started/tutorials</strong>:</p>
+<p><strong>00:06.407</strong> total execution time for 2 files <strong>from get_started/tutorials</strong>:</p>
 <div class="docutils container">
 <style scoped>
 <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet" />
@@ -656,11 +656,11 @@ $(document).ready( function () {
 </thead>
 <tbody>
 <tr class="row-even"><td><p><a class="reference internal" href="ir_module.html#sphx-glr-get-started-tutorials-ir-module-py"><span class="std std-ref">IRModule</span></a> (<code class="docutils literal notranslate"><span class="pre">ir_module.py</span></code>)</p></td>
-<td><p>00:05.336</p></td>
+<td><p>00:06.212</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="quick_start.html#sphx-glr-get-started-tutorials-quick-start-py"><span class="std std-ref">Quick Start</span></a> (<code class="docutils literal notranslate"><span class="pre">quick_start.py</span></code>)</p></td>
-<td><p>00:00.160</p></td>
+<td><p>00:00.195</p></td>
 <td><p>0.0</p></td>
 </tr>
 </tbody>
diff --git a/docs/how_to/tutorials/cross_compilation_and_rpc.html b/docs/how_to/tutorials/cross_compilation_and_rpc.html
index bff4809a2fe..02a291171b4 100644
--- a/docs/how_to/tutorials/cross_compilation_and_rpc.html
+++ b/docs/how_to/tutorials/cross_compilation_and_rpc.html
@@ -833,7 +833,7 @@ device and returns the measured cost. Network overhead is excluded.</p>
 <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">cost</span><span class="si">:</span><span class="s2">g</span><span class="si">}</span><span class="s2"> secs/op&quot;</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>9.01e-08 secs/op
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>1.09e-07 secs/op
 </pre></div>
 </div>
 </section>
@@ -1362,8 +1362,8 @@ for ONNX models. Simply replace <code class="docutils literal notranslate"><span
 Converted PyTorch model to Relax:
   - Number of parameters: 4
 Using local target for demonstration
-Exported library to: /tmp/tmp09m5le87/model_deployed.so
-Saved parameters to: /tmp/tmp09m5le87/model_params.npz
+Exported library to: /tmp/tmph202itlk/model_deployed.so
+Saved parameters to: /tmp/tmph202itlk/model_params.npz
 
 RPC workflow (works for any remote device):
 ==================================================
diff --git a/docs/how_to/tutorials/e2e_opt_model.html b/docs/how_to/tutorials/e2e_opt_model.html
index 9b833e50ee7..47077970531 100644
--- a/docs/how_to/tutorials/e2e_opt_model.html
+++ b/docs/how_to/tutorials/e2e_opt_model.html
@@ -674,8 +674,8 @@ PyTorch.</p>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading: &quot;https://download.pytorch.org/models/resnet18-f37072fd.pth&quot; to /workspace/.cache/torch/hub/checkpoints/resnet18-f37072fd.pth
 
   0%|          | 0.00/44.7M [00:00&lt;?, ?B/s]
- 60%|██████    | 26.9M/44.7M [00:00&lt;00:00, 281MB/s]
-100%|██████████| 44.7M/44.7M [00:00&lt;00:00, 310MB/s]
+ 67%|██████▋   | 29.8M/44.7M [00:00&lt;00:00, 312MB/s]
+100%|██████████| 44.7M/44.7M [00:00&lt;00:00, 336MB/s]
 </pre></div>
 </div>
 </section>
diff --git a/docs/how_to/tutorials/sg_execution_times.html b/docs/how_to/tutorials/sg_execution_times.html
index 73103a04e67..e0f17d75b87 100644
--- a/docs/how_to/tutorials/sg_execution_times.html
+++ b/docs/how_to/tutorials/sg_execution_times.html
@@ -634,7 +634,7 @@ document.write(`
                   
   <section id="computation-times">
 <span id="sphx-glr-how-to-tutorials-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Link to this heading">#</a></h1>
-<p><strong>00:15.357</strong> total execution time for 8 files <strong>from how_to/tutorials</strong>:</p>
+<p><strong>00:18.602</strong> total execution time for 8 files <strong>from how_to/tutorials</strong>:</p>
 <div class="docutils container">
 <style scoped>
 <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet" />
@@ -656,31 +656,31 @@ $(document).ready( function () {
 </thead>
 <tbody>
 <tr class="row-even"><td><p><a class="reference internal" href="optimize_llm.html#sphx-glr-how-to-tutorials-optimize-llm-py"><span class="std std-ref">Optimize Large Language Model</span></a> (<code class="docutils literal notranslate"><span class="pre">optimize_llm.py</span></code>)</p></td>
-<td><p>00:10.569</p></td>
+<td><p>00:13.188</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="import_model.html#sphx-glr-how-to-tutorials-import-model-py"><span class="std std-ref">Importing Models from ML Frameworks</span></a> (<code class="docutils literal notranslate"><span class="pre">import_model.py</span></code>)</p></td>
-<td><p>00:03.278</p></td>
+<td><p>00:03.678</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="e2e_opt_model.html#sphx-glr-how-to-tutorials-e2e-opt-model-py"><span class="std std-ref">End-to-End Optimize Model</span></a> (<code class="docutils literal notranslate"><span class="pre">e2e_opt_model.py</span></code>)</p></td>
-<td><p>00:00.695</p></td>
+<td><p>00:00.734</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="cross_compilation_and_rpc.html#sphx-glr-how-to-tutorials-cross-compilation-and-rpc-py"><span class="std std-ref">Cross Compilation and RPC</span></a> (<code class="docutils literal notranslate"><span class="pre">cross_compilation_and_rpc.py</span></code>)</p></td>
-<td><p>00:00.475</p></td>
+<td><p>00:00.591</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="customize_opt.html#sphx-glr-how-to-tutorials-customize-opt-py"><span class="std std-ref">Customize Optimization</span></a> (<code class="docutils literal notranslate"><span class="pre">customize_opt.py</span></code>)</p></td>
-<td><p>00:00.299</p></td>
+<td><p>00:00.360</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="bring_your_own_codegen.html#sphx-glr-how-to-tutorials-bring-your-own-codegen-py"><span class="std std-ref">Bring Your Own Codegen</span></a> (<code class="docutils literal notranslate"><span class="pre">bring_your_own_codegen.py</span></code>)</p></td>
-<td><p>00:00.035</p></td>
+<td><p>00:00.043</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="mix_python_and_tvm_with_pymodule.html#sphx-glr-how-to-tutorials-mix-python-and-tvm-with-pymodule-py"><span class="std std-ref">Mix Python/PyTorch with TVM Using BasePyModule</span></a> (<code class="docutils literal notranslate"><span class="pre">mix_python_and_tvm_with_pymodule.py</span></code>)</p></td>
-<td><p>00:00.004</p></td>
+<td><p>00:00.005</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="export_and_load_executable.html#sphx-glr-how-to-tutorials-export-and-load-executable-py"><span class="std std-ref">Export and Load Relax Executables</span></a> (<code class="docutils literal notranslate"><span class="pre">export_and_load_executable.py</span></code>)</p></td>
diff --git a/docs/reference/api/doxygen/analyzer_8h_source.html b/docs/reference/api/doxygen/analyzer_8h_source.html
index d01ee9af748..204fb25268c 100644
--- a/docs/reference/api/doxygen/analyzer_8h_source.html
+++ b/docs/reference/api/doxygen/analyzer_8h_source.html
@@ -566,9 +566,9 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00992" name="l00992"></a><span class="lineno">  992</span>}  <span class="comment">// namespace sym</span></div>
 <div class="line"><a id="l00993" name="l00993"></a><span class="lineno">  993</span>}  <span class="comment">// namespace tvm</span></div>
 <div class="line"><a id="l00994" name="l00994"></a><span class="lineno">  994</span><span class="preprocessor">#endif  </span><span class="comment">// TVM_SYM_ANALYZER_H_</span></div>
-<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:412</div></div>
-<div class="ttc" id="aclasstvm_1_1Range_html"><div class="ttname"><a href="classtvm_1_1Range.html">tvm::Range</a></div><div class="ttdoc">Range container</div><div class="ttdef"><b>Definition</b> expr.h:786</div></div>
-<div class="ttc" id="aclasstvm_1_1Var_html"><div class="ttname"><a href="classtvm_1_1Var.html">tvm::Var</a></div><div class="ttdoc">Managed reference to VarNode.</div><div class="ttdef"><b>Definition</b> expr.h:387</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:404</div></div>
+<div class="ttc" id="aclasstvm_1_1Range_html"><div class="ttname"><a href="classtvm_1_1Range.html">tvm::Range</a></div><div class="ttdoc">Range container</div><div class="ttdef"><b>Definition</b> expr.h:751</div></div>
+<div class="ttc" id="aclasstvm_1_1Var_html"><div class="ttname"><a href="classtvm_1_1Var.html">tvm::Var</a></div><div class="ttdoc">Managed reference to VarNode.</div><div class="ttdef"><b>Definition</b> expr.h:375</div></div>
 <div class="ttc" id="aclasstvm_1_1With_html"><div class="ttname"><a href="classtvm_1_1With.html">tvm::With</a></div><div class="ttdoc">RAII wrapper function to enter and exit a context object similar to python's with syntax.</div><div class="ttdef"><b>Definition</b> with_context.h:59</div></div>
 <div class="ttc" id="aclasstvm_1_1sym_1_1AnalyzerObj_html"><div class="ttname"><a href="classtvm_1_1sym_1_1AnalyzerObj.html">tvm::sym::AnalyzerObj</a></div><div class="ttdoc">Analyzer that contains bunch of sub-analyzers.</div><div class="ttdef"><b>Definition</b> analyzer.h:713</div></div>
 <div class="ttc" id="aclasstvm_1_1sym_1_1AnalyzerObj_html_a0d5ef9c26cf8c54841e94d7e40af2edd"><div class="ttname"><a href="classtvm_1_1sym_1_1AnalyzerObj.html#a0d5ef9c26cf8c54841e94d7e40af2edd">tvm::sym::AnalyzerObj::rewrite_simplify</a></div><div class="ttdeci">RewriteSimplifier rewrite_simplify</div><div class="ttdoc">sub-analyzer rewrite simplify</div><div class="ttdef"><b>Definition</b> analyzer.h:720</div></div>
diff --git a/docs/reference/api/doxygen/axis__group__graph_8h.html b/docs/reference/api/doxygen/axis__group__graph_8h.html
index a6480514d60..32b3633687e 100644
--- a/docs/reference/api/doxygen/axis__group__graph_8h.html
+++ b/docs/reference/api/doxygen/axis__group__graph_8h.html
@@ -132,9 +132,9 @@ Typedefs</h2></td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
 Functions</h2></td></tr>
-<tr class="memitem:ad0d1f3fb1101e1acc7727de06ba8069a" id="r_ad0d1f3fb1101e1acc7727de06ba8069a"><td class="memItemLeft" align="right" valign="top">ffi::Optional&lt; <a class="el" href="namespacetvm_1_1tirx.html#a6afba4ff0c281c4916330c3b0e2e6ad3">Var</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm_1_1tirx.html#ad0d1f3fb1101e1acc7727de06ba8069a">tvm::tirx::GetShardingVarFromIndex</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> in [...]
-<tr class="memdesc:ad0d1f3fb1101e1acc7727de06ba8069a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Suppose we want to shard a buffer along a specific dimension, we need to know how to rewrite the access index of the buffer. To make it simple, we only support the case that the access can be rewritten by changing the extent of an iter var.  <br /></td></tr>
-<tr class="separator:ad0d1f3fb1101e1acc7727de06ba8069a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3844604362b94ff7c9d439d21002657e" id="r_a3844604362b94ff7c9d439d21002657e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacetvm_1_1tirx.html#a6afba4ff0c281c4916330c3b0e2e6ad3">Var</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm_1_1tirx.html#a3844604362b94ff7c9d439d21002657e">tvm::tirx::GetShardingVarFromIndex</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> index, ffi::Map&lt; <a cl [...]
+<tr class="memdesc:a3844604362b94ff7c9d439d21002657e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Suppose we want to shard a buffer along a specific dimension, we need to know how to rewrite the access index of the buffer. To make it simple, we only support the case that the access can be rewritten by changing the extent of an iter var.  <br /></td></tr>
+<tr class="separator:a3844604362b94ff7c9d439d21002657e"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 </div><!-- contents -->
 <!-- start footer part -->
diff --git a/docs/reference/api/doxygen/axis__group__graph_8h_source.html b/docs/reference/api/doxygen/axis__group__graph_8h_source.html
index 72a85331d34..5891b7c82f8 100644
--- a/docs/reference/api/doxygen/axis__group__graph_8h_source.html
+++ b/docs/reference/api/doxygen/axis__group__graph_8h_source.html
@@ -138,8 +138,8 @@ $(document).ready(function() { init_codefold(0); });
 </div>
 <div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span>};</div>
 </div>
-<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"><a class="line" href="namespacetvm_1_1tirx.html#ad0d1f3fb1101e1acc7727de06ba8069a">   62</a></span>ffi::Optional&lt;Var&gt; <a class="code hl_function" href="namespacetvm_1_1tirx.html#ad0d1f3fb1101e1acc7727de06ba8069a">GetShardingVarFromIndex</a>(<a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> index, ffi::Map&lt;Var, Range&gt; var_range,</div>
-<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span>                                           <span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1sym_1_1Analyzer.html">sym::Analyzer</a>&amp; analyzer);</div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"><a class="line" href="namespacetvm_1_1tirx.html#a3844604362b94ff7c9d439d21002657e">   62</a></span><a class="code hl_class" href="classtvm_1_1Var.html">Var</a> <a class="code hl_function" href="namespacetvm_1_1tirx.html#a3844604362b94ff7c9d439d21002657e">GetShardingVarFromIndex</a>(<a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> index, ffi::Map&lt;Var, Range&gt; var_range,</div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span>                            <span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1sym_1_1Analyzer.html">sym::Analyzer</a>&amp; analyzer);</div>
 <div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span> </div>
 <div class="foldopen" id="foldopen00069" data-start="{" data-end="};">
 <div class="line"><a id="l00069" name="l00069"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferAxisGraphExtractor.html">   69</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1tirx_1_1BufferAxisGraphExtractor.html">BufferAxisGraphExtractor</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1s__tir_1_1StmtExprVisitor.html">s_tir::StmtExprVisitor</a> {</div>
@@ -232,8 +232,8 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00152" name="l00152"></a><span class="lineno">  152</span>        !intset_b.MatchRange(<a class="code hl_function" href="classtvm_1_1Range.html#a91e7301ca1d135ca5f8ed199efbb9818">Range::FromMinExtent</a>(0, buffer_shape_b))) {</div>
 <div class="line"><a id="l00153" name="l00153"></a><span class="lineno">  153</span>      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
 <div class="line"><a id="l00154" name="l00154"></a><span class="lineno">  154</span>    }</div>
-<div class="line"><a id="l00155" name="l00155"></a><span class="lineno">  155</span>    <span class="keyword">auto</span> matched_var = <a class="code hl_function" href="namespacetvm_1_1tirx.html#ad0d1f3fb1101e1acc7727de06ba8069a">GetShardingVarFromIndex</a>(b, iter_var_range_, analyzer);</div>
-<div class="line"><a id="l00156" name="l00156"></a><span class="lineno">  156</span>    <span class="keywordflow">if</span> (!matched_var.has_value() || !matched_var.value().same_as(var)) {</div>
+<div class="line"><a id="l00155" name="l00155"></a><span class="lineno">  155</span>    <a class="code hl_typedef" href="namespacetvm_1_1tirx.html#a6afba4ff0c281c4916330c3b0e2e6ad3">Var</a> matched_var = <a class="code hl_function" href="namespacetvm_1_1tirx.html#a3844604362b94ff7c9d439d21002657e">GetShardingVarFromIndex</a>(b, iter_var_range_, analyzer);</div>
+<div class="line"><a id="l00156" name="l00156"></a><span class="lineno">  156</span>    <span class="keywordflow">if</span> (!matched_var.same_as(var)) {</div>
 <div class="line"><a id="l00157" name="l00157"></a><span class="lineno">  157</span>      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
 <div class="line"><a id="l00158" name="l00158"></a><span class="lineno">  158</span>    }</div>
 <div class="line"><a id="l00159" name="l00159"></a><span class="lineno">  159</span>    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
@@ -537,13 +537,13 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00489" name="l00489"></a><span class="lineno">  489</span>}  <span class="comment">// namespace tvm</span></div>
 <div class="line"><a id="l00490" name="l00490"></a><span class="lineno">  490</span> </div>
 <div class="line"><a id="l00491" name="l00491"></a><span class="lineno">  491</span><span class="preprocessor">#endif  </span><span class="comment">// TVM_RELAX_DISTRIBUTED_AXIS_GROUP_GRAPH_H_</span></div>
-<div class="ttc" id="aclasstvm_1_1Call_html"><div class="ttname"><a href="classtvm_1_1Call.html">tvm::Call</a></div><div class="ttdoc">Managed reference to CallNode.</div><div class="ttdef"><b>Definition</b> expr.h:532</div></div>
+<div class="ttc" id="aclasstvm_1_1Call_html"><div class="ttname"><a href="classtvm_1_1Call.html">tvm::Call</a></div><div class="ttdoc">Managed reference to CallNode.</div><div class="ttdef"><b>Definition</b> expr.h:511</div></div>
 <div class="ttc" id="aclasstvm_1_1ExprNode_html"><div class="ttname"><a href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></div><div class="ttdoc">Base type of all the expressions.</div><div class="ttdef"><b>Definition</b> base_expr.h:303</div></div>
-<div class="ttc" id="aclasstvm_1_1GenericConstNode_html"><div class="ttname"><a href="classtvm_1_1GenericConstNode.html">tvm::GenericConstNode</a></div><div class="ttdoc">A constant whose payload is separate from its expression type.</div><div class="ttdef"><b>Definition</b> expr.h:575</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:412</div></div>
+<div class="ttc" id="aclasstvm_1_1GenericConstNode_html"><div class="ttname"><a href="classtvm_1_1GenericConstNode.html">tvm::GenericConstNode</a></div><div class="ttdoc">A constant whose payload is separate from its expression type.</div><div class="ttdef"><b>Definition</b> expr.h:550</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:404</div></div>
 <div class="ttc" id="aclasstvm_1_1Range_html_a91e7301ca1d135ca5f8ed199efbb9818"><div class="ttname"><a href="classtvm_1_1Range.html#a91e7301ca1d135ca5f8ed199efbb9818">tvm::Range::FromMinExtent</a></div><div class="ttdeci">static Range FromMinExtent(PrimExpr min, PrimExpr extent, Span span=Span())</div><div class="ttdoc">construct a new range with min and extent The corresponding constructor is removed,...</div></div>
-<div class="ttc" id="aclasstvm_1_1VarNode_html"><div class="ttname"><a href="classtvm_1_1VarNode.html">tvm::VarNode</a></div><div class="ttdoc">A local variable in the IR.</div><div class="ttdef"><b>Definition</b> expr.h:367</div></div>
-<div class="ttc" id="aclasstvm_1_1Var_html"><div class="ttname"><a href="classtvm_1_1Var.html">tvm::Var</a></div><div class="ttdoc">Managed reference to VarNode.</div><div class="ttdef"><b>Definition</b> expr.h:387</div></div>
+<div class="ttc" id="aclasstvm_1_1VarNode_html"><div class="ttname"><a href="classtvm_1_1VarNode.html">tvm::VarNode</a></div><div class="ttdoc">A local variable in the IR.</div><div class="ttdef"><b>Definition</b> expr.h:355</div></div>
+<div class="ttc" id="aclasstvm_1_1Var_html"><div class="ttname"><a href="classtvm_1_1Var.html">tvm::Var</a></div><div class="ttdoc">Managed reference to VarNode.</div><div class="ttdef"><b>Definition</b> expr.h:375</div></div>
 <div class="ttc" id="aclasstvm_1_1relax_1_1distributed_1_1DeviceMesh_html"><div class="ttname"><a href="classtvm_1_1relax_1_1distributed_1_1DeviceMesh.html">tvm::relax::distributed::DeviceMesh</a></div><div class="ttdoc">Managed reference to a DeviceMesh.</div><div class="ttdef"><b>Definition</b> global_info.h:63</div></div>
 <div class="ttc" id="aclasstvm_1_1s__tir_1_1StmtExprVisitor_html"><div class="ttname"><a href="classtvm_1_1s__tir_1_1StmtExprVisitor.html">tvm::s_tir::StmtExprVisitor</a></div><div class="ttdoc">Extend native TIRX traversal with schedulable block semantics.</div><div class="ttdef"><b>Definition</b> stmt_functor.h:76</div></div>
 <div class="ttc" id="aclasstvm_1_1s__tir_1_1StmtExprVisitor_html_ab2ae0a6dd9a80526828300ff4e76c2d8"><div class="ttname"><a href="classtvm_1_1s__tir_1_1StmtExprVisitor.html#ab2ae0a6dd9a80526828300ff4e76c2d8">tvm::s_tir::StmtExprVisitor::Visit_</a></div><div class="ttdeci">virtual ffi::Optional&lt; VisitInterrupt &gt; Visit_(const SBlockNode *op)</div></div>
@@ -553,19 +553,19 @@ $(document).ready(function() { init_codefold(0); });
 <div class="ttc" id="aclasstvm_1_1tirx_1_1BufferAxisGraphExtractor_html_ad8e01d1d6fe77bb27cb007cde0cb83d5"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferAxisGraphExtractor.html#ad8e01d1d6fe77bb27cb007cde0cb83d5">tvm::tirx::BufferAxisGraphExtractor::GetTIRVarAxisGraph</a></div><div class="ttdeci">static std::vector&lt; std::vector&lt; TIRVarAxis &gt; &gt; GetTIRVarAxisGraph(const PrimFunc &amp;prim_func)</div><div class="ttdef"><b>Definition</b> axis_group_graph.h:71</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1BufferAxisHash_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferAxisHash.html">tvm::tirx::BufferAxisHash</a></div><div class="ttdef"><b>Definition</b> axis_group_graph.h:45</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1BufferAxisHash_html_ab28a93a16fa8e3f849f47a0c43ad6282"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferAxisHash.html#ab28a93a16fa8e3f849f47a0c43ad6282">tvm::tirx::BufferAxisHash::operator()</a></div><div class="ttdeci">size_t operator()(const BufferAxis &amp;buffer_axis) const</div><div class="ttdef"><b>Definition</b> axis_group_graph.h:47</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferStoreNode_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferStoreNode.html">tvm::tirx::BufferStoreNode</a></div><div class="ttdoc">Store value to the high dimension buffer.</div><div class="ttdef"><b>Definition</b> stmt.h:225</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferStoreNode_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferStoreNode.html">tvm::tirx::BufferStoreNode</a></div><div class="ttdoc">Store value to the high dimension buffer.</div><div class="ttdef"><b>Definition</b> stmt.h:202</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html">tvm::tirx::BufferVar</a></div><div class="ttdoc">Checked zero-state view over an ordinary VarNode with TensorType.</div><div class="ttdef"><b>Definition</b> expr.h:50</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1PrimFunc_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1PrimFunc.html">tvm::tirx::PrimFunc</a></div><div class="ttdoc">Managed reference to PrimFuncNode.</div><div class="ttdef"><b>Definition</b> function.h:105</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1TensorTypeNode_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1TensorTypeNode.html">tvm::tirx::TensorTypeNode</a></div><div class="ttdoc">Structural type of a TIRx tensor variable.</div><div class="ttdef"><b>Definition</b> type.h:64</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1TensorTypeNode_html_a3d0caf4a6550665e9ad241df0bb00494"><div class="ttname"><a href="classtvm_1_1tirx_1_1TensorTypeNode.html#a3d0caf4a6550665e9ad241df0bb00494">tvm::tirx::TensorTypeNode::shape</a></div><div class="ttdeci">ffi::Array&lt; PrimExpr &gt; shape</div><div class="ttdoc">The type of the buffer prior to flattening.</div><div class="ttdef"><b>Definition</b> type.h:80</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1TensorTypeNode_html_a3d0caf4a6550665e9ad241df0bb00494"><div class="ttname"><a href="classtvm_1_1tirx_1_1TensorTypeNode.html#a3d0caf4a6550665e9ad241df0bb00494">tvm::tirx::TensorTypeNode::shape</a></div><div class="ttdeci">ffi::Array&lt; PrimExpr &gt; shape</div><div class="ttdoc">The type of the buffer prior to flattening.</div><div class="ttdef"><b>Definition</b> type.h:76</div></div>
 <div class="ttc" id="aiter__affine__map_8h_html"><div class="ttname"><a href="iter__affine__map_8h.html">iter_affine_map.h</a></div><div class="ttdoc">Iterator quasi-affine mapping patterns.</div></div>
 <div class="ttc" id="anamespacetvm_1_1sym_html_a4f90613dc6bcaf5600705007d3d95194"><div class="ttname"><a href="namespacetvm_1_1sym.html#a4f90613dc6bcaf5600705007d3d95194">tvm::sym::EvalSet</a></div><div class="ttdeci">IntSet EvalSet(PrimExpr e, const ffi::Map&lt; Var, IntSet &gt; &amp;dom_map)</div><div class="ttdoc">Find an symbolic integer set that contains all possible values of e given the domain of each variable...</div></div>
 <div class="ttc" id="anamespacetvm_1_1sym_html_ace8b2a1ec13be11d581491dbfb0bcdc3"><div class="ttname"><a href="namespacetvm_1_1sym.html#ace8b2a1ec13be11d581491dbfb0bcdc3">tvm::sym::AsIntSet</a></div><div class="ttdeci">ffi::Map&lt; Var, sym::IntSet &gt; AsIntSet(const ffi::Map&lt; Var, Range &gt; &amp;var_dom)</div><div class="ttdoc">Converts the Ranges to IntSets.</div></div>
 <div class="ttc" id="anamespacetvm_1_1te_html_a054fef7460475c6d4adb0c845648bcd7"><div class="ttname"><a href="namespacetvm_1_1te.html#a054fef7460475c6d4adb0c845648bcd7">tvm::te::var</a></div><div class="ttdeci">PrimVar var(std::string name_hint, PrimType t=PrimType::Int(32))</div><div class="ttdoc">Construct a new Var expression.</div></div>
+<div class="ttc" id="anamespacetvm_1_1tirx_html_a3844604362b94ff7c9d439d21002657e"><div class="ttname"><a href="namespacetvm_1_1tirx.html#a3844604362b94ff7c9d439d21002657e">tvm::tirx::GetShardingVarFromIndex</a></div><div class="ttdeci">Var GetShardingVarFromIndex(PrimExpr index, ffi::Map&lt; Var, Range &gt; var_range, const sym::Analyzer &amp;analyzer)</div><div class="ttdoc">Suppose we want to shard a buffer along a specific dimension, we need to know how to rewrite the acce...</div></div>
 <div class="ttc" id="anamespacetvm_1_1tirx_html_a6afba4ff0c281c4916330c3b0e2e6ad3"><div class="ttname"><a href="namespacetvm_1_1tirx.html#a6afba4ff0c281c4916330c3b0e2e6ad3">tvm::tirx::Var</a></div><div class="ttdeci">tvm::Var Var</div><div class="ttdef"><b>Definition</b> var.h:38</div></div>
 <div class="ttc" id="anamespacetvm_1_1tirx_html_aa2311cd730cdca8a01c1d2ff35417ad2"><div class="ttname"><a href="namespacetvm_1_1tirx.html#aa2311cd730cdca8a01c1d2ff35417ad2">tvm::tirx::TIRVarAxis</a></div><div class="ttdeci">std::pair&lt; Var, int &gt; TIRVarAxis</div><div class="ttdef"><b>Definition</b> axis_group_graph.h:42</div></div>
 <div class="ttc" id="anamespacetvm_1_1tirx_html_aae66818353d29c42b5f0337479f5d272"><div class="ttname"><a href="namespacetvm_1_1tirx.html#aae66818353d29c42b5f0337479f5d272">tvm::tirx::BufferAxis</a></div><div class="ttdeci">std::pair&lt; BufferVar, int &gt; BufferAxis</div><div class="ttdef"><b>Definition</b> axis_group_graph.h:44</div></div>
-<div class="ttc" id="anamespacetvm_1_1tirx_html_ad0d1f3fb1101e1acc7727de06ba8069a"><div class="ttname"><a href="namespacetvm_1_1tirx.html#ad0d1f3fb1101e1acc7727de06ba8069a">tvm::tirx::GetShardingVarFromIndex</a></div><div class="ttdeci">ffi::Optional&lt; Var &gt; GetShardingVarFromIndex(PrimExpr index, ffi::Map&lt; Var, Range &gt; var_range, const sym::Analyzer &amp;analyzer)</div><div class="ttdoc">Suppose we want to shard a buffer along a specific dimension, we need to know how to rewr [...]
 <div class="ttc" id="anamespacetvm_html"><div class="ttname"><a href="namespacetvm.html">tvm</a></div><div class="ttdoc">An object that builds and maintains block scope and StmtSref mapping for Dependence analysis.</div><div class="ttdef"><b>Definition</b> attrs.h:44</div></div>
 <div class="ttc" id="anamespacetvm_html_ad7c45c38af02ce88083d976f9be743b4"><div class="ttname"><a href="namespacetvm.html#ad7c45c38af02ce88083d976f9be743b4">tvm::operator==</a></div><div class="ttdeci">bool operator==(const PrimType &amp;lhs, const PrimType &amp;rhs)</div><div class="ttdef"><b>Definition</b> base_expr.h:293</div></div>
 <div class="ttc" id="arelax_2distributed_2type_8h_html"><div class="ttname"><a href="relax_2distributed_2type_8h.html">type.h</a></div><div class="ttdoc">Type definitions for DTensor (Distributed Tensor)</div></div>
diff --git a/docs/reference/api/doxygen/base__expr_8h_source.html b/docs/reference/api/doxygen/base__expr_8h_source.html
index 020d44c9aaa..019b964efea 100644
--- a/docs/reference/api/doxygen/base__expr_8h_source.html
+++ b/docs/reference/api/doxygen/base__expr_8h_source.html
@@ -366,257 +366,235 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00343" name="l00343"></a><span class="lineno"><a class="line" href="classtvm_1_1Expr.html#a86bd9da75268e479e3bbe61729dce8ac">  343</a></span>  <span class="keywordtype">bool</span> <a class="code hl_function" href="classtvm_1_1Expr.html#a86bd9da75268e479e3bbe61729dce8ac">operator!=</a>(<span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>&amp; other) <span class="keyword">const</span> = <span class="keyword">delete</sp [...]
 <div class="line"><a id="l00344" name="l00344"></a><span class="lineno"><a class="line" href="classtvm_1_1Expr.html#afb14020d9ae652a64a6f15dcba073c0e">  344</a></span>  <span class="keywordtype">bool</span> <a class="code hl_function" href="classtvm_1_1Expr.html#afb14020d9ae652a64a6f15dcba073c0e">operator&lt;</a>(<span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>&amp; other) <span class="keyword">const</span> = <span class="keyword">delete</ [...]
 <div class="line"><a id="l00345" name="l00345"></a><span class="lineno">  345</span> </div>
-<div class="foldopen" id="foldopen00346" data-start="{" data-end="}">
-<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"><a class="line" href="classtvm_1_1Expr.html#aad84c3380b07b63427dda3697a78b269">  346</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classtvm_1_1Expr.html#aad84c3380b07b63427dda3697a78b269">Expr</a>(ffi::ObjectPtr&lt;ExprNode&gt; node) : ffi::ObjectRef(std::move(node)) {</div>
-<div class="line"><a id="l00347" name="l00347"></a><span class="lineno">  347</span>    TVM_FFI_CHECK(defined(), ValueError) &lt;&lt; <span class="stringliteral">&quot;Expr expects a defined node&quot;</span>;</div>
-<div class="line"><a id="l00348" name="l00348"></a><span class="lineno">  348</span>  }</div>
-</div>
-<div class="line"><a id="l00349" name="l00349"></a><span class="lineno">  349</span> </div>
-<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"><a class="line" href="classtvm_1_1Expr.html#a26775d381ee6e7c7bb65b8a7320f5b87">  350</a></span>  <a class="code hl_function" href="classtvm_1_1Expr.html#a26775d381ee6e7c7bb65b8a7320f5b87">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(<a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>, ffi::ObjectRef, <a class="code hl_class" href="classtvm_1_1ExprNode.html">ExprNode</a>);</div>
-<div class="line"><a id="l00351" name="l00351"></a><span class="lineno">  351</span>};</div>
-</div>
-<div class="line"><a id="l00352" name="l00352"></a><span class="lineno">  352</span> </div>
-<div class="foldopen" id="foldopen00359" data-start="{" data-end="};">
-<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExprNode.html">  359</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1OpaqueExprNode.html">OpaqueExprNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1ExprNode.html">ExprNode</a> {</div>
-<div class="line"><a id="l00360" name="l00360"></a><span class="lineno">  360</span> <span class="keyword">public</span>:</div>
-<div class="foldopen" id="foldopen00361" data-start="{" data-end="}">
-<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExprNode.html#a6c57e5bf56efcb43b92283af89be09fc">  361</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classtvm_1_1OpaqueExprNode.html#a6c57e5bf56efcb43b92283af89be09fc">RegisterReflection</a>() {</div>
-<div class="line"><a id="l00362" name="l00362"></a><span class="lineno">  362</span>    <span class="keyword">namespace </span>refl = tvm::ffi::reflection;</div>
-<div class="line"><a id="l00363" name="l00363"></a><span class="lineno">  363</span>    refl::ObjectDef&lt;OpaqueExprNode&gt;();</div>
-<div class="line"><a id="l00364" name="l00364"></a><span class="lineno">  364</span>  }</div>
+<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"><a class="line" href="classtvm_1_1Expr.html#a081d3512d899e352e81e8eda6385c444">  346</a></span>  <a class="code hl_function" href="classtvm_1_1Expr.html#a081d3512d899e352e81e8eda6385c444">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(<a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>, ffi::ObjectRef, <a class="code hl_class" href="classtvm_1_1ExprNode.html">ExprNode</a>);</div>
+<div class="line"><a id="l00347" name="l00347"></a><span class="lineno">  347</span>};</div>
+</div>
+<div class="line"><a id="l00348" name="l00348"></a><span class="lineno">  348</span> </div>
+<div class="foldopen" id="foldopen00355" data-start="{" data-end="};">
+<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExprNode.html">  355</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1OpaqueExprNode.html">OpaqueExprNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1ExprNode.html">ExprNode</a> {</div>
+<div class="line"><a id="l00356" name="l00356"></a><span class="lineno">  356</span> <span class="keyword">public</span>:</div>
+<div class="foldopen" id="foldopen00357" data-start="{" data-end="}">
+<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExprNode.html#a6c57e5bf56efcb43b92283af89be09fc">  357</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classtvm_1_1OpaqueExprNode.html#a6c57e5bf56efcb43b92283af89be09fc">RegisterReflection</a>() {</div>
+<div class="line"><a id="l00358" name="l00358"></a><span class="lineno">  358</span>    <span class="keyword">namespace </span>refl = tvm::ffi::reflection;</div>
+<div class="line"><a id="l00359" name="l00359"></a><span class="lineno">  359</span>    refl::ObjectDef&lt;OpaqueExprNode&gt;();</div>
+<div class="line"><a id="l00360" name="l00360"></a><span class="lineno">  360</span>  }</div>
+</div>
+<div class="line"><a id="l00361" name="l00361"></a><span class="lineno">  361</span> </div>
+<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExprNode.html#a0aec85b5f32e134740ab24a36850af5a">  362</a></span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keyword">const</span> uint32_t <a class="code hl_variable" href="classtvm_1_1OpaqueExprNode.html#a0aec85b5f32e134740ab24a36850af5a">_type_child_slots</a> = 2;</div>
+<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExprNode.html#a43b8b6676f146d6b431a793a7bf6c12e">  363</a></span>  <a class="code hl_function" href="classtvm_1_1OpaqueExprNode.html#a43b8b6676f146d6b431a793a7bf6c12e">TVM_FFI_DECLARE_OBJECT_INFO</a>(<span class="stringliteral">&quot;ir.OpaqueExpr&quot;</span>, <a class="code hl_class" href="classtvm_1_1OpaqueExprNode.html">OpaqueExprNode</a>, <a class="code hl_class" href="cla [...]
+<div class="line"><a id="l00364" name="l00364"></a><span class="lineno">  364</span>};</div>
 </div>
 <div class="line"><a id="l00365" name="l00365"></a><span class="lineno">  365</span> </div>
-<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExprNode.html#a0aec85b5f32e134740ab24a36850af5a">  366</a></span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keyword">const</span> uint32_t <a class="code hl_variable" href="classtvm_1_1OpaqueExprNode.html#a0aec85b5f32e134740ab24a36850af5a">_type_child_slots</a> = 2;</div>
-<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExprNode.html#a43b8b6676f146d6b431a793a7bf6c12e">  367</a></span>  <a class="code hl_function" href="classtvm_1_1OpaqueExprNode.html#a43b8b6676f146d6b431a793a7bf6c12e">TVM_FFI_DECLARE_OBJECT_INFO</a>(<span class="stringliteral">&quot;ir.OpaqueExpr&quot;</span>, <a class="code hl_class" href="classtvm_1_1OpaqueExprNode.html">OpaqueExprNode</a>, <a class="code hl_class" href="cla [...]
-<div class="line"><a id="l00368" name="l00368"></a><span class="lineno">  368</span>};</div>
-</div>
-<div class="line"><a id="l00369" name="l00369"></a><span class="lineno">  369</span> </div>
-<div class="foldopen" id="foldopen00371" data-start="{" data-end="};">
-<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExpr.html">  371</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1OpaqueExpr.html">OpaqueExpr</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a> {</div>
-<div class="line"><a id="l00372" name="l00372"></a><span class="lineno">  372</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExpr.html#afd17da96046bfe1522adcd996454818a">  373</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classtvm_1_1OpaqueExpr.html#afd17da96046bfe1522adcd996454818a">OpaqueExpr</a>(ffi::ObjectPtr&lt;OpaqueExprNode&gt; node) : <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>(std::move(node)) {}</div>
-<div class="line"><a id="l00374" name="l00374"></a><span class="lineno">  374</span> </div>
-<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExpr.html#ac7e17e5999f849b6ff7a787d993cda40">  375</a></span>  <a class="code hl_function" href="classtvm_1_1OpaqueExpr.html#ac7e17e5999f849b6ff7a787d993cda40">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(<a class="code hl_class" href="classtvm_1_1OpaqueExpr.html">OpaqueExpr</a>, <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>, <a class="code hl_class" href= [...]
-<div class="line"><a id="l00376" name="l00376"></a><span class="lineno">  376</span>};</div>
-</div>
-<div class="line"><a id="l00377" name="l00377"></a><span class="lineno">  377</span> </div>
-<div class="line"><a id="l00378" name="l00378"></a><span class="lineno">  378</span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1Call.html">Call</a>;</div>
-<div class="line"><a id="l00379" name="l00379"></a><span class="lineno">  379</span> </div>
-<div class="line"><a id="l00385" name="l00385"></a><span class="lineno">  385</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> ExpectedType&gt;</div>
-<div class="foldopen" id="foldopen00386" data-start="{" data-end="};">
-<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"><a class="line" href="classtvm_1_1TypedExpr.html">  386</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a> {</div>
-<div class="line"><a id="l00387" name="l00387"></a><span class="lineno">  387</span> <span class="keyword">public</span>:</div>
-<div class="foldopen" id="foldopen00389" data-start="{" data-end="}">
-<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"><a class="line" href="classtvm_1_1TypedExpr.html#a7d83b1f31a1cc6f0774df309e207e678">  389</a></span>  ExpectedType <a class="code hl_function" href="classtvm_1_1TypedExpr.html#a7d83b1f31a1cc6f0774df309e207e678">ty</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a id="l00390" name="l00390"></a><span class="lineno">  390</span>    <span class="keyword">const</span> <span class="keyword">auto</span>* node = get();</div>
-<div class="line"><a id="l00391" name="l00391"></a><span class="lineno">  391</span>    TVM_FFI_DCHECK(node != <span class="keyword">nullptr</span>);</div>
-<div class="line"><a id="l00392" name="l00392"></a><span class="lineno">  392</span>    <span class="keyword">const</span> <span class="keyword">auto</span>* ty_node = node-&gt;ExprNode::ty.template as&lt;typename ExpectedType::ContainerType&gt;();</div>
-<div class="line"><a id="l00393" name="l00393"></a><span class="lineno">  393</span>    TVM_FFI_DCHECK(ty_node != <span class="keyword">nullptr</span>);</div>
-<div class="line"><a id="l00394" name="l00394"></a><span class="lineno">  394</span>    <span class="keywordflow">return</span> ffi::GetRef&lt;ExpectedType&gt;(ty_node);</div>
-<div class="line"><a id="l00395" name="l00395"></a><span class="lineno">  395</span>  }</div>
-</div>
-<div class="line"><a id="l00396" name="l00396"></a><span class="lineno">  396</span> </div>
-<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"><a class="line" href="classtvm_1_1TypedExpr.html#aba1d53d5f3708c2e41104da7b3c3a5ff">  397</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classtvm_1_1TypedExpr.html#aba1d53d5f3708c2e41104da7b3c3a5ff">TypedExpr</a>(ffi::ObjectPtr&lt;ExprNode&gt; node) : <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>(std::move(node)) {}</div>
-<div class="line"><a id="l00398" name="l00398"></a><span class="lineno">  398</span> </div>
-<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"><a class="line" href="classtvm_1_1TypedExpr.html#aa985a34fd559ddc4bdc128f4fcd9d9c9">  399</a></span>  <a class="code hl_function" href="classtvm_1_1TypedExpr.html#aa985a34fd559ddc4bdc128f4fcd9d9c9">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(<a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr</a>, <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>, <a class="code hl_class" href="cla [...]
-<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"><a class="line" href="classtvm_1_1TypedExpr.html#a699c3725d3b3cb02b7363cab5cc68914">  400</a></span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="classtvm_1_1TypedExpr.html#a699c3725d3b3cb02b7363cab5cc68914">_type_container_is_exact</a> = <span class="keyword">false</span>;</div>
-<div class="line"><a id="l00401" name="l00401"></a><span class="lineno">  401</span>};</div>
-</div>
-<div class="line"><a id="l00402" name="l00402"></a><span class="lineno">  402</span> </div>
-<div class="foldopen" id="foldopen00412" data-start="{" data-end="};">
-<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html">  412</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr</a>&lt;PrimType&gt; {</div>
-<div class="line"><a id="l00413" name="l00413"></a><span class="lineno">  413</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00414" name="l00414"></a><span class="lineno">  414</span>  <span class="keyword">using </span><a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr</a>&lt;<a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a>&gt;<a class="code hl_function" href="classtvm_1_1TypedExpr.html#a7d83b1f31a1cc6f0774df309e207e678">::ty</a>;</div>
-<div class="line"><a id="l00415" name="l00415"></a><span class="lineno">  415</span> </div>
-<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html#a8e6c9b7691f897badf413f21469f7f9d">  421</a></span>  TVM_DLL <a class="code hl_function" href="classtvm_1_1PrimExpr.html#a8e6c9b7691f897badf413f21469f7f9d">PrimExpr</a>(<a class="code hl_class" href="classtvm_1_1Call.html">Call</a> call);  <span class="comment">// NOLINT(*)</span></div>
-<div class="line"><a id="l00422" name="l00422"></a><span class="lineno">  422</span> </div>
-<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html#a7f0ca30e951608a0b36a77a66d4d19e0">  427</a></span>  TVM_DLL <a class="code hl_function" href="classtvm_1_1PrimExpr.html#a7f0ca30e951608a0b36a77a66d4d19e0">PrimExpr</a>(int32_t value);  <span class="comment">// NOLINT(*)</span></div>
-<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html#a756d3f8b17b019560946524951ae6118">  432</a></span>  TVM_DLL <a class="code hl_function" href="classtvm_1_1PrimExpr.html#a756d3f8b17b019560946524951ae6118">PrimExpr</a>(<span class="keywordtype">float</span> value);  <span class="comment">// NOLINT(*)</span></div>
-<div class="line"><a id="l00433" name="l00433"></a><span class="lineno">  433</span> </div>
-<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html#adbafa94c9099bdf4fa142e074c38711f">  434</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classtvm_1_1PrimExpr.html#adbafa94c9099bdf4fa142e074c38711f">PrimExpr</a>(ffi::ObjectPtr&lt;ExprNode&gt; node) : <a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr</a>&lt;<a class="code hl_class" href="classtvm_1_1PrimType.html"> [...]
-<div class="line"><a id="l00435" name="l00435"></a><span class="lineno">  435</span> </div>
-<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html#a9e1ec859f8e97b427a8cab4bd80d46e1">  436</a></span>  <a class="code hl_function" href="classtvm_1_1PrimExpr.html#a9e1ec859f8e97b427a8cab4bd80d46e1">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(<a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a>, <a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr&lt;PrimType&gt;</a>, <a class="co [...]
-<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html#a33afa5fbcf78f349305e222f182ee28b">  437</a></span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="classtvm_1_1PrimExpr.html#a33afa5fbcf78f349305e222f182ee28b">_type_container_is_exact</a> = <span class="keyword">false</span>;</div>
-<div class="line"><a id="l00438" name="l00438"></a><span class="lineno">  438</span>};</div>
-</div>
-<div class="line"><a id="l00439" name="l00439"></a><span class="lineno">  439</span> </div>
-<div class="foldopen" id="foldopen00446" data-start="{" data-end="};">
-<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"><a class="line" href="classtvm_1_1IntExpr.html">  446</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1IntExpr.html">IntExpr</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> {</div>
-<div class="line"><a id="l00447" name="l00447"></a><span class="lineno">  447</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"><a class="line" href="classtvm_1_1IntExpr.html#ae847c279a016d20acf2e7ac14e2a78eb">  448</a></span>  <a class="code hl_function" href="classtvm_1_1IntExpr.html#ae847c279a016d20acf2e7ac14e2a78eb">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(<a class="code hl_class" href="classtvm_1_1IntExpr.html">IntExpr</a>, <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a>, <a class="code hl_class" href="cla [...]
-<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"><a class="line" href="classtvm_1_1IntExpr.html#a134f662e9c361e9e72f282c604859719">  449</a></span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="classtvm_1_1IntExpr.html#a134f662e9c361e9e72f282c604859719">_type_container_is_exact</a> = <span class="keyword">false</span>;</div>
-<div class="line"><a id="l00450" name="l00450"></a><span class="lineno">  450</span>};</div>
-</div>
-<div class="line"><a id="l00451" name="l00451"></a><span class="lineno">  451</span> </div>
-<div class="foldopen" id="foldopen00457" data-start="{" data-end="};">
-<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertibleNode.html">  457</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1PrimExprConvertibleNode.html">PrimExprConvertibleNode</a> : <span class="keyword">public</span> ffi::Object {</div>
-<div class="line"><a id="l00458" name="l00458"></a><span class="lineno">  458</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertibleNode.html#a625eda6a9ec8f03c69802a1300053d8b">  459</a></span>  <span class="keyword">virtual</span> <a class="code hl_function" href="classtvm_1_1PrimExprConvertibleNode.html#a625eda6a9ec8f03c69802a1300053d8b">~PrimExprConvertibleNode</a>() {}</div>
-<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertibleNode.html#ab9efcf82acd9a64e2cda50108c98e458">  460</a></span>  <span class="keyword">virtual</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="classtvm_1_1PrimExprConvertibleNode.html#ab9efcf82acd9a64e2cda50108c98e458">ToPrimExpr</a>() <span class="keyword">const</span> = 0;</div>
-<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertibleNode.html#add3904e335bd840516d486a6ca398f86">  461</a></span>  <a class="code hl_function" href="classtvm_1_1PrimExprConvertibleNode.html#add3904e335bd840516d486a6ca398f86">TVM_FFI_DECLARE_OBJECT_INFO</a>(<span class="stringliteral">&quot;ir.PrimExprConvertible&quot;</span>, <a class="code hl_class" href="classtvm_1_1PrimExprConvertibleNode.html">PrimExprConvertibl [...]
+<div class="foldopen" id="foldopen00367" data-start="{" data-end="};">
+<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExpr.html">  367</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1OpaqueExpr.html">OpaqueExpr</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a id="l00368" name="l00368"></a><span class="lineno">  368</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExpr.html#ab40bce2a8f40aa5101cbc5c53d80315e">  369</a></span>  <a class="code hl_function" href="classtvm_1_1OpaqueExpr.html#ab40bce2a8f40aa5101cbc5c53d80315e">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(<a class="code hl_class" href="classtvm_1_1OpaqueExpr.html">OpaqueExpr</a>, <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>, <a class="code hl_class" href="cl [...]
+<div class="line"><a id="l00370" name="l00370"></a><span class="lineno">  370</span>};</div>
+</div>
+<div class="line"><a id="l00371" name="l00371"></a><span class="lineno">  371</span> </div>
+<div class="line"><a id="l00372" name="l00372"></a><span class="lineno">  372</span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1Call.html">Call</a>;</div>
+<div class="line"><a id="l00373" name="l00373"></a><span class="lineno">  373</span> </div>
+<div class="line"><a id="l00379" name="l00379"></a><span class="lineno">  379</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> ExpectedType&gt;</div>
+<div class="foldopen" id="foldopen00380" data-start="{" data-end="};">
+<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"><a class="line" href="classtvm_1_1TypedExpr.html">  380</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a id="l00381" name="l00381"></a><span class="lineno">  381</span> <span class="keyword">public</span>:</div>
+<div class="foldopen" id="foldopen00383" data-start="{" data-end="}">
+<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"><a class="line" href="classtvm_1_1TypedExpr.html#a7d83b1f31a1cc6f0774df309e207e678">  383</a></span>  ExpectedType <a class="code hl_function" href="classtvm_1_1TypedExpr.html#a7d83b1f31a1cc6f0774df309e207e678">ty</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a id="l00384" name="l00384"></a><span class="lineno">  384</span>    <span class="keyword">const</span> <span class="keyword">auto</span>* node = get();</div>
+<div class="line"><a id="l00385" name="l00385"></a><span class="lineno">  385</span>    TVM_FFI_DCHECK(node != <span class="keyword">nullptr</span>);</div>
+<div class="line"><a id="l00386" name="l00386"></a><span class="lineno">  386</span>    <span class="keyword">const</span> <span class="keyword">auto</span>* ty_node = node-&gt;ExprNode::ty.template as&lt;typename ExpectedType::ContainerType&gt;();</div>
+<div class="line"><a id="l00387" name="l00387"></a><span class="lineno">  387</span>    TVM_FFI_DCHECK(ty_node != <span class="keyword">nullptr</span>);</div>
+<div class="line"><a id="l00388" name="l00388"></a><span class="lineno">  388</span>    <span class="keywordflow">return</span> ffi::GetRef&lt;ExpectedType&gt;(ty_node);</div>
+<div class="line"><a id="l00389" name="l00389"></a><span class="lineno">  389</span>  }</div>
+</div>
+<div class="line"><a id="l00390" name="l00390"></a><span class="lineno">  390</span> </div>
+<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"><a class="line" href="classtvm_1_1TypedExpr.html#aef373abb5a1725e75779715bfc590d3b">  391</a></span>  <a class="code hl_function" href="classtvm_1_1TypedExpr.html#aef373abb5a1725e75779715bfc590d3b">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(<a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr</a>, <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>, <a class="code hl_class" href="classt [...]
+<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"><a class="line" href="classtvm_1_1TypedExpr.html#a699c3725d3b3cb02b7363cab5cc68914">  392</a></span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="classtvm_1_1TypedExpr.html#a699c3725d3b3cb02b7363cab5cc68914">_type_container_is_exact</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00393" name="l00393"></a><span class="lineno">  393</span>};</div>
+</div>
+<div class="line"><a id="l00394" name="l00394"></a><span class="lineno">  394</span> </div>
+<div class="foldopen" id="foldopen00404" data-start="{" data-end="};">
+<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html">  404</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr</a>&lt;PrimType&gt; {</div>
+<div class="line"><a id="l00405" name="l00405"></a><span class="lineno">  405</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00406" name="l00406"></a><span class="lineno">  406</span>  <span class="keyword">using </span><a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr</a>&lt;<a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a>&gt;<a class="code hl_function" href="classtvm_1_1TypedExpr.html#a7d83b1f31a1cc6f0774df309e207e678">::ty</a>;</div>
+<div class="line"><a id="l00407" name="l00407"></a><span class="lineno">  407</span> </div>
+<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html#a8e6c9b7691f897badf413f21469f7f9d">  413</a></span>  TVM_DLL <a class="code hl_function" href="classtvm_1_1PrimExpr.html#a8e6c9b7691f897badf413f21469f7f9d">PrimExpr</a>(<a class="code hl_class" href="classtvm_1_1Call.html">Call</a> call);  <span class="comment">// NOLINT(*)</span></div>
+<div class="line"><a id="l00414" name="l00414"></a><span class="lineno">  414</span> </div>
+<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html#a7f0ca30e951608a0b36a77a66d4d19e0">  419</a></span>  TVM_DLL <a class="code hl_function" href="classtvm_1_1PrimExpr.html#a7f0ca30e951608a0b36a77a66d4d19e0">PrimExpr</a>(int32_t value);  <span class="comment">// NOLINT(*)</span></div>
+<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html#a756d3f8b17b019560946524951ae6118">  424</a></span>  TVM_DLL <a class="code hl_function" href="classtvm_1_1PrimExpr.html#a756d3f8b17b019560946524951ae6118">PrimExpr</a>(<span class="keywordtype">float</span> value);  <span class="comment">// NOLINT(*)</span></div>
+<div class="line"><a id="l00425" name="l00425"></a><span class="lineno">  425</span> </div>
+<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html#a611b175971d5ca7e5a549c55fae12ac6">  426</a></span>  <a class="code hl_function" href="classtvm_1_1PrimExpr.html#a611b175971d5ca7e5a549c55fae12ac6">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(<a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a>, <a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr&lt;PrimType&gt;</a>, <a class="code  [...]
+<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html#a33afa5fbcf78f349305e222f182ee28b">  427</a></span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="classtvm_1_1PrimExpr.html#a33afa5fbcf78f349305e222f182ee28b">_type_container_is_exact</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00428" name="l00428"></a><span class="lineno">  428</span>};</div>
+</div>
+<div class="line"><a id="l00429" name="l00429"></a><span class="lineno">  429</span> </div>
+<div class="foldopen" id="foldopen00436" data-start="{" data-end="};">
+<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"><a class="line" href="classtvm_1_1IntExpr.html">  436</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1IntExpr.html">IntExpr</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> {</div>
+<div class="line"><a id="l00437" name="l00437"></a><span class="lineno">  437</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"><a class="line" href="classtvm_1_1IntExpr.html#a05d3dcf2d5ced700249353dc34f14022">  438</a></span>  <a class="code hl_function" href="classtvm_1_1IntExpr.html#a05d3dcf2d5ced700249353dc34f14022">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(<a class="code hl_class" href="classtvm_1_1IntExpr.html">IntExpr</a>, <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a>, <a class="code hl_class" href="classt [...]
+<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"><a class="line" href="classtvm_1_1IntExpr.html#a134f662e9c361e9e72f282c604859719">  439</a></span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="classtvm_1_1IntExpr.html#a134f662e9c361e9e72f282c604859719">_type_container_is_exact</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00440" name="l00440"></a><span class="lineno">  440</span>};</div>
+</div>
+<div class="line"><a id="l00441" name="l00441"></a><span class="lineno">  441</span> </div>
+<div class="foldopen" id="foldopen00447" data-start="{" data-end="};">
+<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertibleNode.html">  447</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1PrimExprConvertibleNode.html">PrimExprConvertibleNode</a> : <span class="keyword">public</span> ffi::Object {</div>
+<div class="line"><a id="l00448" name="l00448"></a><span class="lineno">  448</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertibleNode.html#a625eda6a9ec8f03c69802a1300053d8b">  449</a></span>  <span class="keyword">virtual</span> <a class="code hl_function" href="classtvm_1_1PrimExprConvertibleNode.html#a625eda6a9ec8f03c69802a1300053d8b">~PrimExprConvertibleNode</a>() {}</div>
+<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertibleNode.html#ab9efcf82acd9a64e2cda50108c98e458">  450</a></span>  <span class="keyword">virtual</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="classtvm_1_1PrimExprConvertibleNode.html#ab9efcf82acd9a64e2cda50108c98e458">ToPrimExpr</a>() <span class="keyword">const</span> = 0;</div>
+<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertibleNode.html#add3904e335bd840516d486a6ca398f86">  451</a></span>  <a class="code hl_function" href="classtvm_1_1PrimExprConvertibleNode.html#add3904e335bd840516d486a6ca398f86">TVM_FFI_DECLARE_OBJECT_INFO</a>(<span class="stringliteral">&quot;ir.PrimExprConvertible&quot;</span>, <a class="code hl_class" href="classtvm_1_1PrimExprConvertibleNode.html">PrimExprConvertibl [...]
+<div class="line"><a id="l00452" name="l00452"></a><span class="lineno">  452</span>};</div>
+</div>
+<div class="line"><a id="l00453" name="l00453"></a><span class="lineno">  453</span> </div>
+<div class="foldopen" id="foldopen00458" data-start="{" data-end="};">
+<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertible.html">  458</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1PrimExprConvertible.html">PrimExprConvertible</a> : <span class="keyword">public</span> ffi::ObjectRef {</div>
+<div class="line"><a id="l00459" name="l00459"></a><span class="lineno">  459</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertible.html#a0bad5536ab9ff5ab07a22e75c2c2102c">  460</a></span>  <a class="code hl_function" href="classtvm_1_1PrimExprConvertible.html#a0bad5536ab9ff5ab07a22e75c2c2102c">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(<a class="code hl_class" href="classtvm_1_1PrimExprConvertible.html">PrimExprConvertible</a>, ffi::ObjectRef,</div>
+<div class="line"><a id="l00461" name="l00461"></a><span class="lineno">  461</span>                                             <a class="code hl_class" href="classtvm_1_1PrimExprConvertibleNode.html">PrimExprConvertibleNode</a>);</div>
 <div class="line"><a id="l00462" name="l00462"></a><span class="lineno">  462</span>};</div>
 </div>
 <div class="line"><a id="l00463" name="l00463"></a><span class="lineno">  463</span> </div>
-<div class="foldopen" id="foldopen00468" data-start="{" data-end="};">
-<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertible.html">  468</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1PrimExprConvertible.html">PrimExprConvertible</a> : <span class="keyword">public</span> ffi::ObjectRef {</div>
-<div class="line"><a id="l00469" name="l00469"></a><span class="lineno">  469</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertible.html#a0bad5536ab9ff5ab07a22e75c2c2102c">  470</a></span>  <a class="code hl_function" href="classtvm_1_1PrimExprConvertible.html#a0bad5536ab9ff5ab07a22e75c2c2102c">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(<a class="code hl_class" href="classtvm_1_1PrimExprConvertible.html">PrimExprConvertible</a>, ffi::ObjectRef,</div>
-<div class="line"><a id="l00471" name="l00471"></a><span class="lineno">  471</span>                                             <a class="code hl_class" href="classtvm_1_1PrimExprConvertibleNode.html">PrimExprConvertibleNode</a>);</div>
-<div class="line"><a id="l00472" name="l00472"></a><span class="lineno">  472</span>};</div>
-</div>
-<div class="line"><a id="l00473" name="l00473"></a><span class="lineno">  473</span> </div>
-<div class="foldopen" id="foldopen00474" data-start="{" data-end="}">
-<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"><a class="line" href="namespacetvm_1_1ffi.html">  474</a></span><span class="keyword">namespace </span>ffi {</div>
-<div class="line"><a id="l00475" name="l00475"></a><span class="lineno">  475</span><span class="keyword">template</span> &lt;&gt;</div>
-<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"><a class="line" href="namespacetvm_1_1ffi.html#a919f86f3cbe6b3aeae34c3a3bafe98a4">  476</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="namespacetvm_1_1ffi.html#a919f86f3cbe6b3aeae34c3a3bafe98a4">use_default_type_traits_v&lt;PrimType&gt;</a> = <span class="keyword">false</span>;</div>
-<div class="line"><a id="l00477" name="l00477"></a><span class="lineno">  477</span> </div>
-<div class="line"><a id="l00478" name="l00478"></a><span class="lineno">  478</span><span class="keyword">template</span> &lt;&gt;</div>
-<div class="foldopen" id="foldopen00479" data-start="{" data-end="};">
-<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimType_01_4.html">  479</a></span><span class="keyword">struct </span>TypeTraits&lt;<a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a>&gt; : <span class="keyword">public</span> ObjectRefWithFallbackTraitsBase&lt;PrimType, DLDataType&gt; {</div>
-<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimType_01_4.html#a9b9a904d5c21d5bb330111cb80ec3570">  480</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimType_01_4.html#a9b9a904d5c21d5bb330111cb80ec3570">ConvertFallbackValue</a>(DLDataType dtype) { < [...]
-<div class="line"><a id="l00481" name="l00481"></a><span class="lineno">  481</span>};</div>
-</div>
-<div class="line"><a id="l00482" name="l00482"></a><span class="lineno">  482</span> </div>
-<div class="line"><a id="l00483" name="l00483"></a><span class="lineno">  483</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> ExpectedType&gt;</div>
-<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"><a class="line" href="namespacetvm_1_1ffi.html#a989ab76251427253427563ab92948640">  484</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> use_default_type_traits_v&lt;TypedExpr&lt;ExpectedType&gt;&gt; = <span class="keyword">false</span>;</div>
-<div class="line"><a id="l00485" name="l00485"></a><span class="lineno">  485</span> </div>
-<div class="line"><a id="l00486" name="l00486"></a><span class="lineno">  486</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> ExpectedType&gt;</div>
-<div class="foldopen" id="foldopen00487" data-start="{" data-end="};">
-<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html">  487</a></span><span class="keyword">struct </span>TypeTraits&lt;<a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr</a>&lt;ExpectedType&gt;&gt;</div>
-<div class="line"><a id="l00488" name="l00488"></a><span class="lineno">  488</span>    : <span class="keyword">public</span> ObjectRefTypeTraitsBase&lt;TypedExpr&lt;ExpectedType&gt;&gt; {</div>
-<div class="foldopen" id="foldopen00489" data-start="{" data-end="}">
-<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a91f94dcfec7dbd7024c4912234d3f445">  489</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a91f94dcfec7dbd7024c4912234d3f445">CheckAnyStrict</a>(<span class="k [...]
-<div class="line"><a id="l00490" name="l00490"></a><span class="lineno">  490</span>    <span class="keywordflow">if</span> (src-&gt;type_index == TypeIndex::kTVMFFINone) {</div>
-<div class="line"><a id="l00491" name="l00491"></a><span class="lineno">  491</span>      <span class="keywordflow">return</span> <a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr&lt;ExpectedType&gt;::_type_is_nullable</a>;</div>
-<div class="line"><a id="l00492" name="l00492"></a><span class="lineno">  492</span>    }</div>
-<div class="line"><a id="l00493" name="l00493"></a><span class="lineno">  493</span>    <span class="keywordflow">if</span> (src-&gt;type_index &lt; TypeIndex::kTVMFFIStaticObjectBegin ||</div>
-<div class="line"><a id="l00494" name="l00494"></a><span class="lineno">  494</span>        !details::IsObjectInstance&lt;ExprNode&gt;(src-&gt;type_index)) {</div>
-<div class="line"><a id="l00495" name="l00495"></a><span class="lineno">  495</span>      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a id="l00496" name="l00496"></a><span class="lineno">  496</span>    }</div>
-<div class="line"><a id="l00497" name="l00497"></a><span class="lineno">  497</span>    <span class="comment">// Non-owning: this only reads `ty`, and the owning form&#39;s incref/decref pair costs two</span></div>
-<div class="line"><a id="l00498" name="l00498"></a><span class="lineno">  498</span>    <span class="comment">// atomics per check on a path every typed field assignment takes.</span></div>
-<div class="line"><a id="l00499" name="l00499"></a><span class="lineno">  499</span>    <span class="keyword">const</span> <span class="keyword">auto</span>* expr = details::ObjectUnsafe::RawObjectPtrFromUnowned&lt;ExprNode&gt;(src-&gt;v_obj);</div>
-<div class="line"><a id="l00500" name="l00500"></a><span class="lineno">  500</span>    <span class="keywordflow">return</span> details::AnyUnsafe::CheckAnyViewStrict&lt;ExpectedType&gt;(expr-&gt;ty);</div>
-<div class="line"><a id="l00501" name="l00501"></a><span class="lineno">  501</span>  }</div>
-</div>
-<div class="line"><a id="l00502" name="l00502"></a><span class="lineno">  502</span> </div>
-<div class="foldopen" id="foldopen00503" data-start="{" data-end="}">
-<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a920c0886f5fd3421ca55c62fa3a9faf0">  503</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> std::string <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a920c0886f5fd3421ca55c62fa3a9faf0">GetMismatchTypeInfo</a>(<span class="keyword">const</span>  [...]
-<div class="line"><a id="l00504" name="l00504"></a><span class="lineno">  504</span>    <span class="keywordflow">if</span> (src-&gt;type_index &gt;= TypeIndex::kTVMFFIStaticObjectBegin &amp;&amp; src-&gt;v_obj != <span class="keyword">nullptr</span> &amp;&amp;</div>
-<div class="line"><a id="l00505" name="l00505"></a><span class="lineno">  505</span>        details::IsObjectInstance&lt;ExprNode&gt;(src-&gt;type_index)) {</div>
-<div class="line"><a id="l00506" name="l00506"></a><span class="lineno">  506</span>      <span class="keyword">const</span> <span class="keyword">auto</span>* expr = details::ObjectUnsafe::RawObjectPtrFromUnowned&lt;ExprNode&gt;(src-&gt;v_obj);</div>
-<div class="line"><a id="l00507" name="l00507"></a><span class="lineno">  507</span>      <span class="keywordflow">if</span> (expr-&gt;ty.defined()) {</div>
-<div class="line"><a id="l00508" name="l00508"></a><span class="lineno">  508</span>        <span class="keyword">const</span> <span class="keyword">auto</span>* prim_ty = expr-&gt;ty.as&lt;<a class="code hl_class" href="classtvm_1_1PrimTypeNode.html">PrimTypeNode</a>&gt;();</div>
-<div class="line"><a id="l00509" name="l00509"></a><span class="lineno">  509</span>        std::string ty =</div>
-<div class="line"><a id="l00510" name="l00510"></a><span class="lineno">  510</span>            prim_ty ? std::string(ffi::DLDataTypeToString(prim_ty-&gt;dtype)) : expr-&gt;ty.GetTypeKey();</div>
-<div class="line"><a id="l00511" name="l00511"></a><span class="lineno">  511</span>        <span class="keywordflow">return</span> TypeIndexToTypeKey(src-&gt;type_index) + <span class="stringliteral">&quot;[ty=&quot;</span> + ty + <span class="stringliteral">&quot;]&quot;</span>;</div>
-<div class="line"><a id="l00512" name="l00512"></a><span class="lineno">  512</span>      }</div>
-<div class="line"><a id="l00513" name="l00513"></a><span class="lineno">  513</span>    }</div>
-<div class="line"><a id="l00514" name="l00514"></a><span class="lineno">  514</span>    <span class="keywordflow">return</span> TypeTraitsBase::GetMismatchTypeInfo(src);</div>
-<div class="line"><a id="l00515" name="l00515"></a><span class="lineno">  515</span>  }</div>
-</div>
-<div class="line"><a id="l00516" name="l00516"></a><span class="lineno">  516</span>};</div>
-</div>
-<div class="line"><a id="l00517" name="l00517"></a><span class="lineno">  517</span> </div>
-<div class="line"><a id="l00518" name="l00518"></a><span class="lineno">  518</span><span class="keyword">template</span> &lt;&gt;</div>
-<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"><a class="line" href="namespacetvm_1_1ffi.html#a3953ced274a99f70b1ab2cd282f266e2">  519</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="namespacetvm_1_1ffi.html#a3953ced274a99f70b1ab2cd282f266e2">use_default_type_traits_v&lt;PrimExpr&gt;</a> = <span class="keyword">false</span>;</div>
+<div class="foldopen" id="foldopen00464" data-start="{" data-end="}">
+<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"><a class="line" href="namespacetvm_1_1ffi.html">  464</a></span><span class="keyword">namespace </span>ffi {</div>
+<div class="line"><a id="l00465" name="l00465"></a><span class="lineno">  465</span><span class="keyword">template</span> &lt;&gt;</div>
+<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"><a class="line" href="namespacetvm_1_1ffi.html#a919f86f3cbe6b3aeae34c3a3bafe98a4">  466</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="namespacetvm_1_1ffi.html#a919f86f3cbe6b3aeae34c3a3bafe98a4">use_default_type_traits_v&lt;PrimType&gt;</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00467" name="l00467"></a><span class="lineno">  467</span> </div>
+<div class="line"><a id="l00468" name="l00468"></a><span class="lineno">  468</span><span class="keyword">template</span> &lt;&gt;</div>
+<div class="foldopen" id="foldopen00469" data-start="{" data-end="};">
+<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimType_01_4.html">  469</a></span><span class="keyword">struct </span>TypeTraits&lt;<a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a>&gt; : <span class="keyword">public</span> ObjectRefWithFallbackTraitsBase&lt;PrimType, DLDataType&gt; {</div>
+<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimType_01_4.html#a9b9a904d5c21d5bb330111cb80ec3570">  470</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimType_01_4.html#a9b9a904d5c21d5bb330111cb80ec3570">ConvertFallbackValue</a>(DLDataType dtype) { < [...]
+<div class="line"><a id="l00471" name="l00471"></a><span class="lineno">  471</span>};</div>
+</div>
+<div class="line"><a id="l00472" name="l00472"></a><span class="lineno">  472</span> </div>
+<div class="line"><a id="l00473" name="l00473"></a><span class="lineno">  473</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> ExpectedType&gt;</div>
+<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"><a class="line" href="namespacetvm_1_1ffi.html#a989ab76251427253427563ab92948640">  474</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> use_default_type_traits_v&lt;TypedExpr&lt;ExpectedType&gt;&gt; = <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00475" name="l00475"></a><span class="lineno">  475</span> </div>
+<div class="line"><a id="l00476" name="l00476"></a><span class="lineno">  476</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> ExpectedType&gt;</div>
+<div class="foldopen" id="foldopen00477" data-start="{" data-end="};">
+<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html">  477</a></span><span class="keyword">struct </span>TypeTraits&lt;<a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr</a>&lt;ExpectedType&gt;&gt;</div>
+<div class="line"><a id="l00478" name="l00478"></a><span class="lineno">  478</span>    : <span class="keyword">public</span> ObjectRefTypeTraitsBase&lt;TypedExpr&lt;ExpectedType&gt;&gt; {</div>
+<div class="foldopen" id="foldopen00479" data-start="{" data-end="}">
+<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a91f94dcfec7dbd7024c4912234d3f445">  479</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a91f94dcfec7dbd7024c4912234d3f445">CheckAnyStrict</a>(<span class="k [...]
+<div class="line"><a id="l00480" name="l00480"></a><span class="lineno">  480</span>    <span class="keywordflow">if</span> (src-&gt;type_index == TypeIndex::kTVMFFINone) {</div>
+<div class="line"><a id="l00481" name="l00481"></a><span class="lineno">  481</span>      <span class="keywordflow">return</span> <a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr&lt;ExpectedType&gt;::_type_is_nullable</a>;</div>
+<div class="line"><a id="l00482" name="l00482"></a><span class="lineno">  482</span>    }</div>
+<div class="line"><a id="l00483" name="l00483"></a><span class="lineno">  483</span>    <span class="keywordflow">if</span> (src-&gt;type_index &lt; TypeIndex::kTVMFFIStaticObjectBegin ||</div>
+<div class="line"><a id="l00484" name="l00484"></a><span class="lineno">  484</span>        !details::IsObjectInstance&lt;ExprNode&gt;(src-&gt;type_index)) {</div>
+<div class="line"><a id="l00485" name="l00485"></a><span class="lineno">  485</span>      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00486" name="l00486"></a><span class="lineno">  486</span>    }</div>
+<div class="line"><a id="l00487" name="l00487"></a><span class="lineno">  487</span>    <span class="comment">// Non-owning: this only reads `ty`, and the owning form&#39;s incref/decref pair costs two</span></div>
+<div class="line"><a id="l00488" name="l00488"></a><span class="lineno">  488</span>    <span class="comment">// atomics per check on a path every typed field assignment takes.</span></div>
+<div class="line"><a id="l00489" name="l00489"></a><span class="lineno">  489</span>    <span class="keyword">const</span> <span class="keyword">auto</span>* expr = details::ObjectUnsafe::RawObjectPtrFromUnowned&lt;ExprNode&gt;(src-&gt;v_obj);</div>
+<div class="line"><a id="l00490" name="l00490"></a><span class="lineno">  490</span>    <span class="keywordflow">return</span> details::AnyUnsafe::CheckAnyViewStrict&lt;ExpectedType&gt;(expr-&gt;ty);</div>
+<div class="line"><a id="l00491" name="l00491"></a><span class="lineno">  491</span>  }</div>
+</div>
+<div class="line"><a id="l00492" name="l00492"></a><span class="lineno">  492</span> </div>
+<div class="foldopen" id="foldopen00493" data-start="{" data-end="}">
+<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a920c0886f5fd3421ca55c62fa3a9faf0">  493</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> std::string <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a920c0886f5fd3421ca55c62fa3a9faf0">GetMismatchTypeInfo</a>(<span class="keyword">const</span>  [...]
+<div class="line"><a id="l00494" name="l00494"></a><span class="lineno">  494</span>    <span class="keywordflow">if</span> (src-&gt;type_index &gt;= TypeIndex::kTVMFFIStaticObjectBegin &amp;&amp; src-&gt;v_obj != <span class="keyword">nullptr</span> &amp;&amp;</div>
+<div class="line"><a id="l00495" name="l00495"></a><span class="lineno">  495</span>        details::IsObjectInstance&lt;ExprNode&gt;(src-&gt;type_index)) {</div>
+<div class="line"><a id="l00496" name="l00496"></a><span class="lineno">  496</span>      <span class="keyword">const</span> <span class="keyword">auto</span>* expr = details::ObjectUnsafe::RawObjectPtrFromUnowned&lt;ExprNode&gt;(src-&gt;v_obj);</div>
+<div class="line"><a id="l00497" name="l00497"></a><span class="lineno">  497</span>      <span class="keywordflow">if</span> (expr-&gt;ty.defined()) {</div>
+<div class="line"><a id="l00498" name="l00498"></a><span class="lineno">  498</span>        <span class="keyword">const</span> <span class="keyword">auto</span>* prim_ty = expr-&gt;ty.as&lt;<a class="code hl_class" href="classtvm_1_1PrimTypeNode.html">PrimTypeNode</a>&gt;();</div>
+<div class="line"><a id="l00499" name="l00499"></a><span class="lineno">  499</span>        std::string ty =</div>
+<div class="line"><a id="l00500" name="l00500"></a><span class="lineno">  500</span>            prim_ty ? std::string(ffi::DLDataTypeToString(prim_ty-&gt;dtype)) : expr-&gt;ty.GetTypeKey();</div>
+<div class="line"><a id="l00501" name="l00501"></a><span class="lineno">  501</span>        <span class="keywordflow">return</span> TypeIndexToTypeKey(src-&gt;type_index) + <span class="stringliteral">&quot;[ty=&quot;</span> + ty + <span class="stringliteral">&quot;]&quot;</span>;</div>
+<div class="line"><a id="l00502" name="l00502"></a><span class="lineno">  502</span>      }</div>
+<div class="line"><a id="l00503" name="l00503"></a><span class="lineno">  503</span>    }</div>
+<div class="line"><a id="l00504" name="l00504"></a><span class="lineno">  504</span>    <span class="keywordflow">return</span> TypeTraitsBase::GetMismatchTypeInfo(src);</div>
+<div class="line"><a id="l00505" name="l00505"></a><span class="lineno">  505</span>  }</div>
+</div>
+<div class="line"><a id="l00506" name="l00506"></a><span class="lineno">  506</span>};</div>
+</div>
+<div class="line"><a id="l00507" name="l00507"></a><span class="lineno">  507</span> </div>
+<div class="line"><a id="l00508" name="l00508"></a><span class="lineno">  508</span><span class="keyword">template</span> &lt;&gt;</div>
+<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"><a class="line" href="namespacetvm_1_1ffi.html#a3953ced274a99f70b1ab2cd282f266e2">  509</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="namespacetvm_1_1ffi.html#a3953ced274a99f70b1ab2cd282f266e2">use_default_type_traits_v&lt;PrimExpr&gt;</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00510" name="l00510"></a><span class="lineno">  510</span> </div>
+<div class="line"><a id="l00511" name="l00511"></a><span class="lineno">  511</span><span class="comment">// define automatic conversion from bool, int64_t, double to PrimExpr</span></div>
+<div class="line"><a id="l00512" name="l00512"></a><span class="lineno">  512</span><span class="comment">// These functions are declared early to avoid circular dependency</span></div>
+<div class="line"><a id="l00513" name="l00513"></a><span class="lineno">  513</span><span class="keyword">template</span> &lt;&gt;</div>
+<div class="foldopen" id="foldopen00514" data-start="{" data-end="};">
+<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html">  514</a></span><span class="keyword">struct </span>TypeTraits&lt;<a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&gt; : <span class="keyword">public</span> ObjectRefWithFallbackTraitsBase&lt;PrimExpr, StrictBool, int64_t,</div>
+<div class="line"><a id="l00515" name="l00515"></a><span class="lineno">  515</span>                                                                     double, PrimExprConvertible&gt; {</div>
+<div class="foldopen" id="foldopen00516" data-start="{" data-end="}">
+<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a37db92b1772374171d83184bf87caebc">  516</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a37db92b1772374171d83184bf87caebc">CheckAnyStrict</a>(<span class="keyword">const</span> TVMFFIAny* src) {</div>
+<div class="line"><a id="l00517" name="l00517"></a><span class="lineno">  517</span>    <span class="keywordflow">if</span> (src-&gt;type_index == TypeIndex::kTVMFFINone) <span class="keywordflow">return</span> PrimExpr::_type_is_nullable;</div>
+<div class="line"><a id="l00518" name="l00518"></a><span class="lineno">  518</span>    <span class="keywordflow">return</span> TypeTraits&lt;TypedExpr&lt;PrimType&gt;&gt;::CheckAnyStrict(src);</div>
+<div class="line"><a id="l00519" name="l00519"></a><span class="lineno">  519</span>  }</div>
+</div>
 <div class="line"><a id="l00520" name="l00520"></a><span class="lineno">  520</span> </div>
-<div class="line"><a id="l00521" name="l00521"></a><span class="lineno">  521</span><span class="comment">// define automatic conversion from bool, int64_t, double to PrimExpr</span></div>
-<div class="line"><a id="l00522" name="l00522"></a><span class="lineno">  522</span><span class="comment">// These functions are declared early to avoid circular dependency</span></div>
-<div class="line"><a id="l00523" name="l00523"></a><span class="lineno">  523</span><span class="keyword">template</span> &lt;&gt;</div>
-<div class="foldopen" id="foldopen00524" data-start="{" data-end="};">
-<div class="line"><a id="l00524" name="l00524"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html">  524</a></span><span class="keyword">struct </span>TypeTraits&lt;<a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&gt; : <span class="keyword">public</span> ObjectRefWithFallbackTraitsBase&lt;PrimExpr, StrictBool, int64_t,</div>
-<div class="line"><a id="l00525" name="l00525"></a><span class="lineno">  525</span>                                                                     double, PrimExprConvertible&gt; {</div>
-<div class="line"><a id="l00526" name="l00526"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a9736ff64225b3095b26d178904d1fb86">  526</a></span>  <span class="keyword">using </span><a class="code hl_typedef" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a9736ff64225b3095b26d178904d1fb86">Base</a> =</div>
-<div class="line"><a id="l00527" name="l00527"></a><span class="lineno">  527</span>      ObjectRefWithFallbackTraitsBase&lt;PrimExpr, StrictBool, int64_t, double, PrimExprConvertible&gt;;</div>
-<div class="foldopen" id="foldopen00528" data-start="{" data-end="}">
-<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a37db92b1772374171d83184bf87caebc">  528</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a37db92b1772374171d83184bf87caebc">CheckAnyStrict</a>(<span class="keyword">const</span> TVMFFIAny* src) {</div>
-<div class="line"><a id="l00529" name="l00529"></a><span class="lineno">  529</span>    <span class="keywordflow">if</span> (src-&gt;type_index == TypeIndex::kTVMFFINone) <span class="keywordflow">return</span> PrimExpr::_type_is_nullable;</div>
-<div class="line"><a id="l00530" name="l00530"></a><span class="lineno">  530</span>    <span class="keywordflow">return</span> TypeTraits&lt;TypedExpr&lt;PrimType&gt;&gt;::CheckAnyStrict(src);</div>
-<div class="line"><a id="l00531" name="l00531"></a><span class="lineno">  531</span>  }</div>
-</div>
-<div class="line"><a id="l00532" name="l00532"></a><span class="lineno">  532</span> </div>
-<div class="foldopen" id="foldopen00533" data-start="{" data-end="}">
-<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#ad41ff91a2dd0e4f3bef192c8919e6867">  533</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> std::optional&lt;PrimExpr&gt; <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#ad41ff91a2dd0e4f3bef192c8919e6867">TryCastFromAnyView</a>(<span class="keyword">const</span> TVMFFIAny* src) {</div>
-<div class="line"><a id="l00534" name="l00534"></a><span class="lineno">  534</span>    <span class="comment">// PrimExprConvertible is nullable, but a required expression cannot accept None.</span></div>
-<div class="line"><a id="l00535" name="l00535"></a><span class="lineno">  535</span>    <span class="keywordflow">if</span> (src-&gt;type_index == TypeIndex::kTVMFFINone) <span class="keywordflow">return</span> std::nullopt;</div>
-<div class="line"><a id="l00536" name="l00536"></a><span class="lineno">  536</span>    <span class="keywordflow">return</span> Base::TryCastFromAnyView(src);</div>
-<div class="line"><a id="l00537" name="l00537"></a><span class="lineno">  537</span>  }</div>
-</div>
-<div class="line"><a id="l00538" name="l00538"></a><span class="lineno">  538</span> </div>
-<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a9472e92197fd2c19b4c58dc9091fb1e1">  539</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> std::string <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a9472e92197fd2c19b4c58dc9091fb1e1">TypeStr</a>() { <span class="keywordflow">return</span> <span class="stringliteral">&quot;ir.PrimExpr&quo [...]
-<div class="line"><a id="l00540" name="l00540"></a><span class="lineno">  540</span> </div>
-<div class="foldopen" id="foldopen00541" data-start="{" data-end="}">
-<div class="line"><a id="l00541" name="l00541"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a1065f2559ccded18e91419baf08390df">  541</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> std::string <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a1065f2559ccded18e91419baf08390df">GetMismatchTypeInfo</a>(<span class="keyword">const</span> TVMFFIAny* src) {</div>
-<div class="line"><a id="l00542" name="l00542"></a><span class="lineno">  542</span>    <span class="keywordflow">return</span> TypeTraits&lt;TypedExpr&lt;PrimType&gt;&gt;::GetMismatchTypeInfo(src);</div>
-<div class="line"><a id="l00543" name="l00543"></a><span class="lineno">  543</span>  }</div>
-</div>
-<div class="line"><a id="l00544" name="l00544"></a><span class="lineno">  544</span> </div>
-<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a91a59fcdc9e5602d4b296cc7533525d5">  545</a></span>  TVM_DLL <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a91a59fcdc9e5602d4b296cc7533525d5">ConvertFallbackValue</a>(StrictBool value);</div>
-<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a39a8f422a13c06451ce2fa1c6b7733a2">  546</a></span>  TVM_DLL <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a39a8f422a13c06451ce2fa1c6b7733a2">ConvertFallbackValue</a>(int64_t value);</div>
-<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#ac92ddf3ce25ca16a0b9c8030121aaaa3">  547</a></span>  TVM_DLL <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#ac92ddf3ce25ca16a0b9c8030121aaaa3">ConvertFallbackValue</a>(<span class="keywordtype">do [...]
-<div class="foldopen" id="foldopen00548" data-start="{" data-end="}">
-<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a8a9804726d037144ce7183a05739d3ca">  548</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a8a9804726d037144ce7183a05739d3ca">ConvertFallbackValue</a>(<a class="code hl_cla [...]
-<div class="line"><a id="l00549" name="l00549"></a><span class="lineno">  549</span>    <span class="keywordflow">return</span> value-&gt;ToPrimExpr();</div>
-<div class="line"><a id="l00550" name="l00550"></a><span class="lineno">  550</span>  }</div>
-</div>
-<div class="line"><a id="l00551" name="l00551"></a><span class="lineno">  551</span>};</div>
-</div>
-<div class="line"><a id="l00552" name="l00552"></a><span class="lineno">  552</span> </div>
-<div class="line"><a id="l00553" name="l00553"></a><span class="lineno">  553</span><span class="keyword">template</span> &lt;&gt;</div>
-<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"><a class="line" href="namespacetvm_1_1ffi.html#a7ae7c1d7c3b3ff8dca4f3397891b2671">  554</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="namespacetvm_1_1ffi.html#a7ae7c1d7c3b3ff8dca4f3397891b2671">use_default_type_traits_v&lt;IntExpr&gt;</a> = <span class="keyword">false</span>;</div>
-<div class="line"><a id="l00555" name="l00555"></a><span class="lineno">  555</span> </div>
-<div class="line"><a id="l00556" name="l00556"></a><span class="lineno">  556</span><span class="keyword">template</span> &lt;&gt;</div>
-<div class="foldopen" id="foldopen00557" data-start="{" data-end="};">
-<div class="line"><a id="l00557" name="l00557"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html">  557</a></span><span class="keyword">struct </span>TypeTraits&lt;<a class="code hl_class" href="classtvm_1_1IntExpr.html">IntExpr</a>&gt; : <span class="keyword">public</span> ObjectRefWithFallbackTraitsBase&lt;IntExpr, int64_t&gt; {</div>
-<div class="line"><a id="l00558" name="l00558"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#ad48b9a72953c9677b57a0965ecf99397">  558</a></span>  <span class="keyword">using </span><a class="code hl_typedef" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#ad48b9a72953c9677b57a0965ecf99397">Base</a> = ObjectRefWithFallbackTraitsBase&lt;IntExpr, int64_t&gt;;</div>
-<div class="line"><a id="l00559" name="l00559"></a><span class="lineno">  559</span> </div>
-<div class="foldopen" id="foldopen00560" data-start="{" data-end="}">
-<div class="line"><a id="l00560" name="l00560"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#aeb8d6e06d06899ca45692b2234113068">  560</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#aeb8d6e06d06899ca45692b2234113068">CheckAnyStrict</a>(<span class="keyword">const</span> TVMFFIAny* src) {</div>
-<div class="line"><a id="l00561" name="l00561"></a><span class="lineno">  561</span>    <span class="keywordflow">if</span> (!Base::CheckAnyStrict(src)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a id="l00562" name="l00562"></a><span class="lineno">  562</span>    <span class="keywordflow">if</span> (src-&gt;type_index == TypeIndex::kTVMFFINone) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a id="l00563" name="l00563"></a><span class="lineno">  563</span>    <span class="keyword">const</span> <span class="keyword">auto</span>* expr = details::ObjectUnsafe::RawObjectPtrFromUnowned&lt;ExprNode&gt;(src-&gt;v_obj);</div>
-<div class="line"><a id="l00564" name="l00564"></a><span class="lineno">  564</span>    <span class="keyword">const</span> <span class="keyword">auto</span>* ty = expr-&gt;ty.as&lt;<a class="code hl_class" href="classtvm_1_1PrimTypeNode.html">PrimTypeNode</a>&gt;();</div>
-<div class="line"><a id="l00565" name="l00565"></a><span class="lineno">  565</span>    <span class="keywordflow">return</span> ty != <span class="keyword">nullptr</span> &amp;&amp; ty-&gt;<a class="code hl_variable" href="classtvm_1_1PrimTypeNode.html#a33ddd141d33f41e97a81974e59f56e39">dtype</a>.lanes == 1 &amp;&amp;</div>
-<div class="line"><a id="l00566" name="l00566"></a><span class="lineno">  566</span>           (ty-&gt;dtype.code == kDLInt || ty-&gt;dtype.code == kDLUInt);</div>
-<div class="line"><a id="l00567" name="l00567"></a><span class="lineno">  567</span>  }</div>
-</div>
-<div class="line"><a id="l00568" name="l00568"></a><span class="lineno">  568</span> </div>
-<div class="foldopen" id="foldopen00569" data-start="{" data-end="}">
-<div class="line"><a id="l00569" name="l00569"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#a04e5c69ff8fe02aeae0407d31441da67">  569</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1IntExpr.html">IntExpr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#a04e5c69ff8fe02aeae0407d31441da67">ConvertFallbackValue</a>(int64_t value) {</div>
-<div class="line"><a id="l00570" name="l00570"></a><span class="lineno">  570</span>    <span class="keywordflow">return</span> TypeTraits&lt;PrimExpr&gt;::ConvertFallbackValue(value).as_or_throw&lt;<a class="code hl_class" href="classtvm_1_1IntExpr.html">IntExpr</a>&gt;();</div>
-<div class="line"><a id="l00571" name="l00571"></a><span class="lineno">  571</span>  }</div>
-</div>
-<div class="line"><a id="l00572" name="l00572"></a><span class="lineno">  572</span> </div>
-<div class="line"><a id="l00573" name="l00573"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#a67e5169848329a8a241096f9929a1cef">  573</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> std::string <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#a67e5169848329a8a241096f9929a1cef">TypeStr</a>() { <span class="keywordflow">return</span> <span class="stringliteral">&quot;ir.IntExpr&quot;< [...]
-<div class="line"><a id="l00574" name="l00574"></a><span class="lineno">  574</span> </div>
-<div class="foldopen" id="foldopen00575" data-start="{" data-end="}">
-<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#a4b1cd65d933fe3c22a18efc33f3af1e9">  575</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> std::string <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#a4b1cd65d933fe3c22a18efc33f3af1e9">GetMismatchTypeInfo</a>(<span class="keyword">const</span> TVMFFIAny* src) {</div>
-<div class="line"><a id="l00576" name="l00576"></a><span class="lineno">  576</span>    <span class="keywordflow">return</span> TypeTraits&lt;TypedExpr&lt;PrimType&gt;&gt;::GetMismatchTypeInfo(src);</div>
-<div class="line"><a id="l00577" name="l00577"></a><span class="lineno">  577</span>  }</div>
-</div>
-<div class="line"><a id="l00578" name="l00578"></a><span class="lineno">  578</span>};</div>
-</div>
-<div class="line"><a id="l00579" name="l00579"></a><span class="lineno">  579</span> </div>
-<div class="line"><a id="l00580" name="l00580"></a><span class="lineno">  580</span><span class="keyword">template</span> &lt;&gt;</div>
-<div class="line"><a id="l00581" name="l00581"></a><span class="lineno"><a class="line" href="namespacetvm_1_1ffi.html#a2a487df61f267ffa50e8ed5e6e00323a">  581</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="namespacetvm_1_1ffi.html#a2a487df61f267ffa50e8ed5e6e00323a">use_default_type_traits_v&lt;Expr&gt;</a> = <span class="keyword">false</span>;</div>
-<div class="line"><a id="l00582" name="l00582"></a><span class="lineno">  582</span> </div>
-<div class="line"><a id="l00583" name="l00583"></a><span class="lineno">  583</span><span class="comment">// Allow generic Expr arguments to use the primitive-literal conversions</span></div>
-<div class="line"><a id="l00584" name="l00584"></a><span class="lineno">  584</span><span class="comment">// already defined by PrimExpr.</span></div>
-<div class="line"><a id="l00585" name="l00585"></a><span class="lineno">  585</span><span class="keyword">template</span> &lt;&gt;</div>
-<div class="foldopen" id="foldopen00586" data-start="{" data-end="};">
-<div class="line"><a id="l00586" name="l00586"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html">  586</a></span><span class="keyword">struct </span>TypeTraits&lt;<a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>&gt; : <span class="keyword">public</span> ObjectRefWithFallbackTraitsBase&lt;Expr, PrimExpr, ffi::String&gt; {</div>
-<div class="line"><a id="l00587" name="l00587"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html#a3ac03c8423e9d3ac76c7f81b80623eb9">  587</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html#a3ac03c8423e9d3ac76c7f81b80623eb9">ConvertFallbackValue</a>(<a class="code hl_class" href="classt [...]
-<div class="line"><a id="l00588" name="l00588"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html#ab718a7d6345028769e8bfb6145c5bda7">  588</a></span>  TVM_DLL <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html#ab718a7d6345028769e8bfb6145c5bda7">ConvertFallbackValue</a>(ffi::String value);</div>
-<div class="line"><a id="l00589" name="l00589"></a><span class="lineno">  589</span>};</div>
-</div>
-<div class="line"><a id="l00590" name="l00590"></a><span class="lineno">  590</span>}  <span class="comment">// namespace ffi</span></div>
-</div>
-<div class="line"><a id="l00591" name="l00591"></a><span class="lineno">  591</span> </div>
-<div class="line"><a id="l00592" name="l00592"></a><span class="lineno">  592</span>}  <span class="comment">// namespace tvm</span></div>
-<div class="line"><a id="l00593" name="l00593"></a><span class="lineno">  593</span> </div>
-<div class="line"><a id="l00594" name="l00594"></a><span class="lineno">  594</span><span class="preprocessor">#endif  </span><span class="comment">// TVM_IR_BASE_EXPR_H_</span></div>
-<div class="ttc" id="aclasstvm_1_1Call_html"><div class="ttname"><a href="classtvm_1_1Call.html">tvm::Call</a></div><div class="ttdoc">Managed reference to CallNode.</div><div class="ttdef"><b>Definition</b> expr.h:532</div></div>
+<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a9472e92197fd2c19b4c58dc9091fb1e1">  521</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> std::string <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a9472e92197fd2c19b4c58dc9091fb1e1">TypeStr</a>() { <span class="keywordflow">return</span> <span class="stringliteral">&quot;ir.PrimExpr&quo [...]
+<div class="line"><a id="l00522" name="l00522"></a><span class="lineno">  522</span> </div>
+<div class="foldopen" id="foldopen00523" data-start="{" data-end="}">
+<div class="line"><a id="l00523" name="l00523"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a1065f2559ccded18e91419baf08390df">  523</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> std::string <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a1065f2559ccded18e91419baf08390df">GetMismatchTypeInfo</a>(<span class="keyword">const</span> TVMFFIAny* src) {</div>
+<div class="line"><a id="l00524" name="l00524"></a><span class="lineno">  524</span>    <span class="keywordflow">return</span> TypeTraits&lt;TypedExpr&lt;PrimType&gt;&gt;::GetMismatchTypeInfo(src);</div>
+<div class="line"><a id="l00525" name="l00525"></a><span class="lineno">  525</span>  }</div>
+</div>
+<div class="line"><a id="l00526" name="l00526"></a><span class="lineno">  526</span> </div>
+<div class="line"><a id="l00527" name="l00527"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a91a59fcdc9e5602d4b296cc7533525d5">  527</a></span>  TVM_DLL <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a91a59fcdc9e5602d4b296cc7533525d5">ConvertFallbackValue</a>(StrictBool value);</div>
+<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a39a8f422a13c06451ce2fa1c6b7733a2">  528</a></span>  TVM_DLL <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a39a8f422a13c06451ce2fa1c6b7733a2">ConvertFallbackValue</a>(int64_t value);</div>
+<div class="line"><a id="l00529" name="l00529"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#ac92ddf3ce25ca16a0b9c8030121aaaa3">  529</a></span>  TVM_DLL <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#ac92ddf3ce25ca16a0b9c8030121aaaa3">ConvertFallbackValue</a>(<span class="keywordtype">do [...]
+<div class="foldopen" id="foldopen00530" data-start="{" data-end="}">
+<div class="line"><a id="l00530" name="l00530"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a8a9804726d037144ce7183a05739d3ca">  530</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a8a9804726d037144ce7183a05739d3ca">ConvertFallbackValue</a>(<a class="code hl_cla [...]
+<div class="line"><a id="l00531" name="l00531"></a><span class="lineno">  531</span>    <span class="keywordflow">return</span> value-&gt;ToPrimExpr();</div>
+<div class="line"><a id="l00532" name="l00532"></a><span class="lineno">  532</span>  }</div>
+</div>
+<div class="line"><a id="l00533" name="l00533"></a><span class="lineno">  533</span>};</div>
+</div>
+<div class="line"><a id="l00534" name="l00534"></a><span class="lineno">  534</span> </div>
+<div class="line"><a id="l00535" name="l00535"></a><span class="lineno">  535</span><span class="keyword">template</span> &lt;&gt;</div>
+<div class="line"><a id="l00536" name="l00536"></a><span class="lineno"><a class="line" href="namespacetvm_1_1ffi.html#a7ae7c1d7c3b3ff8dca4f3397891b2671">  536</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="namespacetvm_1_1ffi.html#a7ae7c1d7c3b3ff8dca4f3397891b2671">use_default_type_traits_v&lt;IntExpr&gt;</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00537" name="l00537"></a><span class="lineno">  537</span> </div>
+<div class="line"><a id="l00538" name="l00538"></a><span class="lineno">  538</span><span class="keyword">template</span> &lt;&gt;</div>
+<div class="foldopen" id="foldopen00539" data-start="{" data-end="};">
+<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html">  539</a></span><span class="keyword">struct </span>TypeTraits&lt;<a class="code hl_class" href="classtvm_1_1IntExpr.html">IntExpr</a>&gt; : <span class="keyword">public</span> ObjectRefWithFallbackTraitsBase&lt;IntExpr, int64_t&gt; {</div>
+<div class="line"><a id="l00540" name="l00540"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#ad48b9a72953c9677b57a0965ecf99397">  540</a></span>  <span class="keyword">using </span><a class="code hl_typedef" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#ad48b9a72953c9677b57a0965ecf99397">Base</a> = ObjectRefWithFallbackTraitsBase&lt;IntExpr, int64_t&gt;;</div>
+<div class="line"><a id="l00541" name="l00541"></a><span class="lineno">  541</span> </div>
+<div class="foldopen" id="foldopen00542" data-start="{" data-end="}">
+<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#aeb8d6e06d06899ca45692b2234113068">  542</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#aeb8d6e06d06899ca45692b2234113068">CheckAnyStrict</a>(<span class="keyword">const</span> TVMFFIAny* src) {</div>
+<div class="line"><a id="l00543" name="l00543"></a><span class="lineno">  543</span>    <span class="keywordflow">if</span> (!Base::CheckAnyStrict(src)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00544" name="l00544"></a><span class="lineno">  544</span>    <span class="keywordflow">if</span> (src-&gt;type_index == TypeIndex::kTVMFFINone) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a id="l00545" name="l00545"></a><span class="lineno">  545</span>    <span class="keyword">const</span> <span class="keyword">auto</span>* expr = details::ObjectUnsafe::RawObjectPtrFromUnowned&lt;ExprNode&gt;(src-&gt;v_obj);</div>
+<div class="line"><a id="l00546" name="l00546"></a><span class="lineno">  546</span>    <span class="keyword">const</span> <span class="keyword">auto</span>* ty = expr-&gt;ty.as&lt;<a class="code hl_class" href="classtvm_1_1PrimTypeNode.html">PrimTypeNode</a>&gt;();</div>
+<div class="line"><a id="l00547" name="l00547"></a><span class="lineno">  547</span>    <span class="keywordflow">return</span> ty != <span class="keyword">nullptr</span> &amp;&amp; ty-&gt;<a class="code hl_variable" href="classtvm_1_1PrimTypeNode.html#a33ddd141d33f41e97a81974e59f56e39">dtype</a>.lanes == 1 &amp;&amp;</div>
+<div class="line"><a id="l00548" name="l00548"></a><span class="lineno">  548</span>           (ty-&gt;dtype.code == kDLInt || ty-&gt;dtype.code == kDLUInt);</div>
+<div class="line"><a id="l00549" name="l00549"></a><span class="lineno">  549</span>  }</div>
+</div>
+<div class="line"><a id="l00550" name="l00550"></a><span class="lineno">  550</span> </div>
+<div class="foldopen" id="foldopen00551" data-start="{" data-end="}">
+<div class="line"><a id="l00551" name="l00551"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#a04e5c69ff8fe02aeae0407d31441da67">  551</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1IntExpr.html">IntExpr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#a04e5c69ff8fe02aeae0407d31441da67">ConvertFallbackValue</a>(int64_t value) {</div>
+<div class="line"><a id="l00552" name="l00552"></a><span class="lineno">  552</span>    <span class="keywordflow">return</span> TypeTraits&lt;PrimExpr&gt;::ConvertFallbackValue(value).as_or_throw&lt;<a class="code hl_class" href="classtvm_1_1IntExpr.html">IntExpr</a>&gt;();</div>
+<div class="line"><a id="l00553" name="l00553"></a><span class="lineno">  553</span>  }</div>
+</div>
+<div class="line"><a id="l00554" name="l00554"></a><span class="lineno">  554</span> </div>
+<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#a67e5169848329a8a241096f9929a1cef">  555</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> std::string <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#a67e5169848329a8a241096f9929a1cef">TypeStr</a>() { <span class="keywordflow">return</span> <span class="stringliteral">&quot;ir.IntExpr&quot;< [...]
+<div class="line"><a id="l00556" name="l00556"></a><span class="lineno">  556</span> </div>
+<div class="foldopen" id="foldopen00557" data-start="{" data-end="}">
+<div class="line"><a id="l00557" name="l00557"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#a4b1cd65d933fe3c22a18efc33f3af1e9">  557</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> std::string <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#a4b1cd65d933fe3c22a18efc33f3af1e9">GetMismatchTypeInfo</a>(<span class="keyword">const</span> TVMFFIAny* src) {</div>
+<div class="line"><a id="l00558" name="l00558"></a><span class="lineno">  558</span>    <span class="keywordflow">return</span> TypeTraits&lt;TypedExpr&lt;PrimType&gt;&gt;::GetMismatchTypeInfo(src);</div>
+<div class="line"><a id="l00559" name="l00559"></a><span class="lineno">  559</span>  }</div>
+</div>
+<div class="line"><a id="l00560" name="l00560"></a><span class="lineno">  560</span>};</div>
+</div>
+<div class="line"><a id="l00561" name="l00561"></a><span class="lineno">  561</span> </div>
+<div class="line"><a id="l00562" name="l00562"></a><span class="lineno">  562</span><span class="keyword">template</span> &lt;&gt;</div>
+<div class="line"><a id="l00563" name="l00563"></a><span class="lineno"><a class="line" href="namespacetvm_1_1ffi.html#a2a487df61f267ffa50e8ed5e6e00323a">  563</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="namespacetvm_1_1ffi.html#a2a487df61f267ffa50e8ed5e6e00323a">use_default_type_traits_v&lt;Expr&gt;</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00564" name="l00564"></a><span class="lineno">  564</span> </div>
+<div class="line"><a id="l00565" name="l00565"></a><span class="lineno">  565</span><span class="comment">// Allow generic Expr arguments to use the primitive-literal conversions</span></div>
+<div class="line"><a id="l00566" name="l00566"></a><span class="lineno">  566</span><span class="comment">// already defined by PrimExpr.</span></div>
+<div class="line"><a id="l00567" name="l00567"></a><span class="lineno">  567</span><span class="keyword">template</span> &lt;&gt;</div>
+<div class="foldopen" id="foldopen00568" data-start="{" data-end="};">
+<div class="line"><a id="l00568" name="l00568"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html">  568</a></span><span class="keyword">struct </span>TypeTraits&lt;<a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>&gt; : <span class="keyword">public</span> ObjectRefWithFallbackTraitsBase&lt;Expr, PrimExpr, ffi::String&gt; {</div>
+<div class="line"><a id="l00569" name="l00569"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html#a3ac03c8423e9d3ac76c7f81b80623eb9">  569</a></span>  TVM_FFI_INLINE <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html#a3ac03c8423e9d3ac76c7f81b80623eb9">ConvertFallbackValue</a>(<a class="code hl_class" href="classt [...]
+<div class="line"><a id="l00570" name="l00570"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html#ab718a7d6345028769e8bfb6145c5bda7">  570</a></span>  TVM_DLL <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html#ab718a7d6345028769e8bfb6145c5bda7">ConvertFallbackValue</a>(ffi::String value);</div>
+<div class="line"><a id="l00571" name="l00571"></a><span class="lineno">  571</span>};</div>
+</div>
+<div class="line"><a id="l00572" name="l00572"></a><span class="lineno">  572</span>}  <span class="comment">// namespace ffi</span></div>
+</div>
+<div class="line"><a id="l00573" name="l00573"></a><span class="lineno">  573</span> </div>
+<div class="line"><a id="l00574" name="l00574"></a><span class="lineno">  574</span>}  <span class="comment">// namespace tvm</span></div>
+<div class="line"><a id="l00575" name="l00575"></a><span class="lineno">  575</span> </div>
+<div class="line"><a id="l00576" name="l00576"></a><span class="lineno">  576</span><span class="preprocessor">#endif  </span><span class="comment">// TVM_IR_BASE_EXPR_H_</span></div>
+<div class="ttc" id="aclasstvm_1_1Call_html"><div class="ttname"><a href="classtvm_1_1Call.html">tvm::Call</a></div><div class="ttdoc">Managed reference to CallNode.</div><div class="ttdef"><b>Definition</b> expr.h:511</div></div>
 <div class="ttc" id="aclasstvm_1_1ExprNode_html"><div class="ttname"><a href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></div><div class="ttdoc">Base type of all the expressions.</div><div class="ttdef"><b>Definition</b> base_expr.h:303</div></div>
 <div class="ttc" id="aclasstvm_1_1ExprNode_html_a4c2a9b792a5ec422d8e04d6d78707fcb"><div class="ttname"><a href="classtvm_1_1ExprNode.html#a4c2a9b792a5ec422d8e04d6d78707fcb">tvm::ExprNode::ty</a></div><div class="ttdeci">Type ty</div><div class="ttdoc">The deduced or annotated type of the expression.</div><div class="ttdef"><b>Definition</b> base_expr.h:317</div></div>
 <div class="ttc" id="aclasstvm_1_1ExprNode_html_a52b366cd48d311f2406d86d92991c834"><div class="ttname"><a href="classtvm_1_1ExprNode.html#a52b366cd48d311f2406d86d92991c834">tvm::ExprNode::span</a></div><div class="ttdeci">Span span</div><div class="ttdoc">Span that points to the original source code. Reserved debug information.</div><div class="ttdef"><b>Definition</b> base_expr.h:309</div></div>
@@ -625,40 +603,37 @@ $(document).ready(function() { init_codefold(0); });
 <div class="ttc" id="aclasstvm_1_1ExprNode_html_a998e4b1d8caa76f66e9d947931178f01"><div class="ttname"><a href="classtvm_1_1ExprNode.html#a998e4b1d8caa76f66e9d947931178f01">tvm::ExprNode::_type_child_slots</a></div><div class="ttdeci">static constexpr const uint32_t _type_child_slots</div><div class="ttdef"><b>Definition</b> base_expr.h:330</div></div>
 <div class="ttc" id="aclasstvm_1_1ExprNode_html_ae10a6ed3fb0e55e098b4e1e223799f8c"><div class="ttname"><a href="classtvm_1_1ExprNode.html#ae10a6ed3fb0e55e098b4e1e223799f8c">tvm::ExprNode::RegisterReflection</a></div><div class="ttdeci">static void RegisterReflection()</div><div class="ttdef"><b>Definition</b> base_expr.h:319</div></div>
 <div class="ttc" id="aclasstvm_1_1Expr_html"><div class="ttname"><a href="classtvm_1_1Expr.html">tvm::Expr</a></div><div class="ttdoc">Managed reference to ExprNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:338</div></div>
-<div class="ttc" id="aclasstvm_1_1Expr_html_a26775d381ee6e7c7bb65b8a7320f5b87"><div class="ttname"><a href="classtvm_1_1Expr.html#a26775d381ee6e7c7bb65b8a7320f5b87">tvm::Expr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(Expr, ffi::ObjectRef, ExprNode)</div></div>
+<div class="ttc" id="aclasstvm_1_1Expr_html_a081d3512d899e352e81e8eda6385c444"><div class="ttname"><a href="classtvm_1_1Expr.html#a081d3512d899e352e81e8eda6385c444">tvm::Expr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE(Expr, ffi::ObjectRef, ExprNode)</div></div>
 <div class="ttc" id="aclasstvm_1_1Expr_html_a637231cfc91838b8f14745ac199b5fbf"><div class="ttname"><a href="classtvm_1_1Expr.html#a637231cfc91838b8f14745ac199b5fbf">tvm::Expr::operator==</a></div><div class="ttdeci">bool operator==(const Expr &amp;other) const =delete</div></div>
 <div class="ttc" id="aclasstvm_1_1Expr_html_a86bd9da75268e479e3bbe61729dce8ac"><div class="ttname"><a href="classtvm_1_1Expr.html#a86bd9da75268e479e3bbe61729dce8ac">tvm::Expr::operator!=</a></div><div class="ttdeci">bool operator!=(const Expr &amp;other) const =delete</div></div>
-<div class="ttc" id="aclasstvm_1_1Expr_html_aad84c3380b07b63427dda3697a78b269"><div class="ttname"><a href="classtvm_1_1Expr.html#aad84c3380b07b63427dda3697a78b269">tvm::Expr::Expr</a></div><div class="ttdeci">Expr(ffi::ObjectPtr&lt; ExprNode &gt; node)</div><div class="ttdef"><b>Definition</b> base_expr.h:346</div></div>
 <div class="ttc" id="aclasstvm_1_1Expr_html_afb14020d9ae652a64a6f15dcba073c0e"><div class="ttname"><a href="classtvm_1_1Expr.html#afb14020d9ae652a64a6f15dcba073c0e">tvm::Expr::operator&lt;</a></div><div class="ttdeci">bool operator&lt;(const Expr &amp;other) const =delete</div></div>
-<div class="ttc" id="aclasstvm_1_1IntExpr_html"><div class="ttname"><a href="classtvm_1_1IntExpr.html">tvm::IntExpr</a></div><div class="ttdoc">View over a scalar signed or unsigned integer expression of any bit width.</div><div class="ttdef"><b>Definition</b> base_expr.h:446</div></div>
-<div class="ttc" id="aclasstvm_1_1IntExpr_html_a134f662e9c361e9e72f282c604859719"><div class="ttname"><a href="classtvm_1_1IntExpr.html#a134f662e9c361e9e72f282c604859719">tvm::IntExpr::_type_container_is_exact</a></div><div class="ttdeci">static constexpr bool _type_container_is_exact</div><div class="ttdef"><b>Definition</b> base_expr.h:449</div></div>
-<div class="ttc" id="aclasstvm_1_1IntExpr_html_ae847c279a016d20acf2e7ac14e2a78eb"><div class="ttname"><a href="classtvm_1_1IntExpr.html#ae847c279a016d20acf2e7ac14e2a78eb">tvm::IntExpr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(IntExpr, PrimExpr, ExprNode)</div></div>
-<div class="ttc" id="aclasstvm_1_1OpaqueExprNode_html"><div class="ttname"><a href="classtvm_1_1OpaqueExprNode.html">tvm::OpaqueExprNode</a></div><div class="ttdoc">Base node for opaque construction-time expressions.</div><div class="ttdef"><b>Definition</b> base_expr.h:359</div></div>
-<div class="ttc" id="aclasstvm_1_1OpaqueExprNode_html_a0aec85b5f32e134740ab24a36850af5a"><div class="ttname"><a href="classtvm_1_1OpaqueExprNode.html#a0aec85b5f32e134740ab24a36850af5a">tvm::OpaqueExprNode::_type_child_slots</a></div><div class="ttdeci">static constexpr const uint32_t _type_child_slots</div><div class="ttdef"><b>Definition</b> base_expr.h:366</div></div>
+<div class="ttc" id="aclasstvm_1_1IntExpr_html"><div class="ttname"><a href="classtvm_1_1IntExpr.html">tvm::IntExpr</a></div><div class="ttdoc">View over a scalar signed or unsigned integer expression of any bit width.</div><div class="ttdef"><b>Definition</b> base_expr.h:436</div></div>
+<div class="ttc" id="aclasstvm_1_1IntExpr_html_a05d3dcf2d5ced700249353dc34f14022"><div class="ttname"><a href="classtvm_1_1IntExpr.html#a05d3dcf2d5ced700249353dc34f14022">tvm::IntExpr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE(IntExpr, PrimExpr, ExprNode)</div></div>
+<div class="ttc" id="aclasstvm_1_1IntExpr_html_a134f662e9c361e9e72f282c604859719"><div class="ttname"><a href="classtvm_1_1IntExpr.html#a134f662e9c361e9e72f282c604859719">tvm::IntExpr::_type_container_is_exact</a></div><div class="ttdeci">static constexpr bool _type_container_is_exact</div><div class="ttdef"><b>Definition</b> base_expr.h:439</div></div>
+<div class="ttc" id="aclasstvm_1_1OpaqueExprNode_html"><div class="ttname"><a href="classtvm_1_1OpaqueExprNode.html">tvm::OpaqueExprNode</a></div><div class="ttdoc">Base node for opaque construction-time expressions.</div><div class="ttdef"><b>Definition</b> base_expr.h:355</div></div>
+<div class="ttc" id="aclasstvm_1_1OpaqueExprNode_html_a0aec85b5f32e134740ab24a36850af5a"><div class="ttname"><a href="classtvm_1_1OpaqueExprNode.html#a0aec85b5f32e134740ab24a36850af5a">tvm::OpaqueExprNode::_type_child_slots</a></div><div class="ttdeci">static constexpr const uint32_t _type_child_slots</div><div class="ttdef"><b>Definition</b> base_expr.h:362</div></div>
 <div class="ttc" id="aclasstvm_1_1OpaqueExprNode_html_a43b8b6676f146d6b431a793a7bf6c12e"><div class="ttname"><a href="classtvm_1_1OpaqueExprNode.html#a43b8b6676f146d6b431a793a7bf6c12e">tvm::OpaqueExprNode::TVM_FFI_DECLARE_OBJECT_INFO</a></div><div class="ttdeci">TVM_FFI_DECLARE_OBJECT_INFO(&quot;ir.OpaqueExpr&quot;, OpaqueExprNode, ExprNode)</div></div>
-<div class="ttc" id="aclasstvm_1_1OpaqueExprNode_html_a6c57e5bf56efcb43b92283af89be09fc"><div class="ttname"><a href="classtvm_1_1OpaqueExprNode.html#a6c57e5bf56efcb43b92283af89be09fc">tvm::OpaqueExprNode::RegisterReflection</a></div><div class="ttdeci">static void RegisterReflection()</div><div class="ttdef"><b>Definition</b> base_expr.h:361</div></div>
-<div class="ttc" id="aclasstvm_1_1OpaqueExpr_html"><div class="ttname"><a href="classtvm_1_1OpaqueExpr.html">tvm::OpaqueExpr</a></div><div class="ttdoc">Managed reference to OpaqueExprNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:371</div></div>
-<div class="ttc" id="aclasstvm_1_1OpaqueExpr_html_ac7e17e5999f849b6ff7a787d993cda40"><div class="ttname"><a href="classtvm_1_1OpaqueExpr.html#ac7e17e5999f849b6ff7a787d993cda40">tvm::OpaqueExpr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(OpaqueExpr, Expr, OpaqueExprNode)</div></div>
-<div class="ttc" id="aclasstvm_1_1OpaqueExpr_html_afd17da96046bfe1522adcd996454818a"><div class="ttname"><a href="classtvm_1_1OpaqueExpr.html#afd17da96046bfe1522adcd996454818a">tvm::OpaqueExpr::OpaqueExpr</a></div><div class="ttdeci">OpaqueExpr(ffi::ObjectPtr&lt; OpaqueExprNode &gt; node)</div><div class="ttdef"><b>Definition</b> base_expr.h:373</div></div>
+<div class="ttc" id="aclasstvm_1_1OpaqueExprNode_html_a6c57e5bf56efcb43b92283af89be09fc"><div class="ttname"><a href="classtvm_1_1OpaqueExprNode.html#a6c57e5bf56efcb43b92283af89be09fc">tvm::OpaqueExprNode::RegisterReflection</a></div><div class="ttdeci">static void RegisterReflection()</div><div class="ttdef"><b>Definition</b> base_expr.h:357</div></div>
+<div class="ttc" id="aclasstvm_1_1OpaqueExpr_html"><div class="ttname"><a href="classtvm_1_1OpaqueExpr.html">tvm::OpaqueExpr</a></div><div class="ttdoc">Managed reference to OpaqueExprNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:367</div></div>
+<div class="ttc" id="aclasstvm_1_1OpaqueExpr_html_ab40bce2a8f40aa5101cbc5c53d80315e"><div class="ttname"><a href="classtvm_1_1OpaqueExpr.html#ab40bce2a8f40aa5101cbc5c53d80315e">tvm::OpaqueExpr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE(OpaqueExpr, Expr, OpaqueExprNode)</div></div>
 <div class="ttc" id="aclasstvm_1_1OpaqueTypeNode_html"><div class="ttname"><a href="classtvm_1_1OpaqueTypeNode.html">tvm::OpaqueTypeNode</a></div><div class="ttdoc">Type marker for opaque construction-time expressions.</div><div class="ttdef"><b>Definition</b> base_expr.h:97</div></div>
 <div class="ttc" id="aclasstvm_1_1OpaqueTypeNode_html_a788cf9986a6a373d56a05b2561d63ef5"><div class="ttname"><a href="classtvm_1_1OpaqueTypeNode.html#a788cf9986a6a373d56a05b2561d63ef5">tvm::OpaqueTypeNode::TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a></div><div class="ttdeci">TVM_FFI_DECLARE_OBJECT_INFO_FINAL(&quot;ir.OpaqueType&quot;, OpaqueTypeNode, TypeNode)</div></div>
 <div class="ttc" id="aclasstvm_1_1OpaqueTypeNode_html_ac20b91ece9c84c339ec1971d0422c434"><div class="ttname"><a href="classtvm_1_1OpaqueTypeNode.html#ac20b91ece9c84c339ec1971d0422c434">tvm::OpaqueTypeNode::RegisterReflection</a></div><div class="ttdeci">static void RegisterReflection()</div><div class="ttdef"><b>Definition</b> base_expr.h:99</div></div>
 <div class="ttc" id="aclasstvm_1_1OpaqueType_html"><div class="ttname"><a href="classtvm_1_1OpaqueType.html">tvm::OpaqueType</a></div><div class="ttdoc">Managed reference to OpaqueTypeNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:108</div></div>
 <div class="ttc" id="aclasstvm_1_1OpaqueType_html_a3c529cf6fa069430092013c2bd1e7cc9"><div class="ttname"><a href="classtvm_1_1OpaqueType.html#a3c529cf6fa069430092013c2bd1e7cc9">tvm::OpaqueType::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(OpaqueType, Type, OpaqueTypeNode)</div></div>
 <div class="ttc" id="aclasstvm_1_1OpaqueType_html_a6c374ff2d7cb64952ec2e7067e438d8f"><div class="ttname"><a href="classtvm_1_1OpaqueType.html#a6c374ff2d7cb64952ec2e7067e438d8f">tvm::OpaqueType::OpaqueType</a></div><div class="ttdeci">OpaqueType()</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimExprConvertibleNode_html"><div class="ttname"><a href="classtvm_1_1PrimExprConvertibleNode.html">tvm::PrimExprConvertibleNode</a></div><div class="ttdoc">Base class for other IR constructs that can be converted to PrimExpr. This is useful for the FFI to c...</div><div class="ttdef"><b>Definition</b> base_expr.h:457</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimExprConvertibleNode_html_a625eda6a9ec8f03c69802a1300053d8b"><div class="ttname"><a href="classtvm_1_1PrimExprConvertibleNode.html#a625eda6a9ec8f03c69802a1300053d8b">tvm::PrimExprConvertibleNode::~PrimExprConvertibleNode</a></div><div class="ttdeci">virtual ~PrimExprConvertibleNode()</div><div class="ttdef"><b>Definition</b> base_expr.h:459</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimExprConvertibleNode_html"><div class="ttname"><a href="classtvm_1_1PrimExprConvertibleNode.html">tvm::PrimExprConvertibleNode</a></div><div class="ttdoc">Base class for other IR constructs that can be converted to PrimExpr. This is useful for the FFI to c...</div><div class="ttdef"><b>Definition</b> base_expr.h:447</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimExprConvertibleNode_html_a625eda6a9ec8f03c69802a1300053d8b"><div class="ttname"><a href="classtvm_1_1PrimExprConvertibleNode.html#a625eda6a9ec8f03c69802a1300053d8b">tvm::PrimExprConvertibleNode::~PrimExprConvertibleNode</a></div><div class="ttdeci">virtual ~PrimExprConvertibleNode()</div><div class="ttdef"><b>Definition</b> base_expr.h:449</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimExprConvertibleNode_html_ab9efcf82acd9a64e2cda50108c98e458"><div class="ttname"><a href="classtvm_1_1PrimExprConvertibleNode.html#ab9efcf82acd9a64e2cda50108c98e458">tvm::PrimExprConvertibleNode::ToPrimExpr</a></div><div class="ttdeci">virtual PrimExpr ToPrimExpr() const =0</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimExprConvertibleNode_html_add3904e335bd840516d486a6ca398f86"><div class="ttname"><a href="classtvm_1_1PrimExprConvertibleNode.html#add3904e335bd840516d486a6ca398f86">tvm::PrimExprConvertibleNode::TVM_FFI_DECLARE_OBJECT_INFO</a></div><div class="ttdeci">TVM_FFI_DECLARE_OBJECT_INFO(&quot;ir.PrimExprConvertible&quot;, PrimExprConvertibleNode, ffi::Object)</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimExprConvertible_html"><div class="ttname"><a href="classtvm_1_1PrimExprConvertible.html">tvm::PrimExprConvertible</a></div><div class="ttdoc">Managed reference to PrimExprConvertibleNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:468</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimExprConvertible_html"><div class="ttname"><a href="classtvm_1_1PrimExprConvertible.html">tvm::PrimExprConvertible</a></div><div class="ttdoc">Managed reference to PrimExprConvertibleNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:458</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimExprConvertible_html_a0bad5536ab9ff5ab07a22e75c2c2102c"><div class="ttname"><a href="classtvm_1_1PrimExprConvertible.html#a0bad5536ab9ff5ab07a22e75c2c2102c">tvm::PrimExprConvertible::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE(PrimExprConvertible, ffi::ObjectRef, PrimExprConvertibleNode)</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:412</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimExpr_html_a33afa5fbcf78f349305e222f182ee28b"><div class="ttname"><a href="classtvm_1_1PrimExpr.html#a33afa5fbcf78f349305e222f182ee28b">tvm::PrimExpr::_type_container_is_exact</a></div><div class="ttdeci">static constexpr bool _type_container_is_exact</div><div class="ttdef"><b>Definition</b> base_expr.h:437</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:404</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimExpr_html_a33afa5fbcf78f349305e222f182ee28b"><div class="ttname"><a href="classtvm_1_1PrimExpr.html#a33afa5fbcf78f349305e222f182ee28b">tvm::PrimExpr::_type_container_is_exact</a></div><div class="ttdeci">static constexpr bool _type_container_is_exact</div><div class="ttdef"><b>Definition</b> base_expr.h:427</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimExpr_html_a611b175971d5ca7e5a549c55fae12ac6"><div class="ttname"><a href="classtvm_1_1PrimExpr.html#a611b175971d5ca7e5a549c55fae12ac6">tvm::PrimExpr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE(PrimExpr, TypedExpr&lt; PrimType &gt;, ExprNode)</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimExpr_html_a756d3f8b17b019560946524951ae6118"><div class="ttname"><a href="classtvm_1_1PrimExpr.html#a756d3f8b17b019560946524951ae6118">tvm::PrimExpr::PrimExpr</a></div><div class="ttdeci">PrimExpr(float value)</div><div class="ttdoc">construct from float.</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimExpr_html_a7f0ca30e951608a0b36a77a66d4d19e0"><div class="ttname"><a href="classtvm_1_1PrimExpr.html#a7f0ca30e951608a0b36a77a66d4d19e0">tvm::PrimExpr::PrimExpr</a></div><div class="ttdeci">PrimExpr(int32_t value)</div><div class="ttdoc">construct from integer.</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimExpr_html_a8e6c9b7691f897badf413f21469f7f9d"><div class="ttname"><a href="classtvm_1_1PrimExpr.html#a8e6c9b7691f897badf413f21469f7f9d">tvm::PrimExpr::PrimExpr</a></div><div class="ttdeci">PrimExpr(Call call)</div><div class="ttdoc">Construct from a call after checking that its result type is PrimType.</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimExpr_html_a9e1ec859f8e97b427a8cab4bd80d46e1"><div class="ttname"><a href="classtvm_1_1PrimExpr.html#a9e1ec859f8e97b427a8cab4bd80d46e1">tvm::PrimExpr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(PrimExpr, TypedExpr&lt; PrimType &gt;, ExprNode)</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimExpr_html_adbafa94c9099bdf4fa142e074c38711f"><div class="ttname"><a href="classtvm_1_1PrimExpr.html#adbafa94c9099bdf4fa142e074c38711f">tvm::PrimExpr::PrimExpr</a></div><div class="ttdeci">PrimExpr(ffi::ObjectPtr&lt; ExprNode &gt; node)</div><div class="ttdef"><b>Definition</b> base_expr.h:434</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimTypeNode_html"><div class="ttname"><a href="classtvm_1_1PrimTypeNode.html">tvm::PrimTypeNode</a></div><div class="ttdoc">Primitive data types used in the low-level IR.</div><div class="ttdef"><b>Definition</b> base_expr.h:122</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimTypeNode_html_a33ddd141d33f41e97a81974e59f56e39"><div class="ttname"><a href="classtvm_1_1PrimTypeNode.html#a33ddd141d33f41e97a81974e59f56e39">tvm::PrimTypeNode::dtype</a></div><div class="ttdeci">DLDataType dtype</div><div class="ttdoc">The raw DLPack dtype represented by this primitive type.</div><div class="ttdef"><b>Definition</b> base_expr.h:127</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimTypeNode_html_a5d5f59db0bd058ab5711fa3fc0cdf533"><div class="ttname"><a href="classtvm_1_1PrimTypeNode.html#a5d5f59db0bd058ab5711fa3fc0cdf533">tvm::PrimTypeNode::TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a></div><div class="ttdeci">TVM_FFI_DECLARE_OBJECT_INFO_FINAL(&quot;ir.PrimType&quot;, PrimTypeNode, TypeNode)</div></div>
@@ -700,38 +675,35 @@ $(document).ready(function() { init_codefold(0); });
 <div class="ttc" id="aclasstvm_1_1Type_html_a13b41c597288962b84de7f56474826d1"><div class="ttname"><a href="classtvm_1_1Type.html#a13b41c597288962b84de7f56474826d1">tvm::Type::Missing</a></div><div class="ttdeci">static Type Missing()</div><div class="ttdoc">Sentinel for a type that has not been populated yet.</div></div>
 <div class="ttc" id="aclasstvm_1_1Type_html_a72af00ddec758c4ae997262d73ddf66c"><div class="ttname"><a href="classtvm_1_1Type.html#a72af00ddec758c4ae997262d73ddf66c">tvm::Type::IsMissing</a></div><div class="ttdeci">bool IsMissing() const</div></div>
 <div class="ttc" id="aclasstvm_1_1Type_html_ada76bb43bdaa718bcff5c1f6337d4984"><div class="ttname"><a href="classtvm_1_1Type.html#ada76bb43bdaa718bcff5c1f6337d4984">tvm::Type::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(Type, ffi::ObjectRef, TypeNode)</div></div>
-<div class="ttc" id="aclasstvm_1_1TypedExpr_html"><div class="ttname"><a href="classtvm_1_1TypedExpr.html">tvm::TypedExpr</a></div><div class="ttdoc">Typed reference/view over an expression whose result type is a specific Type subtype.</div><div class="ttdef"><b>Definition</b> base_expr.h:386</div></div>
-<div class="ttc" id="aclasstvm_1_1TypedExpr_html_a699c3725d3b3cb02b7363cab5cc68914"><div class="ttname"><a href="classtvm_1_1TypedExpr.html#a699c3725d3b3cb02b7363cab5cc68914">tvm::TypedExpr::_type_container_is_exact</a></div><div class="ttdeci">static constexpr bool _type_container_is_exact</div><div class="ttdef"><b>Definition</b> base_expr.h:400</div></div>
-<div class="ttc" id="aclasstvm_1_1TypedExpr_html_a7d83b1f31a1cc6f0774df309e207e678"><div class="ttname"><a href="classtvm_1_1TypedExpr.html#a7d83b1f31a1cc6f0774df309e207e678">tvm::TypedExpr::ty</a></div><div class="ttdeci">ExpectedType ty() const</div><div class="ttdef"><b>Definition</b> base_expr.h:389</div></div>
-<div class="ttc" id="aclasstvm_1_1TypedExpr_html_aa985a34fd559ddc4bdc128f4fcd9d9c9"><div class="ttname"><a href="classtvm_1_1TypedExpr.html#aa985a34fd559ddc4bdc128f4fcd9d9c9">tvm::TypedExpr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(TypedExpr, Expr, ExprNode)</div></div>
-<div class="ttc" id="aclasstvm_1_1TypedExpr_html_aba1d53d5f3708c2e41104da7b3c3a5ff"><div class="ttname"><a href="classtvm_1_1TypedExpr.html#aba1d53d5f3708c2e41104da7b3c3a5ff">tvm::TypedExpr::TypedExpr</a></div><div class="ttdeci">TypedExpr(ffi::ObjectPtr&lt; ExprNode &gt; node)</div><div class="ttdef"><b>Definition</b> base_expr.h:397</div></div>
-<div class="ttc" id="anamespacetvm_1_1ffi_html_a2a487df61f267ffa50e8ed5e6e00323a"><div class="ttname"><a href="namespacetvm_1_1ffi.html#a2a487df61f267ffa50e8ed5e6e00323a">tvm::ffi::use_default_type_traits_v&lt; Expr &gt;</a></div><div class="ttdeci">constexpr bool use_default_type_traits_v&lt; Expr &gt;</div><div class="ttdef"><b>Definition</b> base_expr.h:581</div></div>
-<div class="ttc" id="anamespacetvm_1_1ffi_html_a3953ced274a99f70b1ab2cd282f266e2"><div class="ttname"><a href="namespacetvm_1_1ffi.html#a3953ced274a99f70b1ab2cd282f266e2">tvm::ffi::use_default_type_traits_v&lt; PrimExpr &gt;</a></div><div class="ttdeci">constexpr bool use_default_type_traits_v&lt; PrimExpr &gt;</div><div class="ttdef"><b>Definition</b> base_expr.h:519</div></div>
-<div class="ttc" id="anamespacetvm_1_1ffi_html_a7ae7c1d7c3b3ff8dca4f3397891b2671"><div class="ttname"><a href="namespacetvm_1_1ffi.html#a7ae7c1d7c3b3ff8dca4f3397891b2671">tvm::ffi::use_default_type_traits_v&lt; IntExpr &gt;</a></div><div class="ttdeci">constexpr bool use_default_type_traits_v&lt; IntExpr &gt;</div><div class="ttdef"><b>Definition</b> base_expr.h:554</div></div>
-<div class="ttc" id="anamespacetvm_1_1ffi_html_a919f86f3cbe6b3aeae34c3a3bafe98a4"><div class="ttname"><a href="namespacetvm_1_1ffi.html#a919f86f3cbe6b3aeae34c3a3bafe98a4">tvm::ffi::use_default_type_traits_v&lt; PrimType &gt;</a></div><div class="ttdeci">constexpr bool use_default_type_traits_v&lt; PrimType &gt;</div><div class="ttdef"><b>Definition</b> base_expr.h:476</div></div>
+<div class="ttc" id="aclasstvm_1_1TypedExpr_html"><div class="ttname"><a href="classtvm_1_1TypedExpr.html">tvm::TypedExpr</a></div><div class="ttdoc">Typed reference/view over an expression whose result type is a specific Type subtype.</div><div class="ttdef"><b>Definition</b> base_expr.h:380</div></div>
+<div class="ttc" id="aclasstvm_1_1TypedExpr_html_a699c3725d3b3cb02b7363cab5cc68914"><div class="ttname"><a href="classtvm_1_1TypedExpr.html#a699c3725d3b3cb02b7363cab5cc68914">tvm::TypedExpr::_type_container_is_exact</a></div><div class="ttdeci">static constexpr bool _type_container_is_exact</div><div class="ttdef"><b>Definition</b> base_expr.h:392</div></div>
+<div class="ttc" id="aclasstvm_1_1TypedExpr_html_a7d83b1f31a1cc6f0774df309e207e678"><div class="ttname"><a href="classtvm_1_1TypedExpr.html#a7d83b1f31a1cc6f0774df309e207e678">tvm::TypedExpr::ty</a></div><div class="ttdeci">ExpectedType ty() const</div><div class="ttdef"><b>Definition</b> base_expr.h:383</div></div>
+<div class="ttc" id="aclasstvm_1_1TypedExpr_html_aef373abb5a1725e75779715bfc590d3b"><div class="ttname"><a href="classtvm_1_1TypedExpr.html#aef373abb5a1725e75779715bfc590d3b">tvm::TypedExpr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE(TypedExpr, Expr, ExprNode)</div></div>
+<div class="ttc" id="anamespacetvm_1_1ffi_html_a2a487df61f267ffa50e8ed5e6e00323a"><div class="ttname"><a href="namespacetvm_1_1ffi.html#a2a487df61f267ffa50e8ed5e6e00323a">tvm::ffi::use_default_type_traits_v&lt; Expr &gt;</a></div><div class="ttdeci">constexpr bool use_default_type_traits_v&lt; Expr &gt;</div><div class="ttdef"><b>Definition</b> base_expr.h:563</div></div>
+<div class="ttc" id="anamespacetvm_1_1ffi_html_a3953ced274a99f70b1ab2cd282f266e2"><div class="ttname"><a href="namespacetvm_1_1ffi.html#a3953ced274a99f70b1ab2cd282f266e2">tvm::ffi::use_default_type_traits_v&lt; PrimExpr &gt;</a></div><div class="ttdeci">constexpr bool use_default_type_traits_v&lt; PrimExpr &gt;</div><div class="ttdef"><b>Definition</b> base_expr.h:509</div></div>
+<div class="ttc" id="anamespacetvm_1_1ffi_html_a7ae7c1d7c3b3ff8dca4f3397891b2671"><div class="ttname"><a href="namespacetvm_1_1ffi.html#a7ae7c1d7c3b3ff8dca4f3397891b2671">tvm::ffi::use_default_type_traits_v&lt; IntExpr &gt;</a></div><div class="ttdeci">constexpr bool use_default_type_traits_v&lt; IntExpr &gt;</div><div class="ttdef"><b>Definition</b> base_expr.h:536</div></div>
+<div class="ttc" id="anamespacetvm_1_1ffi_html_a919f86f3cbe6b3aeae34c3a3bafe98a4"><div class="ttname"><a href="namespacetvm_1_1ffi.html#a919f86f3cbe6b3aeae34c3a3bafe98a4">tvm::ffi::use_default_type_traits_v&lt; PrimType &gt;</a></div><div class="ttdeci">constexpr bool use_default_type_traits_v&lt; PrimType &gt;</div><div class="ttdef"><b>Definition</b> base_expr.h:466</div></div>
 <div class="ttc" id="anamespacetvm_html"><div class="ttname"><a href="namespacetvm.html">tvm</a></div><div class="ttdoc">An object that builds and maintains block scope and StmtSref mapping for Dependence analysis.</div><div class="ttdef"><b>Definition</b> attrs.h:44</div></div>
 <div class="ttc" id="anamespacetvm_html_a56fac2bf30a61d8dd727f7b1956dd0db"><div class="ttname"><a href="namespacetvm.html#a56fac2bf30a61d8dd727f7b1956dd0db">tvm::operator!=</a></div><div class="ttdeci">bool operator!=(const PrimType &amp;lhs, const PrimType &amp;rhs)</div><div class="ttdef"><b>Definition</b> base_expr.h:297</div></div>
 <div class="ttc" id="anamespacetvm_html_ad7c45c38af02ce88083d976f9be743b4"><div class="ttname"><a href="namespacetvm.html#ad7c45c38af02ce88083d976f9be743b4">tvm::operator==</a></div><div class="ttdeci">bool operator==(const PrimType &amp;lhs, const PrimType &amp;rhs)</div><div class="ttdef"><b>Definition</b> base_expr.h:293</div></div>
 <div class="ttc" id="asource__map_8h_html"><div class="ttname"><a href="source__map_8h.html">source_map.h</a></div><div class="ttdoc">A map from source names to source code.</div></div>
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4_html_a3ac03c8423e9d3ac76c7f81b80623eb9"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html#a3ac03c8423e9d3ac76c7f81b80623eb9">tvm::ffi::TypeTraits&lt; Expr &gt;::ConvertFallbackValue</a></div><div class="ttdeci">static TVM_FFI_INLINE Expr ConvertFallbackValue(PrimExpr value)</div><div class="ttdef"><b>Definition</b> base_expr.h:587</div></div>
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4_html_a3ac03c8423e9d3ac76c7f81b80623eb9"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html#a3ac03c8423e9d3ac76c7f81b80623eb9">tvm::ffi::TypeTraits&lt; Expr &gt;::ConvertFallbackValue</a></div><div class="ttdeci">static TVM_FFI_INLINE Expr ConvertFallbackValue(PrimExpr value)</div><div class="ttdef"><b>Definition</b> base_expr.h:569</div></div>
 <div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4_html_ab718a7d6345028769e8bfb6145c5bda7"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html#ab718a7d6345028769e8bfb6145c5bda7">tvm::ffi::TypeTraits&lt; Expr &gt;::ConvertFallbackValue</a></div><div class="ttdeci">static Expr ConvertFallbackValue(ffi::String value)</div></div>
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4_html_a04e5c69ff8fe02aeae0407d31441da67"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#a04e5c69ff8fe02aeae0407d31441da67">tvm::ffi::TypeTraits&lt; IntExpr &gt;::ConvertFallbackValue</a></div><div class="ttdeci">static TVM_FFI_INLINE IntExpr ConvertFallbackValue(int64_t value)</div><div class="ttdef"><b>Definition</b> base_expr.h:569</div></div>
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4_html_a4b1cd65d933fe3c22a18efc33f3af1e9"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#a4b1cd65d933fe3c22a18efc33f3af1e9">tvm::ffi::TypeTraits&lt; IntExpr &gt;::GetMismatchTypeInfo</a></div><div class="ttdeci">static TVM_FFI_INLINE std::string GetMismatchTypeInfo(const TVMFFIAny *src)</div><div class="ttdef"><b>Definition</b> base_expr.h:575</div></div>
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4_html_a67e5169848329a8a241096f9929a1cef"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#a67e5169848329a8a241096f9929a1cef">tvm::ffi::TypeTraits&lt; IntExpr &gt;::TypeStr</a></div><div class="ttdeci">static TVM_FFI_INLINE std::string TypeStr()</div><div class="ttdef"><b>Definition</b> base_expr.h:573</div></div>
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4_html_ad48b9a72953c9677b57a0965ecf99397"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#ad48b9a72953c9677b57a0965ecf99397">tvm::ffi::TypeTraits&lt; IntExpr &gt;::Base</a></div><div class="ttdeci">ObjectRefWithFallbackTraitsBase&lt; IntExpr, int64_t &gt; Base</div><div class="ttdef"><b>Definition</b> base_expr.h:558</div></div>
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4_html_aeb8d6e06d06899ca45692b2234113068"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#aeb8d6e06d06899ca45692b2234113068">tvm::ffi::TypeTraits&lt; IntExpr &gt;::CheckAnyStrict</a></div><div class="ttdeci">static TVM_FFI_INLINE bool CheckAnyStrict(const TVMFFIAny *src)</div><div class="ttdef"><b>Definition</b> base_expr.h:560</div></div>
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4_html_a1065f2559ccded18e91419baf08390df"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a1065f2559ccded18e91419baf08390df">tvm::ffi::TypeTraits&lt; PrimExpr &gt;::GetMismatchTypeInfo</a></div><div class="ttdeci">static TVM_FFI_INLINE std::string GetMismatchTypeInfo(const TVMFFIAny *src)</div><div class="ttdef"><b>Definition</b> base_expr.h:541</div></div>
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4_html_a37db92b1772374171d83184bf87caebc"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a37db92b1772374171d83184bf87caebc">tvm::ffi::TypeTraits&lt; PrimExpr &gt;::CheckAnyStrict</a></div><div class="ttdeci">static TVM_FFI_INLINE bool CheckAnyStrict(const TVMFFIAny *src)</div><div class="ttdef"><b>Definition</b> base_expr.h:528</div></div>
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4_html_a04e5c69ff8fe02aeae0407d31441da67"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#a04e5c69ff8fe02aeae0407d31441da67">tvm::ffi::TypeTraits&lt; IntExpr &gt;::ConvertFallbackValue</a></div><div class="ttdeci">static TVM_FFI_INLINE IntExpr ConvertFallbackValue(int64_t value)</div><div class="ttdef"><b>Definition</b> base_expr.h:551</div></div>
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4_html_a4b1cd65d933fe3c22a18efc33f3af1e9"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#a4b1cd65d933fe3c22a18efc33f3af1e9">tvm::ffi::TypeTraits&lt; IntExpr &gt;::GetMismatchTypeInfo</a></div><div class="ttdeci">static TVM_FFI_INLINE std::string GetMismatchTypeInfo(const TVMFFIAny *src)</div><div class="ttdef"><b>Definition</b> base_expr.h:557</div></div>
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4_html_a67e5169848329a8a241096f9929a1cef"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#a67e5169848329a8a241096f9929a1cef">tvm::ffi::TypeTraits&lt; IntExpr &gt;::TypeStr</a></div><div class="ttdeci">static TVM_FFI_INLINE std::string TypeStr()</div><div class="ttdef"><b>Definition</b> base_expr.h:555</div></div>
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4_html_ad48b9a72953c9677b57a0965ecf99397"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#ad48b9a72953c9677b57a0965ecf99397">tvm::ffi::TypeTraits&lt; IntExpr &gt;::Base</a></div><div class="ttdeci">ObjectRefWithFallbackTraitsBase&lt; IntExpr, int64_t &gt; Base</div><div class="ttdef"><b>Definition</b> base_expr.h:540</div></div>
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4_html_aeb8d6e06d06899ca45692b2234113068"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#aeb8d6e06d06899ca45692b2234113068">tvm::ffi::TypeTraits&lt; IntExpr &gt;::CheckAnyStrict</a></div><div class="ttdeci">static TVM_FFI_INLINE bool CheckAnyStrict(const TVMFFIAny *src)</div><div class="ttdef"><b>Definition</b> base_expr.h:542</div></div>
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4_html_a1065f2559ccded18e91419baf08390df"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a1065f2559ccded18e91419baf08390df">tvm::ffi::TypeTraits&lt; PrimExpr &gt;::GetMismatchTypeInfo</a></div><div class="ttdeci">static TVM_FFI_INLINE std::string GetMismatchTypeInfo(const TVMFFIAny *src)</div><div class="ttdef"><b>Definition</b> base_expr.h:523</div></div>
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4_html_a37db92b1772374171d83184bf87caebc"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a37db92b1772374171d83184bf87caebc">tvm::ffi::TypeTraits&lt; PrimExpr &gt;::CheckAnyStrict</a></div><div class="ttdeci">static TVM_FFI_INLINE bool CheckAnyStrict(const TVMFFIAny *src)</div><div class="ttdef"><b>Definition</b> base_expr.h:516</div></div>
 <div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4_html_a39a8f422a13c06451ce2fa1c6b7733a2"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a39a8f422a13c06451ce2fa1c6b7733a2">tvm::ffi::TypeTraits&lt; PrimExpr &gt;::ConvertFallbackValue</a></div><div class="ttdeci">static PrimExpr ConvertFallbackValue(int64_t value)</div></div>
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4_html_a8a9804726d037144ce7183a05739d3ca"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a8a9804726d037144ce7183a05739d3ca">tvm::ffi::TypeTraits&lt; PrimExpr &gt;::ConvertFallbackValue</a></div><div class="ttdeci">static TVM_FFI_INLINE PrimExpr ConvertFallbackValue(PrimExprConvertible value)</div><div class="ttdef"><b>Definition</b> base_expr.h:548</div></div>
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4_html_a8a9804726d037144ce7183a05739d3ca"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a8a9804726d037144ce7183a05739d3ca">tvm::ffi::TypeTraits&lt; PrimExpr &gt;::ConvertFallbackValue</a></div><div class="ttdeci">static TVM_FFI_INLINE PrimExpr ConvertFallbackValue(PrimExprConvertible value)</div><div class="ttdef"><b>Definition</b> base_expr.h:530</div></div>
 <div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4_html_a91a59fcdc9e5602d4b296cc7533525d5"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a91a59fcdc9e5602d4b296cc7533525d5">tvm::ffi::TypeTraits&lt; PrimExpr &gt;::ConvertFallbackValue</a></div><div class="ttdeci">static PrimExpr ConvertFallbackValue(StrictBool value)</div></div>
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4_html_a9472e92197fd2c19b4c58dc9091fb1e1"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a9472e92197fd2c19b4c58dc9091fb1e1">tvm::ffi::TypeTraits&lt; PrimExpr &gt;::TypeStr</a></div><div class="ttdeci">static TVM_FFI_INLINE std::string TypeStr()</div><div class="ttdef"><b>Definition</b> base_expr.h:539</div></div>
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4_html_a9736ff64225b3095b26d178904d1fb86"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a9736ff64225b3095b26d178904d1fb86">tvm::ffi::TypeTraits&lt; PrimExpr &gt;::Base</a></div><div class="ttdeci">ObjectRefWithFallbackTraitsBase&lt; PrimExpr, StrictBool, int64_t, double, PrimExprConvertible &gt; Base</div><div class="ttdef"><b>Definition</b> base_expr.h:527</div></div>
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4_html_a9472e92197fd2c19b4c58dc9091fb1e1"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a9472e92197fd2c19b4c58dc9091fb1e1">tvm::ffi::TypeTraits&lt; PrimExpr &gt;::TypeStr</a></div><div class="ttdeci">static TVM_FFI_INLINE std::string TypeStr()</div><div class="ttdef"><b>Definition</b> base_expr.h:521</div></div>
 <div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4_html_ac92ddf3ce25ca16a0b9c8030121aaaa3"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#ac92ddf3ce25ca16a0b9c8030121aaaa3">tvm::ffi::TypeTraits&lt; PrimExpr &gt;::ConvertFallbackValue</a></div><div class="ttdeci">static PrimExpr ConvertFallbackValue(double value)</div></div>
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4_html_ad41ff91a2dd0e4f3bef192c8919e6867"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#ad41ff91a2dd0e4f3bef192c8919e6867">tvm::ffi::TypeTraits&lt; PrimExpr &gt;::TryCastFromAnyView</a></div><div class="ttdeci">static TVM_FFI_INLINE std::optional&lt; PrimExpr &gt; TryCastFromAnyView(const TVMFFIAny *src)</div><div class="ttdef"><b>Definition</b> base_expr.h:533</div></div>
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimType_01_4_html_a9b9a904d5c21d5bb330111cb80ec3570"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimType_01_4.html#a9b9a904d5c21d5bb330111cb80ec3570">tvm::ffi::TypeTraits&lt; PrimType &gt;::ConvertFallbackValue</a></div><div class="ttdeci">static TVM_FFI_INLINE PrimType ConvertFallbackValue(DLDataType dtype)</div><div class="ttdef"><b>Definition</b> base_expr.h:480</div></div>
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4_html_a91f94dcfec7dbd7024c4912234d3f445"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a91f94dcfec7dbd7024c4912234d3f445">tvm::ffi::TypeTraits&lt; TypedExpr&lt; ExpectedType &gt; &gt;::CheckAnyStrict</a></div><div class="ttdeci">static TVM_FFI_INLINE bool CheckAnyStrict(const TVMFFIAny *src)</div><div class="ttdef"><b>Definition</b> base [...]
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4_html_a920c0886f5fd3421ca55c62fa3a9faf0"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a920c0886f5fd3421ca55c62fa3a9faf0">tvm::ffi::TypeTraits&lt; TypedExpr&lt; ExpectedType &gt; &gt;::GetMismatchTypeInfo</a></div><div class="ttdeci">static TVM_FFI_INLINE std::string GetMismatchTypeInfo(const TVMFFIAny *src)</div><div class="ttdef"><b>De [...]
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimType_01_4_html_a9b9a904d5c21d5bb330111cb80ec3570"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimType_01_4.html#a9b9a904d5c21d5bb330111cb80ec3570">tvm::ffi::TypeTraits&lt; PrimType &gt;::ConvertFallbackValue</a></div><div class="ttdeci">static TVM_FFI_INLINE PrimType ConvertFallbackValue(DLDataType dtype)</div><div class="ttdef"><b>Definition</b> base_expr.h:470</div></div>
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4_html_a91f94dcfec7dbd7024c4912234d3f445"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a91f94dcfec7dbd7024c4912234d3f445">tvm::ffi::TypeTraits&lt; TypedExpr&lt; ExpectedType &gt; &gt;::CheckAnyStrict</a></div><div class="ttdeci">static TVM_FFI_INLINE bool CheckAnyStrict(const TVMFFIAny *src)</div><div class="ttdef"><b>Definition</b> base [...]
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4_html_a920c0886f5fd3421ca55c62fa3a9faf0"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a920c0886f5fd3421ca55c62fa3a9faf0">tvm::ffi::TypeTraits&lt; TypedExpr&lt; ExpectedType &gt; &gt;::GetMismatchTypeInfo</a></div><div class="ttdeci">static TVM_FFI_INLINE std::string GetMismatchTypeInfo(const TVMFFIAny *src)</div><div class="ttdef"><b>De [...]
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/binding__rewrite_8h_source.html b/docs/reference/api/doxygen/binding__rewrite_8h_source.html
index e70c7e6dc4a..4a76a8cae58 100644
--- a/docs/reference/api/doxygen/binding__rewrite_8h_source.html
+++ b/docs/reference/api/doxygen/binding__rewrite_8h_source.html
@@ -190,8 +190,8 @@ $(document).ready(function() { init_codefold(0); });
 <div class="ttc" id="aclasstvm_1_1Expr_html"><div class="ttname"><a href="classtvm_1_1Expr.html">tvm::Expr</a></div><div class="ttdoc">Managed reference to ExprNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:338</div></div>
 <div class="ttc" id="aclasstvm_1_1IRModule_html"><div class="ttname"><a href="classtvm_1_1IRModule.html">tvm::IRModule</a></div><div class="ttdoc">Managed reference class to IRModuleNode.</div><div class="ttdef"><b>Definition</b> module.h:255</div></div>
 <div class="ttc" id="aclasstvm_1_1UniqueNameSupply_html"><div class="ttname"><a href="classtvm_1_1UniqueNameSupply.html">tvm::UniqueNameSupply</a></div><div class="ttdoc">Managed reference class to UniqueNameSupplyNode.</div><div class="ttdef"><b>Definition</b> unique_name_supply.h:115</div></div>
-<div class="ttc" id="aclasstvm_1_1Var_html"><div class="ttname"><a href="classtvm_1_1Var.html">tvm::Var</a></div><div class="ttdoc">Managed reference to VarNode.</div><div class="ttdef"><b>Definition</b> expr.h:387</div></div>
-<div class="ttc" id="aclasstvm_1_1relax_1_1Binding_html"><div class="ttname"><a href="classtvm_1_1relax_1_1Binding.html">tvm::relax::Binding</a></div><div class="ttdef"><b>Definition</b> expr.h:120</div></div>
+<div class="ttc" id="aclasstvm_1_1Var_html"><div class="ttname"><a href="classtvm_1_1Var.html">tvm::Var</a></div><div class="ttdoc">Managed reference to VarNode.</div><div class="ttdef"><b>Definition</b> expr.h:375</div></div>
+<div class="ttc" id="aclasstvm_1_1relax_1_1Binding_html"><div class="ttname"><a href="classtvm_1_1relax_1_1Binding.html">tvm::relax::Binding</a></div><div class="ttdef"><b>Definition</b> expr.h:113</div></div>
 <div class="ttc" id="aclasstvm_1_1relax_1_1DataflowBlockRewriteNode_html"><div class="ttname"><a href="classtvm_1_1relax_1_1DataflowBlockRewriteNode.html">tvm::relax::DataflowBlockRewriteNode</a></div><div class="ttdoc">Statement rewriter for relax.DataflowBlock.</div><div class="ttdef"><b>Definition</b> binding_rewrite.h:42</div></div>
 <div class="ttc" id="aclasstvm_1_1relax_1_1DataflowBlockRewriteNode_html_a0cc3a12b24b1173c6048f4ade3b618cd"><div class="ttname"><a href="classtvm_1_1relax_1_1DataflowBlockRewriteNode.html#a0cc3a12b24b1173c6048f4ade3b618cd">tvm::relax::DataflowBlockRewriteNode::MutatedDataflowBlock</a></div><div class="ttdeci">DataflowBlock MutatedDataflowBlock()</div><div class="ttdoc">The rewritten dataflow block.</div><div class="ttdef"><b>Definition</b> binding_rewrite.h:64</div></div>
 <div class="ttc" id="aclasstvm_1_1relax_1_1DataflowBlockRewriteNode_html_a10748f79386e788d837be44a46b4978d"><div class="ttname"><a href="classtvm_1_1relax_1_1DataflowBlockRewriteNode.html#a10748f79386e788d837be44a46b4978d">tvm::relax::DataflowBlockRewriteNode::Add</a></div><div class="ttdeci">void Add(ffi::String var_name, Expr expr, bool is_dfvar=false)</div><div class="ttdoc">Insert an expression as VarBinding with variable name.</div><div class="ttdef"><b>Definition</b> binding_rewrit [...]
@@ -213,11 +213,11 @@ $(document).ready(function() { init_codefold(0); });
 <div class="ttc" id="aclasstvm_1_1relax_1_1DataflowBlockRewrite_html_a3b85e81acf2f9b8cbdd118f10b295dfa"><div class="ttname"><a href="classtvm_1_1relax_1_1DataflowBlockRewrite.html#a3b85e81acf2f9b8cbdd118f10b295dfa">tvm::relax::DataflowBlockRewrite::operator-&gt;</a></div><div class="ttdeci">DataflowBlockRewriteNode * operator-&gt;()</div><div class="ttdoc">mutable accessor.</div><div class="ttdef"><b>Definition</b> binding_rewrite.h:105</div></div>
 <div class="ttc" id="aclasstvm_1_1relax_1_1DataflowBlockRewrite_html_af7a983dfa2651d574b5a14209b26cdc5"><div class="ttname"><a href="classtvm_1_1relax_1_1DataflowBlockRewrite.html#af7a983dfa2651d574b5a14209b26cdc5">tvm::relax::DataflowBlockRewrite::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE(DataflowBlockRewrite, ffi::ObjectRef, DataflowBlockRewriteNode)</div></div>
 <div class="ttc" id="aclasstvm_1_1relax_1_1DataflowBlockRewrite_html_afacb6ae055a52590dac89c349e75f643"><div class="ttname"><a href="classtvm_1_1relax_1_1DataflowBlockRewrite.html#afacb6ae055a52590dac89c349e75f643">tvm::relax::DataflowBlockRewrite::DataflowBlockRewrite</a></div><div class="ttdeci">DataflowBlockRewrite(DataflowBlock dfb, Function root_fn)</div></div>
-<div class="ttc" id="aclasstvm_1_1relax_1_1DataflowBlock_html"><div class="ttname"><a href="classtvm_1_1relax_1_1DataflowBlock.html">tvm::relax::DataflowBlock</a></div><div class="ttdef"><b>Definition</b> expr.h:244</div></div>
-<div class="ttc" id="aclasstvm_1_1relax_1_1DataflowVar_html"><div class="ttname"><a href="classtvm_1_1relax_1_1DataflowVar.html">tvm::relax::DataflowVar</a></div><div class="ttdef"><b>Definition</b> expr.h:82</div></div>
-<div class="ttc" id="aclasstvm_1_1relax_1_1FunctionNode_html"><div class="ttname"><a href="classtvm_1_1relax_1_1FunctionNode.html">tvm::relax::FunctionNode</a></div><div class="ttdoc">A Relax function.</div><div class="ttdef"><b>Definition</b> expr.h:380</div></div>
-<div class="ttc" id="aclasstvm_1_1relax_1_1Function_html"><div class="ttname"><a href="classtvm_1_1relax_1_1Function.html">tvm::relax::Function</a></div><div class="ttdef"><b>Definition</b> expr.h:407</div></div>
-<div class="ttc" id="aclasstvm_1_1relax_1_1VarBinding_html"><div class="ttname"><a href="classtvm_1_1relax_1_1VarBinding.html">tvm::relax::VarBinding</a></div><div class="ttdef"><b>Definition</b> expr.h:202</div></div>
+<div class="ttc" id="aclasstvm_1_1relax_1_1DataflowBlock_html"><div class="ttname"><a href="classtvm_1_1relax_1_1DataflowBlock.html">tvm::relax::DataflowBlock</a></div><div class="ttdef"><b>Definition</b> expr.h:227</div></div>
+<div class="ttc" id="aclasstvm_1_1relax_1_1DataflowVar_html"><div class="ttname"><a href="classtvm_1_1relax_1_1DataflowVar.html">tvm::relax::DataflowVar</a></div><div class="ttdef"><b>Definition</b> expr.h:80</div></div>
+<div class="ttc" id="aclasstvm_1_1relax_1_1FunctionNode_html"><div class="ttname"><a href="classtvm_1_1relax_1_1FunctionNode.html">tvm::relax::FunctionNode</a></div><div class="ttdoc">A Relax function.</div><div class="ttdef"><b>Definition</b> expr.h:349</div></div>
+<div class="ttc" id="aclasstvm_1_1relax_1_1Function_html"><div class="ttname"><a href="classtvm_1_1relax_1_1Function.html">tvm::relax::Function</a></div><div class="ttdef"><b>Definition</b> expr.h:373</div></div>
+<div class="ttc" id="aclasstvm_1_1relax_1_1VarBinding_html"><div class="ttname"><a href="classtvm_1_1relax_1_1VarBinding.html">tvm::relax::VarBinding</a></div><div class="ttdef"><b>Definition</b> expr.h:185</div></div>
 <div class="ttc" id="anamespacetvm_1_1relax_html_a98ceecc42432e50a5dd8413a3f481050"><div class="ttname"><a href="namespacetvm_1_1relax.html#a98ceecc42432e50a5dd8413a3f481050">tvm::relax::GetType</a></div><div class="ttdeci">Type GetType(const Expr &amp;expr)</div><div class="ttdoc">Get the underlying Relax type of expr.</div><div class="ttdef"><b>Definition</b> type.h:380</div></div>
 <div class="ttc" id="anamespacetvm_html"><div class="ttname"><a href="namespacetvm.html">tvm</a></div><div class="ttdoc">An object that builds and maintains block scope and StmtSref mapping for Dependence analysis.</div><div class="ttdef"><b>Definition</b> attrs.h:44</div></div>
 <div class="ttc" id="arelax_2analysis_8h_html"><div class="ttname"><a href="relax_2analysis_8h.html">analysis.h</a></div><div class="ttdoc">The set of Relax specific analysis on IR.</div></div>
diff --git a/docs/reference/api/doxygen/block__builder_8h_source.html b/docs/reference/api/doxygen/block__builder_8h_source.html
index 3e52f1ef997..89f8ab73383 100644
--- a/docs/reference/api/doxygen/block__builder_8h_source.html
+++ b/docs/reference/api/doxygen/block__builder_8h_source.html
@@ -191,13 +191,13 @@ $(document).ready(function() { init_codefold(0); });
 <div class="ttc" id="aanalyzer_8h_html"><div class="ttname"><a href="analyzer_8h.html">analyzer.h</a></div><div class="ttdoc">Algebra expression simplifications.</div></div>
 <div class="ttc" id="aclasstvm_1_1BaseFunc_html"><div class="ttname"><a href="classtvm_1_1BaseFunc.html">tvm::BaseFunc</a></div><div class="ttdoc">Managed reference to BaseFuncNode.</div><div class="ttdef"><b>Definition</b> function.h:250</div></div>
 <div class="ttc" id="aclasstvm_1_1Expr_html"><div class="ttname"><a href="classtvm_1_1Expr.html">tvm::Expr</a></div><div class="ttdoc">Managed reference to ExprNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:338</div></div>
-<div class="ttc" id="aclasstvm_1_1GlobalVar_html"><div class="ttname"><a href="classtvm_1_1GlobalVar.html">tvm::GlobalVar</a></div><div class="ttdoc">Managed reference to GlobalVarNode.</div><div class="ttdef"><b>Definition</b> expr.h:482</div></div>
+<div class="ttc" id="aclasstvm_1_1GlobalVar_html"><div class="ttname"><a href="classtvm_1_1GlobalVar.html">tvm::GlobalVar</a></div><div class="ttdoc">Managed reference to GlobalVarNode.</div><div class="ttdef"><b>Definition</b> expr.h:466</div></div>
 <div class="ttc" id="aclasstvm_1_1IRModule_html"><div class="ttname"><a href="classtvm_1_1IRModule.html">tvm::IRModule</a></div><div class="ttdoc">Managed reference class to IRModuleNode.</div><div class="ttdef"><b>Definition</b> module.h:255</div></div>
 <div class="ttc" id="aclasstvm_1_1Type_html"><div class="ttname"><a href="classtvm_1_1Type.html">tvm::Type</a></div><div class="ttdoc">Managed reference to TypeNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:80</div></div>
 <div class="ttc" id="aclasstvm_1_1UniqueNameSupply_html"><div class="ttname"><a href="classtvm_1_1UniqueNameSupply.html">tvm::UniqueNameSupply</a></div><div class="ttdoc">Managed reference class to UniqueNameSupplyNode.</div><div class="ttdef"><b>Definition</b> unique_name_supply.h:115</div></div>
-<div class="ttc" id="aclasstvm_1_1Var_html"><div class="ttname"><a href="classtvm_1_1Var.html">tvm::Var</a></div><div class="ttdoc">Managed reference to VarNode.</div><div class="ttdef"><b>Definition</b> expr.h:387</div></div>
-<div class="ttc" id="aclasstvm_1_1relax_1_1BindingBlock_html"><div class="ttname"><a href="classtvm_1_1relax_1_1BindingBlock.html">tvm::relax::BindingBlock</a></div><div class="ttdef"><b>Definition</b> expr.h:226</div></div>
-<div class="ttc" id="aclasstvm_1_1relax_1_1Binding_html"><div class="ttname"><a href="classtvm_1_1relax_1_1Binding.html">tvm::relax::Binding</a></div><div class="ttdef"><b>Definition</b> expr.h:120</div></div>
+<div class="ttc" id="aclasstvm_1_1Var_html"><div class="ttname"><a href="classtvm_1_1Var.html">tvm::Var</a></div><div class="ttdoc">Managed reference to VarNode.</div><div class="ttdef"><b>Definition</b> expr.h:375</div></div>
+<div class="ttc" id="aclasstvm_1_1relax_1_1BindingBlock_html"><div class="ttname"><a href="classtvm_1_1relax_1_1BindingBlock.html">tvm::relax::BindingBlock</a></div><div class="ttdef"><b>Definition</b> expr.h:209</div></div>
+<div class="ttc" id="aclasstvm_1_1relax_1_1Binding_html"><div class="ttname"><a href="classtvm_1_1relax_1_1Binding.html">tvm::relax::Binding</a></div><div class="ttdef"><b>Definition</b> expr.h:113</div></div>
 <div class="ttc" id="aclasstvm_1_1relax_1_1BlockBuilderNode_html"><div class="ttname"><a href="classtvm_1_1relax_1_1BlockBuilderNode.html">tvm::relax::BlockBuilderNode</a></div><div class="ttdoc">A builder to build Relax binding blocks.</div><div class="ttdef"><b>Definition</b> block_builder.h:65</div></div>
 <div class="ttc" id="aclasstvm_1_1relax_1_1BlockBuilderNode_html_a1676f6889de59fd2d316eef32ab80d9a"><div class="ttname"><a href="classtvm_1_1relax_1_1BlockBuilderNode.html#a1676f6889de59fd2d316eef32ab80d9a">tvm::relax::BlockBuilderNode::BeginDataflowBlock</a></div><div class="ttdeci">virtual void BeginDataflowBlock()=0</div><div class="ttdoc">Begin to build a DataflowBlock.</div></div>
 <div class="ttc" id="aclasstvm_1_1relax_1_1BlockBuilderNode_html_a171f5fefcf9b22e1ae14ecc307ed4862"><div class="ttname"><a href="classtvm_1_1relax_1_1BlockBuilderNode.html#a171f5fefcf9b22e1ae14ecc307ed4862">tvm::relax::BlockBuilderNode::GetContextIRModule</a></div><div class="ttdeci">virtual IRModule GetContextIRModule() const =0</div><div class="ttdoc">Get the context IRModule in this builder.</div></div>
diff --git a/docs/reference/api/doxygen/bnn_8h_source.html b/docs/reference/api/doxygen/bnn_8h_source.html
index 081ba51b44e..d896cb8149b 100644
--- a/docs/reference/api/doxygen/bnn_8h_source.html
+++ b/docs/reference/api/doxygen/bnn_8h_source.html
@@ -191,11 +191,11 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00127" name="l00127"></a><span class="lineno">  127</span>}  <span class="comment">// namespace tvm</span></div>
 <div class="line"><a id="l00128" name="l00128"></a><span class="lineno">  128</span><span class="preprocessor">#endif  </span><span class="comment">// TVM_TOPI_NN_BNN_H_</span></div>
 <div class="ttc" id="aanalyzer_8h_html"><div class="ttname"><a href="analyzer_8h.html">analyzer.h</a></div><div class="ttdoc">Algebra expression simplifications.</div></div>
-<div class="ttc" id="aclasstvm_1_1IntImm_html"><div class="ttname"><a href="classtvm_1_1IntImm.html">tvm::IntImm</a></div><div class="ttdoc">Managed reference class to IntImmNode.</div><div class="ttdef"><b>Definition</b> expr.h:661</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:412</div></div>
+<div class="ttc" id="aclasstvm_1_1IntImm_html"><div class="ttname"><a href="classtvm_1_1IntImm.html">tvm::IntImm</a></div><div class="ttdoc">Managed reference class to IntImmNode.</div><div class="ttdef"><b>Definition</b> expr.h:630</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:404</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimType_html_ae57549a48d3eba299f8f5d873361030a"><div class="ttname"><a href="classtvm_1_1PrimType.html#ae57549a48d3eba299f8f5d873361030a">tvm::PrimType::UInt</a></div><div class="ttdeci">static PrimType UInt(int bits, int lanes=1)</div><div class="ttdoc">Construct an unsigned integer type with fixed lanes.</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimVar_html"><div class="ttname"><a href="classtvm_1_1PrimVar.html">tvm::PrimVar</a></div><div class="ttdoc">Checked scalar view over a VarNode.</div><div class="ttdef"><b>Definition</b> expr.h:414</div></div>
-<div class="ttc" id="aclasstvm_1_1Range_html"><div class="ttname"><a href="classtvm_1_1Range.html">tvm::Range</a></div><div class="ttdoc">Range container</div><div class="ttdef"><b>Definition</b> expr.h:786</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimVar_html"><div class="ttname"><a href="classtvm_1_1PrimVar.html">tvm::PrimVar</a></div><div class="ttdoc">Checked scalar view over a VarNode.</div><div class="ttdef"><b>Definition</b> expr.h:400</div></div>
+<div class="ttc" id="aclasstvm_1_1Range_html"><div class="ttname"><a href="classtvm_1_1Range.html">tvm::Range</a></div><div class="ttdoc">Range container</div><div class="ttdef"><b>Definition</b> expr.h:751</div></div>
 <div class="ttc" id="aclasstvm_1_1sym_1_1Analyzer_html"><div class="ttname"><a href="classtvm_1_1sym_1_1Analyzer.html">tvm::sym::Analyzer</a></div><div class="ttdoc">Managed reference to AnalyzerObj.</div><div class="ttdef"><b>Definition</b> analyzer.h:914</div></div>
 <div class="ttc" id="aclasstvm_1_1te_1_1Tensor_html"><div class="ttname"><a href="classtvm_1_1te_1_1Tensor.html">tvm::te::Tensor</a></div><div class="ttdoc">Tensor structure representing a possible input, or intermediate computation result.</div><div class="ttdef"><b>Definition</b> tensor.h:97</div></div>
 <div class="ttc" id="aconstant__utils_8h_html"><div class="ttname"><a href="constant__utils_8h.html">constant_utils.h</a></div><div class="ttdoc">Utility functions for handling constants in TVM expressions.</div></div>
@@ -208,7 +208,7 @@ $(document).ready(function() { init_codefold(0); });
 <div class="ttc" id="anamespacetvm_1_1topi_1_1nn_html_a08aaeadaa767fa996d2f2e0a7d12c7cd"><div class="ttname"><a href="namespacetvm_1_1topi_1_1nn.html#a08aaeadaa767fa996d2f2e0a7d12c7cd">tvm::topi::nn::binary_dense</a></div><div class="ttdeci">tvm::te::Tensor binary_dense(const tvm::te::Tensor &amp;data, const tvm::te::Tensor &amp;weight)</div><div class="ttdoc">Binary matrix multiplication using xor and bit-count.</div><div class="ttdef"><b>Definition</b> bnn.h:101</div></div>
 <div class="ttc" id="anamespacetvm_1_1topi_1_1nn_html_abaa4e2bba6a3d3db3eaca614fdf5bbea"><div class="ttname"><a href="namespacetvm_1_1topi_1_1nn.html#abaa4e2bba6a3d3db3eaca614fdf5bbea">tvm::topi::nn::binarize_pack</a></div><div class="ttdeci">tvm::te::Tensor binarize_pack(const tvm::te::Tensor &amp;data, int axis, std::string name=&quot;PackedInput&quot;, std::string tag=&quot;binarize_pack&quot;)</div><div class="ttdoc">Binarization and bit-packing along a certain axis.</div><div class= [...]
 <div class="ttc" id="anamespacetvm_1_1topi_html_a0250c4095f19ae8a22ed85bc4ce5a40d"><div class="ttname"><a href="namespacetvm_1_1topi.html#a0250c4095f19ae8a22ed85bc4ce5a40d">tvm::topi::kElementWise</a></div><div class="ttdeci">constexpr auto kElementWise</div><div class="ttdef"><b>Definition</b> tags.h:32</div></div>
-<div class="ttc" id="anamespacetvm_1_1topi_html_adae7dcb7e951109ba72192202d182994"><div class="ttname"><a href="namespacetvm_1_1topi.html#adae7dcb7e951109ba72192202d182994">tvm::topi::matmul</a></div><div class="ttdeci">tvm::te::Tensor matmul(const tvm::te::Tensor &amp;A, const tvm::te::Tensor &amp;B, bool trans_a=false, bool trans_b=false, std::string name=&quot;T_matmul&quot;, std::string tag=kMatMul)</div><div class="ttdoc">Creates an operation that calculates a matrix multiplication  [...]
+<div class="ttc" id="anamespacetvm_1_1topi_html_adae7dcb7e951109ba72192202d182994"><div class="ttname"><a href="namespacetvm_1_1topi.html#adae7dcb7e951109ba72192202d182994">tvm::topi::matmul</a></div><div class="ttdeci">tvm::te::Tensor matmul(const tvm::te::Tensor &amp;A, const tvm::te::Tensor &amp;B, bool trans_a=false, bool trans_b=false, std::string name=&quot;T_matmul&quot;, std::string tag=kMatMul)</div><div class="ttdoc">Creates an operation that calculates a matrix multiplication  [...]
 <div class="ttc" id="anamespacetvm_1_1topi_html_af580cd1bea6e862f41c7fad4c4c7eea3"><div class="ttname"><a href="namespacetvm_1_1topi.html#af580cd1bea6e862f41c7fad4c4c7eea3">tvm::topi::sign</a></div><div class="ttdeci">Tensor sign(const Tensor &amp;x, std::string name=&quot;T_sign&quot;, std::string tag=kElementWise)</div><div class="ttdoc">Returns the sign of the tensor.</div><div class="ttdef"><b>Definition</b> elemwise.h:210</div></div>
 <div class="ttc" id="anamespacetvm_html"><div class="ttname"><a href="namespacetvm.html">tvm</a></div><div class="ttdoc">An object that builds and maintains block scope and StmtSref mapping for Dependence analysis.</div><div class="ttdef"><b>Definition</b> attrs.h:44</div></div>
 <div class="ttc" id="anamespacetvm_html_a8f30aa0685ca52f846843e76a1ad1dc7"><div class="ttname"><a href="namespacetvm.html#a8f30aa0685ca52f846843e76a1ad1dc7">tvm::indexdiv</a></div><div class="ttdeci">PrimExpr indexdiv(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">compute floor(a / b) where a and b are non-negative.</div></div>
diff --git a/docs/reference/api/doxygen/bound_8h_source.html b/docs/reference/api/doxygen/bound_8h_source.html
index c2a93685475..f43f4bc103d 100644
--- a/docs/reference/api/doxygen/bound_8h_source.html
+++ b/docs/reference/api/doxygen/bound_8h_source.html
@@ -120,7 +120,7 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span>}  <span class="comment">// namespace sym</span></div>
 <div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span>}  <span class="comment">// namespace tvm</span></div>
 <div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span><span class="preprocessor">#endif  </span><span class="comment">// TVM_SYM_BOUND_H_</span></div>
-<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:412</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:404</div></div>
 <div class="ttc" id="aclasstvm_1_1sym_1_1IntSet_html"><div class="ttname"><a href="classtvm_1_1sym_1_1IntSet.html">tvm::sym::IntSet</a></div><div class="ttdoc">Managed reference to IntSetNode.</div><div class="ttdef"><b>Definition</b> int_set.h:63</div></div>
 <div class="ttc" id="aint__set_8h_html"><div class="ttname"><a href="int__set_8h.html">int_set.h</a></div><div class="ttdoc">Integer set.</div></div>
 <div class="ttc" id="air_2expr_8h_html"><div class="ttname"><a href="ir_2expr_8h.html">expr.h</a></div><div class="ttdoc">Base expr nodes in TVM.</div></div>
diff --git a/docs/reference/api/doxygen/broadcast_8h.html b/docs/reference/api/doxygen/broadcast_8h.html
index 27b564a3995..b42addf9e79 100644
--- a/docs/reference/api/doxygen/broadcast_8h.html
+++ b/docs/reference/api/doxygen/broadcast_8h.html
@@ -454,7 +454,7 @@ Functions</h2></td></tr>
 <div class="line">        B-&gt;shape, [&amp;](const ::tvm::ffi::Array&lt;::tvm::PrimVar&gt;&amp; i) { return l(A, B(i)); }, name, \</div>
 <div class="line">        tag);                                                                                   \</div>
 <div class="line">  }</div>
-<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:412</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:404</div></div>
 <div class="ttc" id="aclasstvm_1_1te_1_1Tensor_html"><div class="ttname"><a href="classtvm_1_1te_1_1Tensor.html">tvm::te::Tensor</a></div><div class="ttdoc">Tensor structure representing a possible input, or intermediate computation result.</div><div class="ttdef"><b>Definition</b> tensor.h:97</div></div>
 <div class="ttc" id="anamespacetvm_1_1te_html_ad98d13fdbc71aede147f419e218fc680"><div class="ttname"><a href="namespacetvm_1_1te.html#ad98d13fdbc71aede147f419e218fc680">tvm::te::compute</a></div><div class="ttdeci">Tensor compute(ffi::Array&lt; PrimExpr &gt; shape, FCompute fcompute, std::string name=&quot;tensor&quot;, std::string tag=&quot;&quot;, ffi::Map&lt; ffi::String, ffi::Any &gt; attrs={})</div><div class="ttdoc">Construct a new tensor by computing over shape, using the computat [...]
 </div><!-- fragment -->
diff --git a/docs/reference/api/doxygen/bytecode_8h_source.html b/docs/reference/api/doxygen/bytecode_8h_source.html
index 8aa74fafb3f..ff310f30562 100644
--- a/docs/reference/api/doxygen/bytecode_8h_source.html
+++ b/docs/reference/api/doxygen/bytecode_8h_source.html
@@ -223,7 +223,7 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00244" name="l00244"></a><span class="lineno">  244</span>}  <span class="comment">// namespace tvm</span></div>
 <div class="line"><a id="l00245" name="l00245"></a><span class="lineno">  245</span> </div>
 <div class="line"><a id="l00246" name="l00246"></a><span class="lineno">  246</span><span class="preprocessor">#endif  </span><span class="comment">// TVM_RUNTIME_VM_BYTECODE_H_</span></div>
-<div class="ttc" id="aclasstvm_1_1Call_html"><div class="ttname"><a href="classtvm_1_1Call.html">tvm::Call</a></div><div class="ttdoc">Managed reference to CallNode.</div><div class="ttdef"><b>Definition</b> expr.h:532</div></div>
+<div class="ttc" id="aclasstvm_1_1Call_html"><div class="ttname"><a href="classtvm_1_1Call.html">tvm::Call</a></div><div class="ttdoc">Managed reference to CallNode.</div><div class="ttdef"><b>Definition</b> expr.h:511</div></div>
 <div class="ttc" id="aclasstvm_1_1runtime_1_1vm_1_1Instruction_1_1Arg_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1vm_1_1Instruction_1_1Arg.html">tvm::runtime::vm::Instruction::Arg</a></div><div class="ttdoc">The auxiliary data structure for instruction argument.</div><div class="ttdef"><b>Definition</b> bytecode.h:119</div></div>
 <div class="ttc" id="aclasstvm_1_1runtime_1_1vm_1_1Instruction_1_1Arg_html_a3c60a8aefabee0c04cafa08fc2e3c69e"><div class="ttname"><a href="classtvm_1_1runtime_1_1vm_1_1Instruction_1_1Arg.html#a3c60a8aefabee0c04cafa08fc2e3c69e">tvm::runtime::vm::Instruction::Arg::ConstIdx</a></div><div class="ttdeci">static Arg ConstIdx(Index index)</div><div class="ttdoc">construct a ConstIdx arg.</div><div class="ttdef"><b>Definition</b> bytecode.h:139</div></div>
 <div class="ttc" id="aclasstvm_1_1runtime_1_1vm_1_1Instruction_1_1Arg_html_a41891bed1dcc514d68764ece8eb35e4e"><div class="ttname"><a href="classtvm_1_1runtime_1_1vm_1_1Instruction_1_1Arg.html#a41891bed1dcc514d68764ece8eb35e4e">tvm::runtime::vm::Instruction::Arg::FuncIdx</a></div><div class="ttdeci">static Arg FuncIdx(Index index)</div><div class="ttdoc">construct a FuncIdx arg.</div><div class="ttdef"><b>Definition</b> bytecode.h:151</div></div>
diff --git a/docs/reference/api/doxygen/classtvm_1_1BaseFunc-members.html b/docs/reference/api/doxygen/classtvm_1_1BaseFunc-members.html
index 931f9becea8..953411c08e2 100644
--- a/docs/reference/api/doxygen/classtvm_1_1BaseFunc-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1BaseFunc-members.html
@@ -79,13 +79,11 @@ $(function() {
 
 <p>This is the complete list of members for <a class="el" href="classtvm_1_1BaseFunc.html">tvm::BaseFunc</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1BaseFunc.html#a32c091b21fc288c7b7305647ab23df6d">BaseFunc</a>(ffi::ObjectPtr&lt; BaseFuncNode &gt; node)</td><td class="entry"><a class="el" href="classtvm_1_1BaseFunc.html">tvm::BaseFunc</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#aad84c3380b07b63427dda3697a78b269">Expr</a>(ffi::ObjectPtr&lt; ExprNode &gt; node)</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a86bd9da75268e479e3bbe61729dce8ac">operator!=</a>(const Expr &amp;other) const =delete</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#afb14020d9ae652a64a6f15dcba073c0e">operator&lt;</a>(const Expr &amp;other) const =delete</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a637231cfc91838b8f14745ac199b5fbf">operator==</a>(const Expr &amp;other) const =delete</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1BaseFunc.html#a496463fef22ee43ebd9ace59626a0348">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(BaseFunc, Expr, BaseFuncNode)</td><td class="entry"><a class="el" href="classtvm_1_1BaseFunc.html">tvm::BaseFunc</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a26775d381ee6e7c7bb65b8a7320f5b87">tvm::Expr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(Expr, ffi::ObjectRef, ExprNode)</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1BaseFunc.html#a49ab7504f3e6237d5227b26c687b2f34">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(BaseFunc, Expr, BaseFuncNode)</td><td class="entry"><a class="el" href="classtvm_1_1BaseFunc.html">tvm::BaseFunc</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a081d3512d899e352e81e8eda6385c444">tvm::Expr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(Expr, ffi::ObjectRef, ExprNode)</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1BaseFunc.html b/docs/reference/api/doxygen/classtvm_1_1BaseFunc.html
index 46b340ce53d..ca12589190c 100644
--- a/docs/reference/api/doxygen/classtvm_1_1BaseFunc.html
+++ b/docs/reference/api/doxygen/classtvm_1_1BaseFunc.html
@@ -87,20 +87,18 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::BaseFunc:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1BaseFunc__inherit__graph.svg" width="799" height="655"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1BaseFunc__inherit__graph.svg" width="715" height="595"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::BaseFunc:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1BaseFunc__coll__graph.svg" width="258" height="432"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1BaseFunc__coll__graph.svg" width="230" height="392"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a32c091b21fc288c7b7305647ab23df6d" id="r_a32c091b21fc288c7b7305647ab23df6d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1BaseFunc.html#a32c091b21fc288c7b7305647ab23df6d">BaseFunc</a> (ffi::ObjectPtr&lt; <a class="el" href="classtvm_1_1BaseFuncNode.html">BaseFuncNode</a> &gt; node)</td></tr>
-<tr class="separator:a32c091b21fc288c7b7305647ab23df6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a496463fef22ee43ebd9ace59626a0348" id="r_a496463fef22ee43ebd9ace59626a0348"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1BaseFunc.html#a496463fef22ee43ebd9ace59626a0348">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a> (<a class="el" href="classtvm_1_1BaseFunc.html">BaseFunc</a>, <a class="el" href="classtvm_1_1Expr.html">Expr</a>, <a class="el" href="classtvm_1_1BaseFuncNode.htm [...]
-<tr class="separator:a496463fef22ee43ebd9ace59626a0348"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a49ab7504f3e6237d5227b26c687b2f34" id="r_a49ab7504f3e6237d5227b26c687b2f34"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1BaseFunc.html#a49ab7504f3e6237d5227b26c687b2f34">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a> (<a class="el" href="classtvm_1_1BaseFunc.html">BaseFunc</a>, <a class="el" href="classtvm_1_1Expr.html">Expr</a>, <a class="el" href="classtvm_1_1BaseFuncNode.html"> [...]
+<tr class="separator:a49ab7504f3e6237d5227b26c687b2f34"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="inherit_header pub_methods_classtvm_1_1Expr"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtvm_1_1Expr')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td></tr>
 <tr class="memitem:a637231cfc91838b8f14745ac199b5fbf inherit pub_methods_classtvm_1_1Expr" id="r_a637231cfc91838b8f14745ac199b5fbf"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Expr.html#a637231cfc91838b8f14745ac199b5fbf">operator==</a> (const <a class="el" href="classtvm_1_1Expr.html">Expr</a> &amp;other) const =delete</td></tr>
 <tr class="separator:a637231cfc91838b8f14745ac199b5fbf inherit pub_methods_classtvm_1_1Expr"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -108,50 +106,21 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:a86bd9da75268e479e3bbe61729dce8ac inherit pub_methods_classtvm_1_1Expr"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:afb14020d9ae652a64a6f15dcba073c0e inherit pub_methods_classtvm_1_1Expr" id="r_afb14020d9ae652a64a6f15dcba073c0e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Expr.html#afb14020d9ae652a64a6f15dcba073c0e">operator&lt;</a> (const <a class="el" href="classtvm_1_1Expr.html">Expr</a> &amp;other) const =delete</td></tr>
 <tr class="separator:afb14020d9ae652a64a6f15dcba073c0e inherit pub_methods_classtvm_1_1Expr"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aad84c3380b07b63427dda3697a78b269 inherit pub_methods_classtvm_1_1Expr" id="r_aad84c3380b07b63427dda3697a78b269"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Expr.html#aad84c3380b07b63427dda3697a78b269">Expr</a> (ffi::ObjectPtr&lt; <a class="el" href="classtvm_1_1ExprNode.html">ExprNode</a> &gt; node)</td></tr>
-<tr class="separator:aad84c3380b07b63427dda3697a78b269 inherit pub_methods_classtvm_1_1Expr"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a26775d381ee6e7c7bb65b8a7320f5b87 inherit pub_methods_classtvm_1_1Expr" id="r_a26775d381ee6e7c7bb65b8a7320f5b87"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Expr.html#a26775d381ee6e7c7bb65b8a7320f5b87">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a> (<a class="el" href="classtvm_1_1Expr.html">Expr</a>, ffi::ObjectRef, <a class="el" href="classtvm_1_1ExprNode.html">ExprNode</a>) [...]
-<tr class="separator:a26775d381ee6e7c7bb65b8a7320f5b87 inherit pub_methods_classtvm_1_1Expr"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a081d3512d899e352e81e8eda6385c444 inherit pub_methods_classtvm_1_1Expr" id="r_a081d3512d899e352e81e8eda6385c444"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Expr.html#a081d3512d899e352e81e8eda6385c444">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a> (<a class="el" href="classtvm_1_1Expr.html">Expr</a>, ffi::ObjectRef, <a class="el" href="classtvm_1_1ExprNode.html">ExprNode</a>)</td></tr>
+<tr class="separator:a081d3512d899e352e81e8eda6385c444 inherit pub_methods_classtvm_1_1Expr"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Managed reference to <a class="el" href="classtvm_1_1BaseFuncNode.html" title="Base node of all functions.">BaseFuncNode</a>. </p>
 <dl class="section see"><dt>See also</dt><dd><a class="el" href="classtvm_1_1BaseFuncNode.html" title="Base node of all functions.">BaseFuncNode</a> </dd></dl>
-</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a id="a32c091b21fc288c7b7305647ab23df6d" name="a32c091b21fc288c7b7305647ab23df6d"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a32c091b21fc288c7b7305647ab23df6d">&#9670;&#160;</a></span>BaseFunc()</h2>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a id="a49ab7504f3e6237d5227b26c687b2f34" name="a49ab7504f3e6237d5227b26c687b2f34"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a49ab7504f3e6237d5227b26c687b2f34">&#9670;&#160;</a></span>TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE()</h2>
 
 <div class="memitem">
 <div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">tvm::BaseFunc::BaseFunc </td>
-          <td>(</td>
-          <td class="paramtype">ffi::ObjectPtr&lt; <a class="el" href="classtvm_1_1BaseFuncNode.html">BaseFuncNode</a> &gt;&#160;</td>
-          <td class="paramname"><em>node</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a id="a496463fef22ee43ebd9ace59626a0348" name="a496463fef22ee43ebd9ace59626a0348"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a496463fef22ee43ebd9ace59626a0348">&#9670;&#160;</a></span>TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">tvm::BaseFunc::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE </td>
+          <td class="memname">tvm::BaseFunc::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE </td>
           <td>(</td>
           <td class="paramtype"><a class="el" href="classtvm_1_1BaseFunc.html">BaseFunc</a>&#160;</td>
           <td class="paramname">, </td>
diff --git a/docs/reference/api/doxygen/classtvm_1_1BaseFuncNode.html b/docs/reference/api/doxygen/classtvm_1_1BaseFuncNode.html
index 1d911f425f3..b0c4d0d8dca 100644
--- a/docs/reference/api/doxygen/classtvm_1_1BaseFuncNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1BaseFuncNode.html
@@ -90,7 +90,7 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::BaseFuncNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1BaseFuncNode__inherit__graph.svg" width="683" height="800"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1BaseFuncNode__inherit__graph.svg" width="683" height="780"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::BaseFuncNode:</div>
diff --git a/docs/reference/api/doxygen/classtvm_1_1BaseFuncNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1BaseFuncNode__inherit__graph.svg
index fa2484e8536..5407fac835c 100644
--- a/docs/reference/api/doxygen/classtvm_1_1BaseFuncNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1BaseFuncNode__inherit__graph.svg
@@ -4,37 +4,37 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::BaseFuncNode Pages: 1 -->
-<svg width="512pt" height="600pt"
- viewBox="0.00 0.00 512.00 600.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 596)">
+<svg width="512pt" height="585pt"
+ viewBox="0.00 0.00 512.00 585.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 581)">
 <title>tvm::BaseFuncNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="Base node of all functions.">
-<polygon fill="#999999" stroke="transparent" points="330,-351 174,-351 174,-201 330,-201 330,-351"/>
-<text text-anchor="start" x="203" y="-339" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseFuncNode</text>
-<text text-anchor="start" x="178" y="-324" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-324" font-family="Helvetica,sans-Serif" font-size="10.00">attrs</text>
+<polygon fill="#999999" stroke="transparent" points="330,-336 174,-336 174,-186 330,-186 330,-336"/>
+<text text-anchor="start" x="203" y="-324" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseFuncNode</text>
 <text text-anchor="start" x="178" y="-309" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-309" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="191" y="-309" font-family="Helvetica,sans-Serif" font-size="10.00">attrs</text>
 <text text-anchor="start" x="178" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00">GetAttr()</text>
+<text text-anchor="start" x="191" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="178" y="-279" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="191" y="-279" font-family="Helvetica,sans-Serif" font-size="10.00">GetAttr()</text>
 <text text-anchor="start" x="178" y="-264" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-264" font-family="Helvetica,sans-Serif" font-size="10.00">HasNonzeroAttr()</text>
+<text text-anchor="start" x="191" y="-264" font-family="Helvetica,sans-Serif" font-size="10.00">GetAttr()</text>
 <text text-anchor="start" x="178" y="-249" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-249" font-family="Helvetica,sans-Serif" font-size="10.00">GetLinkageType()</text>
+<text text-anchor="start" x="191" y="-249" font-family="Helvetica,sans-Serif" font-size="10.00">HasNonzeroAttr()</text>
 <text text-anchor="start" x="178" y="-234" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-234" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="191" y="-223" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="178" y="-208" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-208" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="174,-334 174,-334 330,-334 330,-334 174,-334"/>
-<polygon fill="#666666" stroke="#666666" points="174,-304 174,-304 189,-304 189,-304 174,-304"/>
-<polygon fill="#666666" stroke="#666666" points="189,-304 189,-304 330,-304 330,-304 189,-304"/>
-<polygon fill="none" stroke="#666666" points="174,-201 174,-351 330,-351 330,-201 174,-201"/>
+<text text-anchor="start" x="191" y="-234" font-family="Helvetica,sans-Serif" font-size="10.00">GetLinkageType()</text>
+<text text-anchor="start" x="178" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="191" y="-208" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<text text-anchor="start" x="178" y="-193" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-193" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="174,-319 174,-319 330,-319 330,-319 174,-319"/>
+<polygon fill="#666666" stroke="#666666" points="174,-289 174,-289 189,-289 189,-289 174,-289"/>
+<polygon fill="#666666" stroke="#666666" points="189,-289 189,-289 330,-289 330,-289 189,-289"/>
+<polygon fill="none" stroke="#666666" points="174,-186 174,-336 330,-336 330,-186 174,-186"/>
 </a>
 </g>
 </g>
@@ -42,19 +42,19 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1relax_1_1ExternFuncNode.html" target="_top" xlink:title="The extern function, which can represent packed function.">
-<polygon fill="white" stroke="transparent" points="156,-120 0,-120 0,-45 156,-45 156,-120"/>
-<text text-anchor="start" x="10" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ExternFuncNode</text>
-<text text-anchor="start" x="4" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">global_symbol</text>
-<text text-anchor="start" x="4" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="17" y="-66.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="4" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-102.5 0,-102.5 156,-102.5 156,-102.5 0,-102.5"/>
-<polygon fill="#666666" stroke="#666666" points="0,-87.5 0,-87.5 15,-87.5 15,-87.5 0,-87.5"/>
-<polygon fill="#666666" stroke="#666666" points="15,-87.5 15,-87.5 156,-87.5 156,-87.5 15,-87.5"/>
-<polygon fill="none" stroke="#666666" points="0,-45 0,-120 156,-120 156,-45 0,-45"/>
+<polygon fill="white" stroke="transparent" points="156,-112.5 0,-112.5 0,-37.5 156,-37.5 156,-112.5"/>
+<text text-anchor="start" x="10" y="-100" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ExternFuncNode</text>
+<text text-anchor="start" x="4" y="-85" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-85" font-family="Helvetica,sans-Serif" font-size="10.00">global_symbol</text>
+<text text-anchor="start" x="4" y="-70" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-70" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="17" y="-59" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="4" y="-44" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-44" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-95 0,-95 156,-95 156,-95 0,-95"/>
+<polygon fill="#666666" stroke="#666666" points="0,-80 0,-80 15,-80 15,-80 0,-80"/>
+<polygon fill="#666666" stroke="#666666" points="15,-80 15,-80 156,-80 156,-80 15,-80"/>
+<polygon fill="none" stroke="#666666" points="0,-37.5 0,-112.5 156,-112.5 156,-37.5 0,-37.5"/>
 </a>
 </g>
 </g>
@@ -62,8 +62,8 @@
 <g id="edge3_Node000001_Node000004" class="edge">
 <title>Node1&#45;&gt;Node4</title>
 <g id="a_edge3_Node000001_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M177.9,-193.45C154.69,-167.91 130.24,-140.99 111.33,-120.18"/>
-<polygon fill="none" stroke="#63b8ff" points="175.41,-195.91 184.73,-200.96 180.59,-191.21 175.41,-195.91"/>
+<path fill="none" stroke="#63b8ff" d="M174.96,-178.54C153.24,-155.57 130.69,-131.71 112.8,-112.8"/>
+<polygon fill="none" stroke="#63b8ff" points="172.57,-181.09 181.98,-185.96 177.65,-176.28 172.57,-181.09"/>
 </a>
 </g>
 </g>
@@ -71,31 +71,27 @@
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:href="classtvm_1_1relax_1_1FunctionNode.html" target="_top" xlink:title="A Relax function.">
-<polygon fill="white" stroke="transparent" points="330,-165 174,-165 174,0 330,0 330,-165"/>
-<text text-anchor="start" x="190" y="-152.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::FunctionNode</text>
-<text text-anchor="start" x="178" y="-137.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-137.5" font-family="Helvetica,sans-Serif" font-size="10.00">params</text>
-<text text-anchor="start" x="178" y="-122.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-122.5" font-family="Helvetica,sans-Serif" font-size="10.00">body</text>
-<text text-anchor="start" x="178" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">ret_ty</text>
-<text text-anchor="start" x="178" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">is_pure</text>
-<text text-anchor="start" x="178" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
-<text text-anchor="start" x="178" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">FunctionNode()</text>
-<text text-anchor="start" x="178" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">FunctionNode()</text>
-<text text-anchor="start" x="178" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="191" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="178" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="174,-147.5 174,-147.5 330,-147.5 330,-147.5 174,-147.5"/>
-<polygon fill="#666666" stroke="#666666" points="174,-72.5 174,-72.5 189,-72.5 189,-72.5 174,-72.5"/>
-<polygon fill="#666666" stroke="#666666" points="189,-72.5 189,-72.5 330,-72.5 330,-72.5 189,-72.5"/>
-<polygon fill="none" stroke="#666666" points="174,0 174,-165 330,-165 330,0 174,0"/>
+<polygon fill="white" stroke="transparent" points="330,-142.5 174,-142.5 174,-7.5 330,-7.5 330,-142.5"/>
+<text text-anchor="start" x="190" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::FunctionNode</text>
+<text text-anchor="start" x="178" y="-115" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-115" font-family="Helvetica,sans-Serif" font-size="10.00">params</text>
+<text text-anchor="start" x="178" y="-100" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-100" font-family="Helvetica,sans-Serif" font-size="10.00">body</text>
+<text text-anchor="start" x="178" y="-85" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-85" font-family="Helvetica,sans-Serif" font-size="10.00">ret_ty</text>
+<text text-anchor="start" x="178" y="-70" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-70" font-family="Helvetica,sans-Serif" font-size="10.00">is_pure</text>
+<text text-anchor="start" x="178" y="-55" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-55" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="178" y="-40" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-40" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="191" y="-29" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="178" y="-14" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-14" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="174,-125 174,-125 330,-125 330,-125 174,-125"/>
+<polygon fill="#666666" stroke="#666666" points="174,-50 174,-50 189,-50 189,-50 174,-50"/>
+<polygon fill="#666666" stroke="#666666" points="189,-50 189,-50 330,-50 330,-50 189,-50"/>
+<polygon fill="none" stroke="#666666" points="174,-7.5 174,-142.5 330,-142.5 330,-7.5 174,-7.5"/>
 </a>
 </g>
 </g>
@@ -103,8 +99,8 @@
 <g id="edge4_Node000001_Node000005" class="edge">
 <title>Node1&#45;&gt;Node5</title>
 <g id="a_edge4_Node000001_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M252,-190.73C252,-182.29 252,-173.72 252,-165.29"/>
-<polygon fill="none" stroke="#63b8ff" points="248.5,-190.96 252,-200.96 255.5,-190.96 248.5,-190.96"/>
+<path fill="none" stroke="#63b8ff" d="M252,-175.83C252,-164.75 252,-153.51 252,-142.76"/>
+<polygon fill="none" stroke="#63b8ff" points="248.5,-175.96 252,-185.96 255.5,-175.96 248.5,-175.96"/>
 </a>
 </g>
 </g>
@@ -112,29 +108,29 @@
 <g id="Node000006" class="node">
 <title>Node6</title>
 <g id="a_Node000006"><a xlink:href="classtvm_1_1tirx_1_1PrimFuncNode.html" target="_top" xlink:title="Primitive functions that contains TIR statements.">
-<polygon fill="white" stroke="transparent" points="504,-157.5 348,-157.5 348,-7.5 504,-7.5 504,-157.5"/>
-<text text-anchor="start" x="366.5" y="-145.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::PrimFuncNode</text>
-<text text-anchor="start" x="352" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="365" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00">params</text>
-<text text-anchor="start" x="352" y="-115.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="365" y="-115.5" font-family="Helvetica,sans-Serif" font-size="10.00">ret_type</text>
-<text text-anchor="start" x="352" y="-100.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="365" y="-100.5" font-family="Helvetica,sans-Serif" font-size="10.00">body</text>
-<text text-anchor="start" x="352" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="365" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">SEqual()</text>
-<text text-anchor="start" x="352" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="365" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">SHash()</text>
-<text text-anchor="start" x="352" y="-55.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="365" y="-55.5" font-family="Helvetica,sans-Serif" font-size="10.00">func_type_annotation()</text>
-<text text-anchor="start" x="352" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="365" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="365" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="352" y="-14.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="365" y="-14.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="348,-140.5 348,-140.5 504,-140.5 504,-140.5 348,-140.5"/>
-<polygon fill="#666666" stroke="#666666" points="348,-95.5 348,-95.5 363,-95.5 363,-95.5 348,-95.5"/>
-<polygon fill="#666666" stroke="#666666" points="363,-95.5 363,-95.5 504,-95.5 504,-95.5 363,-95.5"/>
-<polygon fill="none" stroke="#666666" points="348,-7.5 348,-157.5 504,-157.5 504,-7.5 348,-7.5"/>
+<polygon fill="white" stroke="transparent" points="504,-150 348,-150 348,0 504,0 504,-150"/>
+<text text-anchor="start" x="366.5" y="-138" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::PrimFuncNode</text>
+<text text-anchor="start" x="352" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="365" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00">params</text>
+<text text-anchor="start" x="352" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="365" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00">ret_type</text>
+<text text-anchor="start" x="352" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="365" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">body</text>
+<text text-anchor="start" x="352" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="365" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">SEqual()</text>
+<text text-anchor="start" x="352" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="365" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">SHash()</text>
+<text text-anchor="start" x="352" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="365" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">func_type_annotation()</text>
+<text text-anchor="start" x="352" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="365" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="365" y="-22" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="352" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="365" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="348,-133 348,-133 504,-133 504,-133 348,-133"/>
+<polygon fill="#666666" stroke="#666666" points="348,-88 348,-88 363,-88 363,-88 348,-88"/>
+<polygon fill="#666666" stroke="#666666" points="363,-88 363,-88 504,-88 504,-88 363,-88"/>
+<polygon fill="none" stroke="#666666" points="348,0 348,-150 504,-150 504,0 348,0"/>
 </a>
 </g>
 </g>
@@ -142,8 +138,8 @@
 <g id="edge5_Node000001_Node000006" class="edge">
 <title>Node1&#45;&gt;Node6</title>
 <g id="a_edge5_Node000001_Node000006"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M326.28,-193.24C337.02,-181.43 348.03,-169.32 358.62,-157.66"/>
-<polygon fill="none" stroke="#63b8ff" points="323.41,-191.21 319.27,-200.96 328.59,-195.91 323.41,-191.21"/>
+<path fill="none" stroke="#63b8ff" d="M329.12,-178.45C338.01,-169.05 347.04,-159.49 355.84,-150.19"/>
+<polygon fill="none" stroke="#63b8ff" points="326.35,-176.28 322.02,-185.96 331.43,-181.09 326.35,-176.28"/>
 </a>
 </g>
 </g>
@@ -151,25 +147,25 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1ExprNode.html" target="_top" xlink:title="Base type of all the expressions.">
-<polygon fill="white" stroke="transparent" points="330,-507 174,-507 174,-387 330,-387 330,-507"/>
-<text text-anchor="start" x="215.5" y="-495" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ExprNode</text>
-<text text-anchor="start" x="178" y="-480" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-480" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
+<polygon fill="white" stroke="transparent" points="330,-492 174,-492 174,-372 330,-372 330,-492"/>
+<text text-anchor="start" x="215.5" y="-480" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ExprNode</text>
 <text text-anchor="start" x="178" y="-465" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-465" font-family="Helvetica,sans-Serif" font-size="10.00">ty</text>
+<text text-anchor="start" x="191" y="-465" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
 <text text-anchor="start" x="178" y="-450" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-450" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="191" y="-450" font-family="Helvetica,sans-Serif" font-size="10.00">ty</text>
 <text text-anchor="start" x="178" y="-435" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-435" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="191" y="-435" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
 <text text-anchor="start" x="178" y="-420" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-420" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="191" y="-409" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="178" y="-394" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-394" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="174,-490 174,-490 330,-490 330,-490 174,-490"/>
-<polygon fill="#666666" stroke="#666666" points="174,-430 174,-430 189,-430 189,-430 174,-430"/>
-<polygon fill="#666666" stroke="#666666" points="189,-430 189,-430 330,-430 330,-430 189,-430"/>
-<polygon fill="none" stroke="#666666" points="174,-387 174,-507 330,-507 330,-387 174,-387"/>
+<text text-anchor="start" x="191" y="-420" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="178" y="-405" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-405" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="191" y="-394" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<text text-anchor="start" x="178" y="-379" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-379" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="174,-475 174,-475 330,-475 330,-475 174,-475"/>
+<polygon fill="#666666" stroke="#666666" points="174,-415 174,-415 189,-415 189,-415 174,-415"/>
+<polygon fill="#666666" stroke="#666666" points="189,-415 189,-415 330,-415 330,-415 189,-415"/>
+<polygon fill="none" stroke="#666666" points="174,-372 174,-492 330,-492 330,-372 174,-372"/>
 </a>
 </g>
 </g>
@@ -177,8 +173,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M252,-376.75C252,-368.34 252,-359.71 252,-351.23"/>
-<polygon fill="none" stroke="#63b8ff" points="248.5,-376.89 252,-386.89 255.5,-376.89 248.5,-376.89"/>
+<path fill="none" stroke="#63b8ff" d="M252,-361.75C252,-353.34 252,-344.71 252,-336.23"/>
+<polygon fill="none" stroke="#63b8ff" points="248.5,-361.89 252,-371.89 255.5,-361.89 248.5,-361.89"/>
 </a>
 </g>
 </g>
@@ -186,13 +182,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="281,-592 223,-592 223,-543 281,-543 281,-592"/>
-<text text-anchor="start" x="228" y="-579.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="250" y="-564.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="white" stroke="transparent" points="281,-577 223,-577 223,-528 281,-528 281,-577"/>
+<text text-anchor="start" x="228" y="-564.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
 <text text-anchor="start" x="250" y="-549.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="223,-574.5 223,-574.5 281,-574.5 281,-574.5 223,-574.5"/>
+<text text-anchor="start" x="250" y="-534.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
 <polygon fill="#666666" stroke="#666666" points="223,-559.5 223,-559.5 281,-559.5 281,-559.5 223,-559.5"/>
-<polygon fill="none" stroke="#666666" points="223,-543 223,-592 281,-592 281,-543 223,-543"/>
+<polygon fill="#666666" stroke="#666666" points="223,-544.5 223,-544.5 281,-544.5 281,-544.5 223,-544.5"/>
+<polygon fill="none" stroke="#666666" points="223,-528 223,-577 281,-577 281,-528 223,-528"/>
 </a>
 </g>
 </g>
@@ -200,8 +196,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M252,-532.59C252,-524.71 252,-516.09 252,-507.47"/>
-<polygon fill="none" stroke="#63b8ff" points="248.5,-532.8 252,-542.8 255.5,-532.8 248.5,-532.8"/>
+<path fill="none" stroke="#63b8ff" d="M252,-517.59C252,-509.71 252,-501.09 252,-492.47"/>
+<polygon fill="none" stroke="#63b8ff" points="248.5,-517.8 252,-527.8 255.5,-517.8 248.5,-517.8"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1BaseFunc__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1BaseFunc__coll__graph.svg
index 5523553b7af..8faeceb9764 100644
--- a/docs/reference/api/doxygen/classtvm_1_1BaseFunc__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1BaseFunc__coll__graph.svg
@@ -4,25 +4,23 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::BaseFunc Pages: 1 -->
-<svg width="193pt" height="324pt"
- viewBox="0.00 0.00 193.00 324.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 320)">
+<svg width="172pt" height="294pt"
+ viewBox="0.00 0.00 172.00 294.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 290)">
 <title>tvm::BaseFunc</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="Managed reference to BaseFuncNode.">
-<polygon fill="#999999" stroke="transparent" points="185,-75 0,-75 0,0 185,0 185,-75"/>
-<text text-anchor="start" x="56.5" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseFunc</text>
-<text text-anchor="start" x="91" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">BaseFunc()</text>
-<text text-anchor="start" x="4.5" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-57.5 0.5,-57.5 185.5,-57.5 185.5,-57.5 0.5,-57.5"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-42.5 0.5,-42.5 185.5,-42.5 185.5,-42.5 0.5,-42.5"/>
-<polygon fill="none" stroke="#666666" points="0,0 0,-75 185,-75 185,0 0,0"/>
+<polygon fill="#999999" stroke="transparent" points="164,-60 0,-60 0,0 164,0 164,-60"/>
+<text text-anchor="start" x="45.5" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseFunc</text>
+<text text-anchor="start" x="80" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4" y="-18" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-18" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="17" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-43 0,-43 164,-43 164,-43 0,-43"/>
+<polygon fill="#666666" stroke="#666666" points="0,-28 0,-28 164,-28 164,-28 0,-28"/>
+<polygon fill="none" stroke="#666666" points="0,0 0,-60 164,-60 164,0 0,0"/>
 </a>
 </g>
 </g>
@@ -30,23 +28,21 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1Expr.html" target="_top" xlink:title="Managed reference to ExprNode.">
-<polygon fill="white" stroke="transparent" points="185,-231 0,-231 0,-111 185,-111 185,-231"/>
-<text text-anchor="start" x="69" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
-<text text-anchor="start" x="91" y="-204" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-189" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-189" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
-<text text-anchor="start" x="4.5" y="-174" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-174" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
-<text text-anchor="start" x="4.5" y="-159" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-159" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
-<text text-anchor="start" x="4.5" y="-144" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-144" font-family="Helvetica,sans-Serif" font-size="10.00">Expr()</text>
-<text text-anchor="start" x="4.5" y="-129" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-129" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-118" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-214 0.5,-214 185.5,-214 185.5,-214 0.5,-214"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-199 0.5,-199 185.5,-199 185.5,-199 0.5,-199"/>
-<polygon fill="none" stroke="#666666" points="0,-111 0,-231 185,-231 185,-111 0,-111"/>
+<polygon fill="white" stroke="transparent" points="164,-201 0,-201 0,-96 164,-96 164,-201"/>
+<text text-anchor="start" x="58" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
+<text text-anchor="start" x="80" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
+<text text-anchor="start" x="4" y="-143.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-143.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
+<text text-anchor="start" x="4" y="-128.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-128.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
+<text text-anchor="start" x="4" y="-113.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-113.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="17" y="-102.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-183.5 0,-183.5 164,-183.5 164,-183.5 0,-183.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-168.5 0,-168.5 164,-168.5 164,-168.5 0,-168.5"/>
+<polygon fill="none" stroke="#666666" points="0,-96 0,-201 164,-201 164,-96 0,-96"/>
 </a>
 </g>
 </g>
@@ -54,8 +50,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M92.5,-100.52C92.5,-91.77 92.5,-83.11 92.5,-75.16"/>
-<polygon fill="none" stroke="#63b8ff" points="89,-100.79 92.5,-110.79 96,-100.79 89,-100.79"/>
+<path fill="none" stroke="#63b8ff" d="M82,-85.71C82,-76.85 82,-68.09 82,-60.27"/>
+<polygon fill="none" stroke="#63b8ff" points="78.5,-85.72 82,-95.72 85.5,-85.72 78.5,-85.72"/>
 </a>
 </g>
 </g>
@@ -63,13 +59,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="129.5,-316 55.5,-316 55.5,-267 129.5,-267 129.5,-316"/>
-<text text-anchor="start" x="60.5" y="-303.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="90.5" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="90.5" y="-273.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="55.5,-298.5 55.5,-298.5 129.5,-298.5 129.5,-298.5 55.5,-298.5"/>
-<polygon fill="#666666" stroke="#666666" points="55.5,-283.5 55.5,-283.5 129.5,-283.5 129.5,-283.5 55.5,-283.5"/>
-<polygon fill="none" stroke="#666666" points="55.5,-267 55.5,-316 129.5,-316 129.5,-267 55.5,-267"/>
+<polygon fill="white" stroke="transparent" points="119,-286 45,-286 45,-237 119,-237 119,-286"/>
+<text text-anchor="start" x="50" y="-273.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="80" y="-258.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="80" y="-243.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="45,-268.5 45,-268.5 119,-268.5 119,-268.5 45,-268.5"/>
+<polygon fill="#666666" stroke="#666666" points="45,-253.5 45,-253.5 119,-253.5 119,-253.5 45,-253.5"/>
+<polygon fill="none" stroke="#666666" points="45,-237 45,-286 119,-286 119,-237 45,-237"/>
 </a>
 </g>
 </g>
@@ -77,8 +73,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M92.5,-256.59C92.5,-248.71 92.5,-240.09 92.5,-231.47"/>
-<polygon fill="none" stroke="#63b8ff" points="89,-256.8 92.5,-266.8 96,-256.8 89,-256.8"/>
+<path fill="none" stroke="#63b8ff" d="M82,-226.85C82,-218.79 82,-210 82,-201.32"/>
+<polygon fill="none" stroke="#63b8ff" points="78.5,-226.96 82,-236.96 85.5,-226.96 78.5,-226.96"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1BaseFunc__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1BaseFunc__inherit__graph.svg
index c8a0d7c4fce..0f835883332 100644
--- a/docs/reference/api/doxygen/classtvm_1_1BaseFunc__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1BaseFunc__inherit__graph.svg
@@ -4,25 +4,23 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::BaseFunc Pages: 1 -->
-<svg width="599pt" height="491pt"
- viewBox="0.00 0.00 599.00 491.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 487)">
+<svg width="536pt" height="446pt"
+ viewBox="0.00 0.00 536.00 446.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 442)">
 <title>tvm::BaseFunc</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="Managed reference to BaseFuncNode.">
-<polygon fill="#999999" stroke="transparent" points="388,-242 203,-242 203,-167 388,-167 388,-242"/>
-<text text-anchor="start" x="259.5" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseFunc</text>
-<text text-anchor="start" x="294" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="207.5" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">BaseFunc()</text>
-<text text-anchor="start" x="207.5" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="220.5" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="203.5,-224.5 203.5,-224.5 388.5,-224.5 388.5,-224.5 203.5,-224.5"/>
-<polygon fill="#666666" stroke="#666666" points="203.5,-209.5 203.5,-209.5 388.5,-209.5 388.5,-209.5 203.5,-209.5"/>
-<polygon fill="none" stroke="#666666" points="203,-167 203,-242 388,-242 388,-167 203,-167"/>
+<polygon fill="#999999" stroke="transparent" points="346,-212 182,-212 182,-152 346,-152 346,-212"/>
+<text text-anchor="start" x="227.5" y="-200" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseFunc</text>
+<text text-anchor="start" x="262" y="-185" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="186" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="199" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="199" y="-159" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="182,-195 182,-195 346,-195 346,-195 182,-195"/>
+<polygon fill="#666666" stroke="#666666" points="182,-180 182,-180 346,-180 346,-180 182,-180"/>
+<polygon fill="none" stroke="#666666" points="182,-152 182,-212 346,-212 346,-152 182,-152"/>
 </a>
 </g>
 </g>
@@ -30,24 +28,22 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1relax_1_1ExternFunc.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="185,-131 0,-131 0,0 185,0 185,-131"/>
-<text text-anchor="start" x="37.5" y="-118.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ExternFunc</text>
-<text text-anchor="start" x="91" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExternFunc()</text>
-<text text-anchor="start" x="4.5" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExternFunc()</text>
-<text text-anchor="start" x="4.5" y="-58.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-58.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExternFunc()</text>
-<text text-anchor="start" x="4.5" y="-43.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-43.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="4.5" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="17.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-113.5 0.5,-113.5 185.5,-113.5 185.5,-113.5 0.5,-113.5"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-98.5 0.5,-98.5 185.5,-98.5 185.5,-98.5 0.5,-98.5"/>
-<polygon fill="none" stroke="#666666" points="0,0 0,-131 185,-131 185,0 0,0"/>
+<polygon fill="white" stroke="transparent" points="164,-116 0,-116 0,0 164,0 164,-116"/>
+<text text-anchor="start" x="26.5" y="-104" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ExternFunc</text>
+<text text-anchor="start" x="80" y="-89" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">ExternFunc()</text>
+<text text-anchor="start" x="4" y="-59" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-59" font-family="Helvetica,sans-Serif" font-size="10.00">ExternFunc()</text>
+<text text-anchor="start" x="4" y="-44" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-44" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="17" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="4" y="-18" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-18" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="17" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-99 0,-99 164,-99 164,-99 0,-99"/>
+<polygon fill="#666666" stroke="#666666" points="0,-84 0,-84 164,-84 164,-84 0,-84"/>
+<polygon fill="none" stroke="#666666" points="0,0 0,-116 164,-116 164,0 0,0"/>
 </a>
 </g>
 </g>
@@ -55,8 +51,8 @@
 <g id="edge3_Node000001_Node000004" class="edge">
 <title>Node1&#45;&gt;Node4</title>
 <g id="a_edge3_Node000001_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M232.69,-161.11C217.67,-150.98 201.33,-139.95 185.28,-129.11"/>
-<polygon fill="none" stroke="#63b8ff" points="231.12,-164.27 241.37,-166.97 235.04,-158.47 231.12,-164.27"/>
+<path fill="none" stroke="#63b8ff" d="M211.84,-146.04C196.94,-136.05 180.32,-124.91 164.08,-114.02"/>
+<polygon fill="none" stroke="#63b8ff" points="210.15,-149.12 220.41,-151.78 214.05,-143.3 210.15,-149.12"/>
 </a>
 </g>
 </g>
@@ -64,24 +60,22 @@
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:href="classtvm_1_1relax_1_1Function.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="388,-131 203,-131 203,0 388,0 388,-131"/>
-<text text-anchor="start" x="247" y="-118.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::Function</text>
-<text text-anchor="start" x="294" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="207.5" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">Function()</text>
-<text text-anchor="start" x="207.5" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">Function()</text>
-<text text-anchor="start" x="207.5" y="-58.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-58.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="220.5" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="207.5" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="220.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<text text-anchor="start" x="207.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">CreateEmpty()</text>
-<polygon fill="#666666" stroke="#666666" points="203.5,-113.5 203.5,-113.5 388.5,-113.5 388.5,-113.5 203.5,-113.5"/>
-<polygon fill="#666666" stroke="#666666" points="203.5,-98.5 203.5,-98.5 388.5,-98.5 388.5,-98.5 203.5,-98.5"/>
-<polygon fill="none" stroke="#666666" points="203,0 203,-131 388,-131 388,0 203,0"/>
+<polygon fill="white" stroke="transparent" points="346,-116 182,-116 182,0 346,0 346,-116"/>
+<text text-anchor="start" x="215" y="-104" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::Function</text>
+<text text-anchor="start" x="262" y="-89" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="186" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="199" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">Function()</text>
+<text text-anchor="start" x="186" y="-59" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="199" y="-59" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="199" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="186" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="199" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="199" y="-22" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<text text-anchor="start" x="186" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="199" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">CreateEmpty()</text>
+<polygon fill="#666666" stroke="#666666" points="182,-99 182,-99 346,-99 346,-99 182,-99"/>
+<polygon fill="#666666" stroke="#666666" points="182,-84 182,-84 346,-84 346,-84 182,-84"/>
+<polygon fill="none" stroke="#666666" points="182,0 182,-116 346,-116 346,0 182,0"/>
 </a>
 </g>
 </g>
@@ -89,8 +83,8 @@
 <g id="edge4_Node000001_Node000005" class="edge">
 <title>Node1&#45;&gt;Node5</title>
 <g id="a_edge4_Node000001_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M295.5,-156.64C295.5,-148.41 295.5,-139.7 295.5,-131.08"/>
-<polygon fill="none" stroke="#63b8ff" points="292,-156.79 295.5,-166.79 299,-156.79 292,-156.79"/>
+<path fill="none" stroke="#63b8ff" d="M264,-141.54C264,-133.45 264,-124.78 264,-116.21"/>
+<polygon fill="none" stroke="#63b8ff" points="260.5,-141.78 264,-151.78 267.5,-141.78 260.5,-141.78"/>
 </a>
 </g>
 </g>
@@ -98,22 +92,20 @@
 <g id="Node000006" class="node">
 <title>Node6</title>
 <g id="a_Node000006"><a xlink:href="classtvm_1_1tirx_1_1PrimFunc.html" target="_top" xlink:title="Managed reference to PrimFuncNode.">
-<polygon fill="white" stroke="transparent" points="591,-123.5 406,-123.5 406,-7.5 591,-7.5 591,-123.5"/>
-<text text-anchor="start" x="452" y="-111.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::PrimFunc</text>
-<text text-anchor="start" x="497" y="-96.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="410.5" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="423.5" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">PrimFunc()</text>
-<text text-anchor="start" x="410.5" y="-66.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="423.5" y="-66.5" font-family="Helvetica,sans-Serif" font-size="10.00">PrimFunc()</text>
-<text text-anchor="start" x="410.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="423.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="423.5" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="410.5" y="-25.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="423.5" y="-25.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="423.5" y="-14.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="406.5,-106.5 406.5,-106.5 591.5,-106.5 591.5,-106.5 406.5,-106.5"/>
-<polygon fill="#666666" stroke="#666666" points="406.5,-91.5 406.5,-91.5 591.5,-91.5 591.5,-91.5 406.5,-91.5"/>
-<polygon fill="none" stroke="#666666" points="406,-7.5 406,-123.5 591,-123.5 591,-7.5 406,-7.5"/>
+<polygon fill="white" stroke="transparent" points="528,-108.5 364,-108.5 364,-7.5 528,-7.5 528,-108.5"/>
+<text text-anchor="start" x="399" y="-96" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::PrimFunc</text>
+<text text-anchor="start" x="444" y="-81" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="368" y="-66" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="381" y="-66" font-family="Helvetica,sans-Serif" font-size="10.00">PrimFunc()</text>
+<text text-anchor="start" x="368" y="-51" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="381" y="-51" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="381" y="-40" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="368" y="-25" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="381" y="-25" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="381" y="-14" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="364,-91 364,-91 528,-91 528,-91 364,-91"/>
+<polygon fill="#666666" stroke="#666666" points="364,-76 364,-76 528,-76 528,-76 364,-76"/>
+<polygon fill="none" stroke="#666666" points="364,-7.5 364,-108.5 528,-108.5 528,-7.5 364,-7.5"/>
 </a>
 </g>
 </g>
@@ -121,8 +113,8 @@
 <g id="edge5_Node000001_Node000006" class="edge">
 <title>Node1&#45;&gt;Node6</title>
 <g id="a_edge5_Node000001_Node000006"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M358.13,-161.23C375.76,-149.33 395.23,-136.19 413.92,-123.58"/>
-<polygon fill="none" stroke="#63b8ff" points="355.96,-158.47 349.63,-166.97 359.88,-164.27 355.96,-158.47"/>
+<path fill="none" stroke="#63b8ff" d="M315.93,-146.19C333.33,-134.53 353.08,-121.29 371.84,-108.71"/>
+<polygon fill="none" stroke="#63b8ff" points="313.95,-143.3 307.59,-151.78 317.85,-149.12 313.95,-143.3"/>
 </a>
 </g>
 </g>
@@ -130,23 +122,21 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1Expr.html" target="_top" xlink:title="Managed reference to ExprNode.">
-<polygon fill="white" stroke="transparent" points="388,-398 203,-398 203,-278 388,-278 388,-398"/>
-<text text-anchor="start" x="272" y="-386" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
-<text text-anchor="start" x="294" y="-371" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="207.5" y="-356" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-356" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
-<text text-anchor="start" x="207.5" y="-341" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-341" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
-<text text-anchor="start" x="207.5" y="-326" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-326" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
-<text text-anchor="start" x="207.5" y="-311" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-311" font-family="Helvetica,sans-Serif" font-size="10.00">Expr()</text>
-<text text-anchor="start" x="207.5" y="-296" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-296" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="220.5" y="-285" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="203.5,-381 203.5,-381 388.5,-381 388.5,-381 203.5,-381"/>
-<polygon fill="#666666" stroke="#666666" points="203.5,-366 203.5,-366 388.5,-366 388.5,-366 203.5,-366"/>
-<polygon fill="none" stroke="#666666" points="203,-278 203,-398 388,-398 388,-278 203,-278"/>
+<polygon fill="white" stroke="transparent" points="346,-353 182,-353 182,-248 346,-248 346,-353"/>
+<text text-anchor="start" x="240" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
+<text text-anchor="start" x="262" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="186" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="199" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
+<text text-anchor="start" x="186" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="199" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
+<text text-anchor="start" x="186" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="199" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
+<text text-anchor="start" x="186" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="199" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="199" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="182,-335.5 182,-335.5 346,-335.5 346,-335.5 182,-335.5"/>
+<polygon fill="#666666" stroke="#666666" points="182,-320.5 182,-320.5 346,-320.5 346,-320.5 182,-320.5"/>
+<polygon fill="none" stroke="#666666" points="182,-248 182,-353 346,-353 346,-248 182,-248"/>
 </a>
 </g>
 </g>
@@ -154,8 +144,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M295.5,-267.52C295.5,-258.77 295.5,-250.11 295.5,-242.16"/>
-<polygon fill="none" stroke="#63b8ff" points="292,-267.79 295.5,-277.79 299,-267.79 292,-267.79"/>
+<path fill="none" stroke="#63b8ff" d="M264,-237.71C264,-228.85 264,-220.09 264,-212.27"/>
+<polygon fill="none" stroke="#63b8ff" points="260.5,-237.72 264,-247.72 267.5,-237.72 260.5,-237.72"/>
 </a>
 </g>
 </g>
@@ -163,13 +153,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="332.5,-483 258.5,-483 258.5,-434 332.5,-434 332.5,-483"/>
-<text text-anchor="start" x="263.5" y="-470.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="293.5" y="-455.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="293.5" y="-440.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="258.5,-465.5 258.5,-465.5 332.5,-465.5 332.5,-465.5 258.5,-465.5"/>
-<polygon fill="#666666" stroke="#666666" points="258.5,-450.5 258.5,-450.5 332.5,-450.5 332.5,-450.5 258.5,-450.5"/>
-<polygon fill="none" stroke="#666666" points="258.5,-434 258.5,-483 332.5,-483 332.5,-434 258.5,-434"/>
+<polygon fill="white" stroke="transparent" points="301,-438 227,-438 227,-389 301,-389 301,-438"/>
+<text text-anchor="start" x="232" y="-425.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="262" y="-410.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="262" y="-395.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="227,-420.5 227,-420.5 301,-420.5 301,-420.5 227,-420.5"/>
+<polygon fill="#666666" stroke="#666666" points="227,-405.5 227,-405.5 301,-405.5 301,-405.5 227,-405.5"/>
+<polygon fill="none" stroke="#666666" points="227,-389 227,-438 301,-438 301,-389 227,-389"/>
 </a>
 </g>
 </g>
@@ -177,8 +167,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M295.5,-423.59C295.5,-415.71 295.5,-407.09 295.5,-398.47"/>
-<polygon fill="none" stroke="#63b8ff" points="292,-423.8 295.5,-433.8 299,-423.8 292,-423.8"/>
+<path fill="none" stroke="#63b8ff" d="M264,-378.85C264,-370.79 264,-362 264,-353.32"/>
+<polygon fill="none" stroke="#63b8ff" points="260.5,-378.96 264,-388.96 267.5,-378.96 260.5,-378.96"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1Call-members.html b/docs/reference/api/doxygen/classtvm_1_1Call-members.html
index 23d64b20ddc..aafcc83ca97 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Call-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1Call-members.html
@@ -80,15 +80,13 @@ $(function() {
 <p>This is the complete list of members for <a class="el" href="classtvm_1_1Call.html">tvm::Call</a>, including all inherited members.</p>
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Call.html#a3f3f3217c8479486d1f71664ce6860fc">Call</a>(Type ret_ty, Expr op, ffi::Array&lt; Expr &gt; args, Attrs attrs=Attrs(), ffi::Array&lt; Type &gt; ty_args=ffi::Array&lt; Type &gt;(), Span span=Span())</td><td class="entry"><a class="el" href="classtvm_1_1Call.html">tvm::Call</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1Call.html#a26304eac4f5299ac4b4862105a9f5cd5">Call</a>(ffi::ObjectPtr&lt; CallNode &gt; node)</td><td class="entry"><a class="el" href="classtvm_1_1Call.html">tvm::Call</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#aad84c3380b07b63427dda3697a78b269">Expr</a>(ffi::ObjectPtr&lt; ExprNode &gt; node)</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a86bd9da75268e479e3bbe61729dce8ac">operator!=</a>(const Expr &amp;other) const =delete</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#afb14020d9ae652a64a6f15dcba073c0e">operator&lt;</a>(const Expr &amp;other) const =delete</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a637231cfc91838b8f14745ac199b5fbf">operator==</a>(const Expr &amp;other) const =delete</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Call.html#a2529a07149ca02f531a3956a3214e4f3">ReinferType</a>(const CallNode *call)</td><td class="entry"><a class="el" href="classtvm_1_1Call.html">tvm::Call</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1Call.html#ac7f8d11aa54e549a1154d2d2bd25c461">TVM_DEFINE_OBJECT_REF_COW_METHOD</a>(CallNode)</td><td class="entry"><a class="el" href="classtvm_1_1Call.html">tvm::Call</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Call.html#a0f4ec23aeb4d11f55841170c3293e37a">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(Call, Expr, CallNode)</td><td class="entry"><a class="el" href="classtvm_1_1Call.html">tvm::Call</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a26775d381ee6e7c7bb65b8a7320f5b87">tvm::Expr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(Expr, ffi::ObjectRef, ExprNode)</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Call.html#a4bdf27cf6857f06eacb0c3fc75d72eb3">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(Call, Expr, CallNode)</td><td class="entry"><a class="el" href="classtvm_1_1Call.html">tvm::Call</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a081d3512d899e352e81e8eda6385c444">tvm::Expr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(Expr, ffi::ObjectRef, ExprNode)</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Call.html#a717eff240dbf83fac263bb06dac3253c">Unchecked</a>(Type ret_ty, Expr op, ffi::Array&lt; Expr &gt; args, Attrs attrs=Attrs(), ffi::Array&lt; Type &gt; ty_args=ffi::Array&lt; Type &gt;(), Span span=Span())</td><td class="entry"><a class="el" href="classtvm_1_1Call.html">tvm::Call</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
diff --git a/docs/reference/api/doxygen/classtvm_1_1Call.html b/docs/reference/api/doxygen/classtvm_1_1Call.html
index da4d5008e77..b791002014c 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Call.html
+++ b/docs/reference/api/doxygen/classtvm_1_1Call.html
@@ -88,22 +88,20 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::Call:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1Call__inherit__graph.svg" width="258" height="527"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1Call__inherit__graph.svg" width="230" height="487"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::Call:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1Call__coll__graph.svg" width="258" height="527"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1Call__coll__graph.svg" width="230" height="487"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a3f3f3217c8479486d1f71664ce6860fc" id="r_a3f3f3217c8479486d1f71664ce6860fc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Call.html#a3f3f3217c8479486d1f71664ce6860fc">Call</a> (<a class="el" href="classtvm_1_1Type.html">Type</a> ret_ty, <a class="el" href="classtvm_1_1Expr.html">Expr</a> op, ffi::Array&lt; <a class="el" href="classtvm_1_1Expr.html">Expr</a> &gt; args, <a class="el" [...]
 <tr class="separator:a3f3f3217c8479486d1f71664ce6860fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a26304eac4f5299ac4b4862105a9f5cd5" id="r_a26304eac4f5299ac4b4862105a9f5cd5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Call.html#a26304eac4f5299ac4b4862105a9f5cd5">Call</a> (ffi::ObjectPtr&lt; <a class="el" href="classtvm_1_1CallNode.html">CallNode</a> &gt; node)</td></tr>
-<tr class="separator:a26304eac4f5299ac4b4862105a9f5cd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0f4ec23aeb4d11f55841170c3293e37a" id="r_a0f4ec23aeb4d11f55841170c3293e37a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Call.html#a0f4ec23aeb4d11f55841170c3293e37a">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a> (<a class="el" href="classtvm_1_1Call.html">Call</a>, <a class="el" href="classtvm_1_1Expr.html">Expr</a>, <a class="el" href="classtvm_1_1CallNode.html">CallNode</a>) [...]
-<tr class="separator:a0f4ec23aeb4d11f55841170c3293e37a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4bdf27cf6857f06eacb0c3fc75d72eb3" id="r_a4bdf27cf6857f06eacb0c3fc75d72eb3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Call.html#a4bdf27cf6857f06eacb0c3fc75d72eb3">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a> (<a class="el" href="classtvm_1_1Call.html">Call</a>, <a class="el" href="classtvm_1_1Expr.html">Expr</a>, <a class="el" href="classtvm_1_1CallNode.html">CallNode</a>)</td></tr>
+<tr class="separator:a4bdf27cf6857f06eacb0c3fc75d72eb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ac7f8d11aa54e549a1154d2d2bd25c461" id="r_ac7f8d11aa54e549a1154d2d2bd25c461"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Call.html#ac7f8d11aa54e549a1154d2d2bd25c461">TVM_DEFINE_OBJECT_REF_COW_METHOD</a> (<a class="el" href="classtvm_1_1CallNode.html">CallNode</a>)</td></tr>
 <tr class="separator:ac7f8d11aa54e549a1154d2d2bd25c461"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="inherit_header pub_methods_classtvm_1_1Expr"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtvm_1_1Expr')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td></tr>
@@ -113,10 +111,8 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:a86bd9da75268e479e3bbe61729dce8ac inherit pub_methods_classtvm_1_1Expr"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:afb14020d9ae652a64a6f15dcba073c0e inherit pub_methods_classtvm_1_1Expr" id="r_afb14020d9ae652a64a6f15dcba073c0e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Expr.html#afb14020d9ae652a64a6f15dcba073c0e">operator&lt;</a> (const <a class="el" href="classtvm_1_1Expr.html">Expr</a> &amp;other) const =delete</td></tr>
 <tr class="separator:afb14020d9ae652a64a6f15dcba073c0e inherit pub_methods_classtvm_1_1Expr"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aad84c3380b07b63427dda3697a78b269 inherit pub_methods_classtvm_1_1Expr" id="r_aad84c3380b07b63427dda3697a78b269"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Expr.html#aad84c3380b07b63427dda3697a78b269">Expr</a> (ffi::ObjectPtr&lt; <a class="el" href="classtvm_1_1ExprNode.html">ExprNode</a> &gt; node)</td></tr>
-<tr class="separator:aad84c3380b07b63427dda3697a78b269 inherit pub_methods_classtvm_1_1Expr"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a26775d381ee6e7c7bb65b8a7320f5b87 inherit pub_methods_classtvm_1_1Expr" id="r_a26775d381ee6e7c7bb65b8a7320f5b87"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Expr.html#a26775d381ee6e7c7bb65b8a7320f5b87">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a> (<a class="el" href="classtvm_1_1Expr.html">Expr</a>, ffi::ObjectRef, <a class="el" href="classtvm_1_1ExprNode.html">ExprNode</a>) [...]
-<tr class="separator:a26775d381ee6e7c7bb65b8a7320f5b87 inherit pub_methods_classtvm_1_1Expr"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a081d3512d899e352e81e8eda6385c444 inherit pub_methods_classtvm_1_1Expr" id="r_a081d3512d899e352e81e8eda6385c444"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Expr.html#a081d3512d899e352e81e8eda6385c444">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a> (<a class="el" href="classtvm_1_1Expr.html">Expr</a>, ffi::ObjectRef, <a class="el" href="classtvm_1_1ExprNode.html">ExprNode</a>)</td></tr>
+<tr class="separator:a081d3512d899e352e81e8eda6385c444 inherit pub_methods_classtvm_1_1Expr"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
 Static Public Member Functions</h2></td></tr>
@@ -131,7 +127,7 @@ Static Public Member Functions</h2></td></tr>
 <div class="textblock"><p>Managed reference to <a class="el" href="classtvm_1_1CallNode.html" title="Call corresponds to callable invocation.">CallNode</a>. </p>
 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
 <a id="a3f3f3217c8479486d1f71664ce6860fc" name="a3f3f3217c8479486d1f71664ce6860fc"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a3f3f3217c8479486d1f71664ce6860fc">&#9670;&#160;</a></span>Call() <span class="overload">[1/2]</span></h2>
+<h2 class="memtitle"><span class="permalink"><a href="#a3f3f3217c8479486d1f71664ce6860fc">&#9670;&#160;</a></span>Call()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -180,32 +176,6 @@ Static Public Member Functions</h2></td></tr>
       </table>
 </div><div class="memdoc">
 
-</div>
-</div>
-<a id="a26304eac4f5299ac4b4862105a9f5cd5" name="a26304eac4f5299ac4b4862105a9f5cd5"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a26304eac4f5299ac4b4862105a9f5cd5">&#9670;&#160;</a></span>Call() <span class="overload">[2/2]</span></h2>
-
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">tvm::Call::Call </td>
-          <td>(</td>
-          <td class="paramtype">ffi::ObjectPtr&lt; <a class="el" href="classtvm_1_1CallNode.html">CallNode</a> &gt;&#160;</td>
-          <td class="paramname"><em>node</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
 </div>
 </div>
 <h2 class="groupheader">Member Function Documentation</h2>
@@ -256,14 +226,14 @@ Static Public Member Functions</h2></td></tr>
 
 </div>
 </div>
-<a id="a0f4ec23aeb4d11f55841170c3293e37a" name="a0f4ec23aeb4d11f55841170c3293e37a"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0f4ec23aeb4d11f55841170c3293e37a">&#9670;&#160;</a></span>TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE()</h2>
+<a id="a4bdf27cf6857f06eacb0c3fc75d72eb3" name="a4bdf27cf6857f06eacb0c3fc75d72eb3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4bdf27cf6857f06eacb0c3fc75d72eb3">&#9670;&#160;</a></span>TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE()</h2>
 
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">tvm::Call::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE </td>
+          <td class="memname">tvm::Call::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE </td>
           <td>(</td>
           <td class="paramtype"><a class="el" href="classtvm_1_1Call.html">Call</a>&#160;</td>
           <td class="paramname">, </td>
diff --git a/docs/reference/api/doxygen/classtvm_1_1CallNode-members.html b/docs/reference/api/doxygen/classtvm_1_1CallNode-members.html
index b50172caf5c..24aa80e76ab 100644
--- a/docs/reference/api/doxygen/classtvm_1_1CallNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1CallNode-members.html
@@ -83,8 +83,6 @@ $(function() {
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html#a549f3165583edbbc9a13c6d796e7b298">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1CallNode.html#a323af62ed5243b5db00eb1832f842a1c">args</a></td><td class="entry"><a class="el" href="classtvm_1_1CallNode.html">tvm::CallNode</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1CallNode.html#a188d4ff2d95ff5c39476af05989bc947">attrs</a></td><td class="entry"><a class="el" href="classtvm_1_1CallNode.html">tvm::CallNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1CallNode.html#adf837eb3faa5535c97311eb0f2ccb0e0">CallNode</a>(Expr op)</td><td class="entry"><a class="el" href="classtvm_1_1CallNode.html">tvm::CallNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1CallNode.html#a57b4185bc31d73256e36406cba621bc5">CallNode</a>(ffi::UnsafeInit tag)</td><td class="entry"><a class="el" href="classtvm_1_1CallNode.html">tvm::CallNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1CallNode.html#ac3dfcf0a89d8d88438e3d691fcbb1c5b">op</a></td><td class="entry"><a class="el" href="classtvm_1_1CallNode.html">tvm::CallNode</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1CallNode.html#ade12b95584a1a83b26be6a399eda2e2c">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1CallNode.html">tvm::CallNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html#a52b366cd48d311f2406d86d92991c834">span</a></td><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1CallNode.html b/docs/reference/api/doxygen/classtvm_1_1CallNode.html
index 7aaba210b7c..74bdc65d37a 100644
--- a/docs/reference/api/doxygen/classtvm_1_1CallNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1CallNode.html
@@ -89,20 +89,16 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::CallNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1CallNode__inherit__graph.svg" width="219" height="532"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1CallNode__inherit__graph.svg" width="219" height="492"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::CallNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1CallNode__coll__graph.svg" width="807" height="783"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1CallNode__coll__graph.svg" width="799" height="723"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:adf837eb3faa5535c97311eb0f2ccb0e0" id="r_adf837eb3faa5535c97311eb0f2ccb0e0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1CallNode.html#adf837eb3faa5535c97311eb0f2ccb0e0">CallNode</a> (<a class="el" href="classtvm_1_1Expr.html">Expr</a> <a class="el" href="classtvm_1_1CallNode.html#ac3dfcf0a89d8d88438e3d691fcbb1c5b">op</a>)</td></tr>
-<tr class="separator:adf837eb3faa5535c97311eb0f2ccb0e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a57b4185bc31d73256e36406cba621bc5" id="r_a57b4185bc31d73256e36406cba621bc5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1CallNode.html#a57b4185bc31d73256e36406cba621bc5">CallNode</a> (ffi::UnsafeInit tag)</td></tr>
-<tr class="separator:a57b4185bc31d73256e36406cba621bc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a42c51a5b545660d81ba92cb39ad4382c" id="r_a42c51a5b545660d81ba92cb39ad4382c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1CallNode.html#a42c51a5b545660d81ba92cb39ad4382c">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a> (&quot;ir.Call&quot;, <a class="el" href="classtvm_1_1CallNode.html">CallNode</a>, <a class="el" href="classtvm_1_1ExprNode.html">ExprNode</a>)</td></tr>
 <tr class="separator:a42c51a5b545660d81ba92cb39ad4382c"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="inherit_header pub_methods_classtvm_1_1ExprNode"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtvm_1_1ExprNode')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></td></tr>
@@ -149,60 +145,7 @@ Additional Inherited Members</h2></td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p><a class="el" href="classtvm_1_1Call.html" title="Managed reference to CallNode.">Call</a> corresponds to callable invocation. </p>
-</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a id="adf837eb3faa5535c97311eb0f2ccb0e0" name="adf837eb3faa5535c97311eb0f2ccb0e0"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#adf837eb3faa5535c97311eb0f2ccb0e0">&#9670;&#160;</a></span>CallNode() <span class="overload">[1/2]</span></h2>
-
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">tvm::CallNode::CallNode </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1Expr.html">Expr</a>&#160;</td>
-          <td class="paramname"><em>op</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a id="a57b4185bc31d73256e36406cba621bc5" name="a57b4185bc31d73256e36406cba621bc5"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a57b4185bc31d73256e36406cba621bc5">&#9670;&#160;</a></span>CallNode() <span class="overload">[2/2]</span></h2>
-
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">tvm::CallNode::CallNode </td>
-          <td>(</td>
-          <td class="paramtype">ffi::UnsafeInit&#160;</td>
-          <td class="paramname"><em>tag</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<h2 class="groupheader">Member Function Documentation</h2>
+</div><h2 class="groupheader">Member Function Documentation</h2>
 <a id="ade12b95584a1a83b26be6a399eda2e2c" name="ade12b95584a1a83b26be6a399eda2e2c"></a>
 <h2 class="memtitle"><span class="permalink"><a href="#ade12b95584a1a83b26be6a399eda2e2c">&#9670;&#160;</a></span>RegisterReflection()</h2>
 
diff --git a/docs/reference/api/doxygen/classtvm_1_1CallNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1CallNode__coll__graph.svg
index 2b12aa1e4b5..12335a978f9 100644
--- a/docs/reference/api/doxygen/classtvm_1_1CallNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1CallNode__coll__graph.svg
@@ -4,33 +4,29 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::CallNode Pages: 1 -->
-<svg width="605pt" height="587pt"
- viewBox="0.00 0.00 605.00 587.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 583)">
+<svg width="599pt" height="542pt"
+ viewBox="0.00 0.00 599.00 542.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 538)">
 <title>tvm::CallNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="Call corresponds to callable invocation.">
-<polygon fill="#999999" stroke="transparent" points="413,-120 257,-120 257,0 413,0 413,-120"/>
-<text text-anchor="start" x="300" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::CallNode</text>
-<text text-anchor="start" x="261" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="274" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">args</text>
-<text text-anchor="start" x="261" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="274" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">ty_args</text>
-<text text-anchor="start" x="261" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="274" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">CallNode()</text>
-<text text-anchor="start" x="261" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="274" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">CallNode()</text>
-<text text-anchor="start" x="261" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="274" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="274" y="-22" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="261" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="274" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="257,-103 257,-103 413,-103 413,-103 257,-103"/>
-<polygon fill="#666666" stroke="#666666" points="257,-73 257,-73 272,-73 272,-73 257,-73"/>
-<polygon fill="#666666" stroke="#666666" points="272,-73 272,-73 413,-73 413,-73 272,-73"/>
-<polygon fill="none" stroke="#666666" points="257,0 257,-120 413,-120 413,0 257,0"/>
+<polygon fill="#999999" stroke="transparent" points="418,-90 262,-90 262,0 418,0 418,-90"/>
+<text text-anchor="start" x="305" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::CallNode</text>
+<text text-anchor="start" x="266" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="279" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">args</text>
+<text text-anchor="start" x="266" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="279" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">ty_args</text>
+<text text-anchor="start" x="266" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="279" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="279" y="-22" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="266" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="279" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="262,-73 262,-73 418,-73 418,-73 262,-73"/>
+<polygon fill="#666666" stroke="#666666" points="262,-43 262,-43 277,-43 277,-43 262,-43"/>
+<polygon fill="#666666" stroke="#666666" points="277,-43 277,-43 418,-43 418,-43 277,-43"/>
+<polygon fill="none" stroke="#666666" points="262,0 262,-90 418,-90 418,0 262,0"/>
 </a>
 </g>
 </g>
@@ -38,21 +34,21 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1ExprNode.html" target="_top" xlink:title="Base type of all the expressions.">
-<polygon fill="white" stroke="transparent" points="265,-247 109,-247 109,-157 265,-157 265,-247"/>
-<text text-anchor="start" x="150.5" y="-235" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ExprNode</text>
-<text text-anchor="start" x="113" y="-220" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="126" y="-220" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
-<text text-anchor="start" x="113" y="-205" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="126" y="-205" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
-<text text-anchor="start" x="113" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="126" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="126" y="-179" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="113" y="-164" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="126" y="-164" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="109,-230 109,-230 265,-230 265,-230 109,-230"/>
-<polygon fill="#666666" stroke="#666666" points="109,-200 109,-200 124,-200 124,-200 109,-200"/>
-<polygon fill="#666666" stroke="#666666" points="124,-200 124,-200 265,-200 265,-200 124,-200"/>
-<polygon fill="none" stroke="#666666" points="109,-157 109,-247 265,-247 265,-157 109,-157"/>
+<polygon fill="white" stroke="transparent" points="270,-217 114,-217 114,-127 270,-127 270,-217"/>
+<text text-anchor="start" x="155.5" y="-205" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ExprNode</text>
+<text text-anchor="start" x="118" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="131" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="118" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="131" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="118" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="131" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="131" y="-149" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<text text-anchor="start" x="118" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="131" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="114,-200 114,-200 270,-200 270,-200 114,-200"/>
+<polygon fill="#666666" stroke="#666666" points="114,-170 114,-170 129,-170 129,-170 114,-170"/>
+<polygon fill="#666666" stroke="#666666" points="129,-170 129,-170 270,-170 270,-170 129,-170"/>
+<polygon fill="none" stroke="#666666" points="114,-127 114,-217 270,-217 270,-127 114,-127"/>
 </a>
 </g>
 </g>
@@ -60,8 +56,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M241.14,-149.78C251.34,-140.14 262.08,-129.98 272.5,-120.12"/>
-<polygon fill="none" stroke="#63b8ff" points="238.69,-147.29 233.83,-156.7 243.5,-152.37 238.69,-147.29"/>
+<path fill="none" stroke="#63b8ff" d="M251.91,-120.4C263.79,-110.36 276.19,-99.9 287.79,-90.09"/>
+<polygon fill="none" stroke="#63b8ff" points="249.56,-117.8 244.18,-126.93 254.08,-123.15 249.56,-117.8"/>
 </a>
 </g>
 </g>
@@ -69,13 +65,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="58,-472.5 0,-472.5 0,-423.5 58,-423.5 58,-472.5"/>
-<text text-anchor="start" x="5" y="-460" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="27" y="-445" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="27" y="-430" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="0,-455 0,-455 58,-455 58,-455 0,-455"/>
-<polygon fill="#666666" stroke="#666666" points="0,-440 0,-440 58,-440 58,-440 0,-440"/>
-<polygon fill="none" stroke="#666666" points="0,-423.5 0,-472.5 58,-472.5 58,-423.5 0,-423.5"/>
+<polygon fill="white" stroke="transparent" points="58,-427.5 0,-427.5 0,-378.5 58,-378.5 58,-427.5"/>
+<text text-anchor="start" x="5" y="-415" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="27" y="-400" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="27" y="-385" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="0,-410 0,-410 58,-410 58,-410 0,-410"/>
+<polygon fill="#666666" stroke="#666666" points="0,-395 0,-395 58,-395 58,-395 0,-395"/>
+<polygon fill="none" stroke="#666666" points="0,-378.5 0,-427.5 58,-427.5 58,-378.5 0,-378.5"/>
 </a>
 </g>
 </g>
@@ -83,8 +79,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M49.88,-414.76C77.74,-371.73 127.2,-295.35 158.48,-247.04"/>
-<polygon fill="none" stroke="#63b8ff" points="46.93,-412.86 44.44,-423.16 52.81,-416.67 46.93,-412.86"/>
+<path fill="none" stroke="#63b8ff" d="M51.72,-370.07C80.05,-330.28 128.62,-262.04 160.52,-217.23"/>
+<polygon fill="none" stroke="#63b8ff" points="48.78,-368.18 45.83,-378.36 54.48,-372.24 48.78,-368.18"/>
 </a>
 </g>
 </g>
@@ -92,19 +88,19 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="240,-493 76,-493 76,-403 240,-403 240,-493"/>
-<text text-anchor="start" x="133" y="-481" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<text text-anchor="start" x="156" y="-466" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="80" y="-451" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-451" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
-<text text-anchor="start" x="80" y="-436" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-436" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
-<text text-anchor="start" x="80" y="-421" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-421" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="93" y="-410" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="76,-476 76,-476 240,-476 240,-476 76,-476"/>
-<polygon fill="#666666" stroke="#666666" points="76,-461 76,-461 240,-461 240,-461 76,-461"/>
-<polygon fill="none" stroke="#666666" points="76,-403 76,-493 240,-493 240,-403 76,-403"/>
+<polygon fill="white" stroke="transparent" points="240,-448 76,-448 76,-358 240,-358 240,-448"/>
+<text text-anchor="start" x="133" y="-436" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<text text-anchor="start" x="156" y="-421" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="80" y="-406" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-406" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
+<text text-anchor="start" x="80" y="-391" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-391" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
+<text text-anchor="start" x="80" y="-376" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-376" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="93" y="-365" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="76,-431 76,-431 240,-431 240,-431 76,-431"/>
+<polygon fill="#666666" stroke="#666666" points="76,-416 76,-416 240,-416 240,-416 76,-416"/>
+<polygon fill="none" stroke="#666666" points="76,-358 76,-448 240,-448 240,-358 76,-358"/>
 </a>
 </g>
 </g>
@@ -112,23 +108,23 @@
 <g id="edge3_Node000002_Node000004" class="edge">
 <title>Node4&#45;&gt;Node2</title>
 <g id="a_edge3_Node000002_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M153.15,-402.67C150.28,-365.47 148.93,-311.15 159,-265 159.44,-262.98 159.95,-260.94 160.53,-258.9"/>
-<polygon fill="none" stroke="#63b8ff" points="160.6,-258.67 158.68,-251.72 164.36,-247.28 166.28,-254.23 160.6,-258.67"/>
+<path fill="none" stroke="#63b8ff" d="M158.97,-357.66C160.36,-323.78 163.77,-276.08 172,-235 172.41,-232.98 172.85,-230.93 173.34,-228.87"/>
+<polygon fill="none" stroke="#63b8ff" points="173.4,-228.65 171.05,-221.83 176.44,-217.04 178.79,-223.86 173.4,-228.65"/>
 </a>
 </g>
-<text text-anchor="middle" x="176.5" y="-322.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
+<text text-anchor="middle" x="189.5" y="-285" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
 </g>
 <!-- Node5 -->
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="478,-579 404,-579 404,-530 478,-530 478,-579"/>
-<text text-anchor="start" x="409" y="-566.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="439" y="-551.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="439" y="-536.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="404,-561.5 404,-561.5 478,-561.5 478,-561.5 404,-561.5"/>
-<polygon fill="#666666" stroke="#666666" points="404,-546.5 404,-546.5 478,-546.5 478,-546.5 404,-546.5"/>
-<polygon fill="none" stroke="#666666" points="404,-530 404,-579 478,-579 478,-530 404,-530"/>
+<polygon fill="white" stroke="transparent" points="478,-534 404,-534 404,-485 478,-485 478,-534"/>
+<text text-anchor="start" x="409" y="-521.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="439" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="439" y="-491.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="404,-516.5 404,-516.5 478,-516.5 478,-516.5 404,-516.5"/>
+<polygon fill="#666666" stroke="#666666" points="404,-501.5 404,-501.5 478,-501.5 478,-501.5 404,-501.5"/>
+<polygon fill="none" stroke="#666666" points="404,-485 404,-534 478,-534 478,-485 404,-485"/>
 </a>
 </g>
 </g>
@@ -136,8 +132,8 @@
 <g id="edge4_Node000004_Node000005" class="edge">
 <title>Node5&#45;&gt;Node4</title>
 <g id="a_edge4_Node000004_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M394.16,-540.8C354.88,-529.67 297.56,-512.27 249,-493 246.06,-491.83 243.09,-490.62 240.1,-489.36"/>
-<polygon fill="none" stroke="#63b8ff" points="393.42,-544.23 404,-543.57 395.32,-537.49 393.42,-544.23"/>
+<path fill="none" stroke="#63b8ff" d="M394.16,-495.8C354.88,-484.67 297.56,-467.27 249,-448 246.06,-446.83 243.09,-445.62 240.1,-444.36"/>
+<polygon fill="none" stroke="#63b8ff" points="393.42,-499.23 404,-498.57 395.32,-492.49 393.42,-499.23"/>
 </a>
 </g>
 </g>
@@ -145,19 +141,19 @@
 <g id="Node000006" class="node">
 <title>Node6</title>
 <g id="a_Node000006"><a xlink:href="classtvm_1_1Type.html" target="_top" xlink:title="Managed reference to TypeNode.">
-<polygon fill="white" stroke="transparent" points="443.5,-493 258.5,-493 258.5,-403 443.5,-403 443.5,-493"/>
-<text text-anchor="start" x="327" y="-481" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
-<text text-anchor="start" x="349.5" y="-466" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="263" y="-451" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="276" y="-451" font-family="Helvetica,sans-Serif" font-size="10.00">IsMissing()</text>
-<text text-anchor="start" x="263" y="-436" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="276" y="-436" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="276" y="-425" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="263" y="-410" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="276" y="-410" font-family="Helvetica,sans-Serif" font-size="10.00">Missing()</text>
-<polygon fill="#666666" stroke="#666666" points="259,-476 259,-476 444,-476 444,-476 259,-476"/>
-<polygon fill="#666666" stroke="#666666" points="259,-461 259,-461 444,-461 444,-461 259,-461"/>
-<polygon fill="none" stroke="#666666" points="258.5,-403 258.5,-493 443.5,-493 443.5,-403 258.5,-403"/>
+<polygon fill="white" stroke="transparent" points="443.5,-448 258.5,-448 258.5,-358 443.5,-358 443.5,-448"/>
+<text text-anchor="start" x="327" y="-436" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
+<text text-anchor="start" x="349.5" y="-421" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="263" y="-406" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="276" y="-406" font-family="Helvetica,sans-Serif" font-size="10.00">IsMissing()</text>
+<text text-anchor="start" x="263" y="-391" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="276" y="-391" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="276" y="-380" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
+<text text-anchor="start" x="263" y="-365" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="276" y="-365" font-family="Helvetica,sans-Serif" font-size="10.00">Missing()</text>
+<polygon fill="#666666" stroke="#666666" points="259,-431 259,-431 444,-431 444,-431 259,-431"/>
+<polygon fill="#666666" stroke="#666666" points="259,-416 259,-416 444,-416 444,-416 259,-416"/>
+<polygon fill="none" stroke="#666666" points="258.5,-358 258.5,-448 443.5,-448 443.5,-358 258.5,-358"/>
 </a>
 </g>
 </g>
@@ -165,8 +161,8 @@
 <g id="edge6_Node000006_Node000005" class="edge">
 <title>Node5&#45;&gt;Node6</title>
 <g id="a_edge6_Node000006_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M413.95,-522.09C406.12,-513 397.42,-502.9 389.05,-493.18"/>
-<polygon fill="none" stroke="#63b8ff" points="411.4,-524.49 420.58,-529.79 416.7,-519.93 411.4,-524.49"/>
+<path fill="none" stroke="#63b8ff" d="M413.95,-477.09C406.12,-468 397.42,-457.9 389.05,-448.18"/>
+<polygon fill="none" stroke="#63b8ff" points="411.4,-479.49 420.58,-484.79 416.7,-474.93 411.4,-479.49"/>
 </a>
 </g>
 </g>
@@ -174,23 +170,21 @@
 <g id="Node000007" class="node">
 <title>Node7</title>
 <g id="a_Node000007"><a xlink:href="classtvm_1_1Expr.html" target="_top" xlink:title="Managed reference to ExprNode.">
-<polygon fill="white" stroke="transparent" points="427.5,-385 242.5,-385 242.5,-265 427.5,-265 427.5,-385"/>
-<text text-anchor="start" x="311.5" y="-373" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
-<text text-anchor="start" x="333.5" y="-358" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="247" y="-343" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="260" y="-343" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
-<text text-anchor="start" x="247" y="-328" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="260" y="-328" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
-<text text-anchor="start" x="247" y="-313" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="260" y="-313" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
-<text text-anchor="start" x="247" y="-298" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="260" y="-298" font-family="Helvetica,sans-Serif" font-size="10.00">Expr()</text>
-<text text-anchor="start" x="247" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="260" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="260" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="243,-368 243,-368 428,-368 428,-368 243,-368"/>
-<polygon fill="#666666" stroke="#666666" points="243,-353 243,-353 428,-353 428,-353 243,-353"/>
-<polygon fill="none" stroke="#666666" points="242.5,-265 242.5,-385 427.5,-385 427.5,-265 242.5,-265"/>
+<polygon fill="white" stroke="transparent" points="422,-340 258,-340 258,-235 422,-235 422,-340"/>
+<text text-anchor="start" x="316" y="-327.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
+<text text-anchor="start" x="338" y="-312.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="262" y="-297.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-297.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
+<text text-anchor="start" x="262" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
+<text text-anchor="start" x="262" y="-267.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-267.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
+<text text-anchor="start" x="262" y="-252.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-252.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="275" y="-241.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="258,-322.5 258,-322.5 422,-322.5 422,-322.5 258,-322.5"/>
+<polygon fill="#666666" stroke="#666666" points="258,-307.5 258,-307.5 422,-307.5 422,-307.5 258,-307.5"/>
+<polygon fill="none" stroke="#666666" points="258,-235 258,-340 422,-340 422,-235 258,-235"/>
 </a>
 </g>
 </g>
@@ -198,8 +192,8 @@
 <g id="edge8_Node000007_Node000005" class="edge">
 <title>Node5&#45;&gt;Node7</title>
 <g id="a_edge8_Node000007_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M453.25,-520.19C462.86,-488.17 471.63,-439.42 452,-403 450,-399.28 440.46,-391.91 427.62,-383.13"/>
-<polygon fill="none" stroke="#63b8ff" points="449.84,-519.36 450.14,-529.95 456.51,-521.49 449.84,-519.36"/>
+<path fill="none" stroke="#63b8ff" d="M453.47,-475.07C463.23,-442.97 472.11,-394.15 452,-358 450.83,-355.9 438.37,-347.7 422.16,-337.62"/>
+<polygon fill="none" stroke="#63b8ff" points="450.04,-474.27 450.3,-484.87 456.71,-476.43 450.04,-474.27"/>
 </a>
 </g>
 </g>
@@ -207,15 +201,15 @@
 <g id="Node000008" class="node">
 <title>Node8</title>
 <g id="a_Node000008"><a xlink:href="classtvm_1_1Attrs.html" target="_top" xlink:title="Managed reference to AttrsNode.">
-<polygon fill="white" stroke="transparent" points="597,-355 433,-355 433,-295 597,-295 597,-355"/>
-<text text-anchor="start" x="490.5" y="-343" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
-<text text-anchor="start" x="513" y="-328" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="437" y="-313" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="450" y="-313" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="450" y="-302" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="433,-338 433,-338 597,-338 597,-338 433,-338"/>
-<polygon fill="#666666" stroke="#666666" points="433,-323 433,-323 597,-323 597,-323 433,-323"/>
-<polygon fill="none" stroke="#666666" points="433,-295 433,-355 597,-355 597,-295 433,-295"/>
+<polygon fill="white" stroke="transparent" points="591,-317.5 427,-317.5 427,-257.5 591,-257.5 591,-317.5"/>
+<text text-anchor="start" x="484.5" y="-305.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
+<text text-anchor="start" x="507" y="-290.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="431" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="444" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="444" y="-264.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="427,-300.5 427,-300.5 591,-300.5 591,-300.5 427,-300.5"/>
+<polygon fill="#666666" stroke="#666666" points="427,-285.5 427,-285.5 591,-285.5 591,-285.5 427,-285.5"/>
+<polygon fill="none" stroke="#666666" points="427,-257.5 427,-317.5 591,-317.5 591,-257.5 427,-257.5"/>
 </a>
 </g>
 </g>
@@ -223,8 +217,8 @@
 <g id="edge10_Node000008_Node000005" class="edge">
 <title>Node5&#45;&gt;Node8</title>
 <g id="a_edge10_Node000008_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M478.26,-522.21C480.81,-518.97 483.12,-515.55 485,-512 511.72,-461.57 515.96,-393.47 515.94,-355.22"/>
-<polygon fill="none" stroke="#63b8ff" points="475.47,-520.08 471.48,-529.9 480.72,-524.71 475.47,-520.08"/>
+<path fill="none" stroke="#63b8ff" d="M478.36,-477.27C480.89,-474.01 483.16,-470.58 485,-467 509.63,-419.01 511.96,-354.65 510.87,-317.77"/>
+<polygon fill="none" stroke="#63b8ff" points="475.57,-475.14 471.61,-484.97 480.84,-479.75 475.57,-475.14"/>
 </a>
 </g>
 </g>
@@ -232,31 +226,31 @@
 <g id="edge5_Node000002_Node000006" class="edge">
 <title>Node6&#45;&gt;Node2</title>
 <g id="a_edge5_Node000002_Node000006"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M258.34,-406.96C232.93,-395.79 211.98,-386.31 211,-385 209.09,-382.45 200.17,-311.85 193.77,-259.35"/>
-<polygon fill="none" stroke="#63b8ff" points="193.73,-259.03 189.03,-253.56 192.28,-247.12 196.98,-252.59 193.73,-259.03"/>
+<path fill="none" stroke="#63b8ff" d="M258.4,-362.34C243.99,-354.62 232.16,-346.81 227,-340 198.34,-302.12 217.03,-281.43 207,-235 206.59,-233.12 206.17,-231.2 205.74,-229.27"/>
+<polygon fill="none" stroke="#63b8ff" points="205.68,-229 200.44,-224.05 203,-217.31 208.24,-222.26 205.68,-229"/>
 </a>
 </g>
-<text text-anchor="middle" x="222" y="-322.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +ty</text>
+<text text-anchor="middle" x="238" y="-285" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +ty</text>
 </g>
 <!-- Node7&#45;&gt;Node1 -->
 <g id="edge7_Node000001_Node000007" class="edge">
 <title>Node7&#45;&gt;Node1</title>
 <g id="a_edge7_Node000001_Node000007"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M335,-264.98C335,-225.78 335,-174.08 335,-132.54"/>
-<polygon fill="none" stroke="#63b8ff" points="335,-132.28 331,-126.28 335,-120.28 339,-126.28 335,-132.28"/>
+<path fill="none" stroke="#63b8ff" d="M340,-234.91C340,-195.97 340,-142.58 340,-102.49"/>
+<polygon fill="none" stroke="#63b8ff" points="340,-102.24 336,-96.24 340,-90.24 344,-96.24 340,-102.24"/>
 </a>
 </g>
-<text text-anchor="middle" x="347" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +op</text>
+<text text-anchor="middle" x="352" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +op</text>
 </g>
 <!-- Node8&#45;&gt;Node1 -->
 <g id="edge9_Node000001_Node000008" class="edge">
 <title>Node8&#45;&gt;Node1</title>
 <g id="a_edge9_Node000001_Node000008"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M495.05,-294.85C468.05,-255.4 419.03,-183.78 382.33,-130.16"/>
-<polygon fill="none" stroke="#63b8ff" points="382.18,-129.93 375.49,-127.24 375.4,-120.03 382.09,-122.72 382.18,-129.93"/>
+<path fill="none" stroke="#63b8ff" d="M488.61,-257.49C461.32,-218.65 412.38,-149 378.14,-100.28"/>
+<polygon fill="none" stroke="#63b8ff" points="377.97,-100.04 371.25,-97.43 371.07,-90.22 377.8,-92.83 377.97,-100.04"/>
 </a>
 </g>
-<text text-anchor="middle" x="478" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +attrs</text>
+<text text-anchor="middle" x="477" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +attrs</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1CallNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1CallNode__inherit__graph.svg
index 451031f4d1d..a940012941b 100644
--- a/docs/reference/api/doxygen/classtvm_1_1CallNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1CallNode__inherit__graph.svg
@@ -4,37 +4,33 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::CallNode Pages: 1 -->
-<svg width="164pt" height="399pt"
- viewBox="0.00 0.00 164.00 399.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 395)">
+<svg width="164pt" height="369pt"
+ viewBox="0.00 0.00 164.00 369.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 365)">
 <title>tvm::CallNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="Call corresponds to callable invocation.">
-<polygon fill="#999999" stroke="transparent" points="156,-150 0,-150 0,0 156,0 156,-150"/>
-<text text-anchor="start" x="43" y="-138" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::CallNode</text>
-<text text-anchor="start" x="4" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00">op</text>
-<text text-anchor="start" x="4" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00">args</text>
+<polygon fill="#999999" stroke="transparent" points="156,-120 0,-120 0,0 156,0 156,-120"/>
+<text text-anchor="start" x="43" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::CallNode</text>
 <text text-anchor="start" x="4" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">attrs</text>
+<text text-anchor="start" x="17" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">op</text>
 <text text-anchor="start" x="4" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">ty_args</text>
+<text text-anchor="start" x="17" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">args</text>
 <text text-anchor="start" x="4" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">CallNode()</text>
+<text text-anchor="start" x="17" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">attrs</text>
 <text text-anchor="start" x="4" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">CallNode()</text>
+<text text-anchor="start" x="17" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">ty_args</text>
 <text text-anchor="start" x="4" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
 <text text-anchor="start" x="17" y="-22" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
 <text text-anchor="start" x="4" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-133 0,-133 156,-133 156,-133 0,-133"/>
-<polygon fill="#666666" stroke="#666666" points="0,-73 0,-73 15,-73 15,-73 0,-73"/>
-<polygon fill="#666666" stroke="#666666" points="15,-73 15,-73 156,-73 156,-73 15,-73"/>
-<polygon fill="none" stroke="#666666" points="0,0 0,-150 156,-150 156,0 0,0"/>
+<polygon fill="#666666" stroke="#666666" points="0,-103 0,-103 156,-103 156,-103 0,-103"/>
+<polygon fill="#666666" stroke="#666666" points="0,-43 0,-43 15,-43 15,-43 0,-43"/>
+<polygon fill="#666666" stroke="#666666" points="15,-43 15,-43 156,-43 156,-43 15,-43"/>
+<polygon fill="none" stroke="#666666" points="0,0 0,-120 156,-120 156,0 0,0"/>
 </a>
 </g>
 </g>
@@ -42,25 +38,25 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1ExprNode.html" target="_top" xlink:title="Base type of all the expressions.">
-<polygon fill="white" stroke="transparent" points="156,-306 0,-306 0,-186 156,-186 156,-306"/>
-<text text-anchor="start" x="41.5" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ExprNode</text>
-<text text-anchor="start" x="4" y="-279" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-279" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
-<text text-anchor="start" x="4" y="-264" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-264" font-family="Helvetica,sans-Serif" font-size="10.00">ty</text>
+<polygon fill="white" stroke="transparent" points="156,-276 0,-276 0,-156 156,-156 156,-276"/>
+<text text-anchor="start" x="41.5" y="-264" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ExprNode</text>
 <text text-anchor="start" x="4" y="-249" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-249" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="17" y="-249" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
 <text text-anchor="start" x="4" y="-234" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-234" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="17" y="-234" font-family="Helvetica,sans-Serif" font-size="10.00">ty</text>
 <text text-anchor="start" x="4" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="17" y="-208" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="4" y="-193" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-193" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-289 0,-289 156,-289 156,-289 0,-289"/>
-<polygon fill="#666666" stroke="#666666" points="0,-229 0,-229 15,-229 15,-229 0,-229"/>
-<polygon fill="#666666" stroke="#666666" points="15,-229 15,-229 156,-229 156,-229 15,-229"/>
-<polygon fill="none" stroke="#666666" points="0,-186 0,-306 156,-306 156,-186 0,-186"/>
+<text text-anchor="start" x="17" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-204" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-204" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="4" y="-189" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-189" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="17" y="-178" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<text text-anchor="start" x="4" y="-163" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-163" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-259 0,-259 156,-259 156,-259 0,-259"/>
+<polygon fill="#666666" stroke="#666666" points="0,-199 0,-199 15,-199 15,-199 0,-199"/>
+<polygon fill="#666666" stroke="#666666" points="15,-199 15,-199 156,-199 156,-199 15,-199"/>
+<polygon fill="none" stroke="#666666" points="0,-156 0,-276 156,-276 156,-156 0,-156"/>
 </a>
 </g>
 </g>
@@ -68,8 +64,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-175.75C78,-167.34 78,-158.71 78,-150.23"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-175.89 78,-185.89 81.5,-175.89 74.5,-175.89"/>
+<path fill="none" stroke="#63b8ff" d="M78,-145.63C78,-137.14 78,-128.52 78,-120.2"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-145.9 78,-155.9 81.5,-145.9 74.5,-145.9"/>
 </a>
 </g>
 </g>
@@ -77,13 +73,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="107,-391 49,-391 49,-342 107,-342 107,-391"/>
-<text text-anchor="start" x="54" y="-378.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="76" y="-363.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="76" y="-348.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="49,-373.5 49,-373.5 107,-373.5 107,-373.5 49,-373.5"/>
-<polygon fill="#666666" stroke="#666666" points="49,-358.5 49,-358.5 107,-358.5 107,-358.5 49,-358.5"/>
-<polygon fill="none" stroke="#666666" points="49,-342 49,-391 107,-391 107,-342 49,-342"/>
+<polygon fill="white" stroke="transparent" points="107,-361 49,-361 49,-312 107,-312 107,-361"/>
+<text text-anchor="start" x="54" y="-348.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="76" y="-333.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="76" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="49,-343.5 49,-343.5 107,-343.5 107,-343.5 49,-343.5"/>
+<polygon fill="#666666" stroke="#666666" points="49,-328.5 49,-328.5 107,-328.5 107,-328.5 49,-328.5"/>
+<polygon fill="none" stroke="#666666" points="49,-312 49,-361 107,-361 107,-312 49,-312"/>
 </a>
 </g>
 </g>
@@ -91,8 +87,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-331.59C78,-323.71 78,-315.09 78,-306.47"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-331.8 78,-341.8 81.5,-331.8 74.5,-331.8"/>
+<path fill="none" stroke="#63b8ff" d="M78,-301.59C78,-293.71 78,-285.09 78,-276.47"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-301.8 78,-311.8 81.5,-301.8 74.5,-301.8"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1Call__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1Call__coll__graph.svg
index eab0a9d9f3a..4592f92bf17 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Call__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1Call__coll__graph.svg
@@ -4,34 +4,32 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::Call Pages: 1 -->
-<svg width="193pt" height="395pt"
- viewBox="0.00 0.00 193.00 395.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 391)">
+<svg width="172pt" height="365pt"
+ viewBox="0.00 0.00 172.00 365.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 361)">
 <title>tvm::Call</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="Managed reference to CallNode.">
-<polygon fill="#999999" stroke="transparent" points="185,-146 0,-146 0,0 185,0 185,-146"/>
-<text text-anchor="start" x="70.5" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Call</text>
-<text text-anchor="start" x="91" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-104" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-104" font-family="Helvetica,sans-Serif" font-size="10.00">Call()</text>
-<text text-anchor="start" x="4.5" y="-89" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-89" font-family="Helvetica,sans-Serif" font-size="10.00">Call()</text>
-<text text-anchor="start" x="4.5" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="4.5" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="17.5" y="-37" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<text text-anchor="start" x="4.5" y="-22" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-22" font-family="Helvetica,sans-Serif" font-size="10.00">Unchecked()</text>
-<text text-anchor="start" x="4.5" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">ReinferType()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-129 0.5,-129 185.5,-129 185.5,-129 0.5,-129"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-114 0.5,-114 185.5,-114 185.5,-114 0.5,-114"/>
-<polygon fill="none" stroke="#666666" points="0,0 0,-146 185,-146 185,0 0,0"/>
+<polygon fill="#999999" stroke="transparent" points="164,-131 0,-131 0,0 164,0 164,-131"/>
+<text text-anchor="start" x="59.5" y="-118.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Call</text>
+<text text-anchor="start" x="80" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">Call()</text>
+<text text-anchor="start" x="4" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="17" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="4" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="17" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<text text-anchor="start" x="4" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">Unchecked()</text>
+<text text-anchor="start" x="4" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">ReinferType()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-113.5 0,-113.5 164,-113.5 164,-113.5 0,-113.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-98.5 0,-98.5 164,-98.5 164,-98.5 0,-98.5"/>
+<polygon fill="none" stroke="#666666" points="0,0 0,-131 164,-131 164,0 0,0"/>
 </a>
 </g>
 </g>
@@ -39,23 +37,21 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1Expr.html" target="_top" xlink:title="Managed reference to ExprNode.">
-<polygon fill="white" stroke="transparent" points="185,-302 0,-302 0,-182 185,-182 185,-302"/>
-<text text-anchor="start" x="69" y="-290" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
-<text text-anchor="start" x="91" y="-275" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-260" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-260" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
-<text text-anchor="start" x="4.5" y="-245" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-245" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
-<text text-anchor="start" x="4.5" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
-<text text-anchor="start" x="4.5" y="-215" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-215" font-family="Helvetica,sans-Serif" font-size="10.00">Expr()</text>
-<text text-anchor="start" x="4.5" y="-200" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-200" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-189" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-285 0.5,-285 185.5,-285 185.5,-285 0.5,-285"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-270 0.5,-270 185.5,-270 185.5,-270 0.5,-270"/>
-<polygon fill="none" stroke="#666666" points="0,-182 0,-302 185,-302 185,-182 0,-182"/>
+<polygon fill="white" stroke="transparent" points="164,-272 0,-272 0,-167 164,-167 164,-272"/>
+<text text-anchor="start" x="58" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
+<text text-anchor="start" x="80" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
+<text text-anchor="start" x="4" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
+<text text-anchor="start" x="4" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
+<text text-anchor="start" x="4" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="17" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-254.5 0,-254.5 164,-254.5 164,-254.5 0,-254.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-239.5 0,-239.5 164,-239.5 164,-239.5 0,-239.5"/>
+<polygon fill="none" stroke="#666666" points="0,-167 0,-272 164,-272 164,-167 0,-167"/>
 </a>
 </g>
 </g>
@@ -63,8 +59,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M92.5,-171.51C92.5,-163.09 92.5,-154.48 92.5,-146.03"/>
-<polygon fill="none" stroke="#63b8ff" points="89,-171.65 92.5,-181.65 96,-171.65 89,-171.65"/>
+<path fill="none" stroke="#63b8ff" d="M82,-156.52C82,-148.13 82,-139.49 82,-131.06"/>
+<polygon fill="none" stroke="#63b8ff" points="78.5,-156.62 82,-166.62 85.5,-156.62 78.5,-156.62"/>
 </a>
 </g>
 </g>
@@ -72,13 +68,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="129.5,-387 55.5,-387 55.5,-338 129.5,-338 129.5,-387"/>
-<text text-anchor="start" x="60.5" y="-374.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="90.5" y="-359.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="90.5" y="-344.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="55.5,-369.5 55.5,-369.5 129.5,-369.5 129.5,-369.5 55.5,-369.5"/>
-<polygon fill="#666666" stroke="#666666" points="55.5,-354.5 55.5,-354.5 129.5,-354.5 129.5,-354.5 55.5,-354.5"/>
-<polygon fill="none" stroke="#666666" points="55.5,-338 55.5,-387 129.5,-387 129.5,-338 55.5,-338"/>
+<polygon fill="white" stroke="transparent" points="119,-357 45,-357 45,-308 119,-308 119,-357"/>
+<text text-anchor="start" x="50" y="-344.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="80" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="80" y="-314.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="45,-339.5 45,-339.5 119,-339.5 119,-339.5 45,-339.5"/>
+<polygon fill="#666666" stroke="#666666" points="45,-324.5 45,-324.5 119,-324.5 119,-324.5 45,-324.5"/>
+<polygon fill="none" stroke="#666666" points="45,-308 45,-357 119,-357 119,-308 45,-308"/>
 </a>
 </g>
 </g>
@@ -86,8 +82,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M92.5,-327.59C92.5,-319.71 92.5,-311.09 92.5,-302.47"/>
-<polygon fill="none" stroke="#63b8ff" points="89,-327.8 92.5,-337.8 96,-327.8 89,-327.8"/>
+<path fill="none" stroke="#63b8ff" d="M82,-297.85C82,-289.79 82,-281 82,-272.32"/>
+<polygon fill="none" stroke="#63b8ff" points="78.5,-297.96 82,-307.96 85.5,-297.96 78.5,-297.96"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1Call__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1Call__inherit__graph.svg
index eab0a9d9f3a..4592f92bf17 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Call__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1Call__inherit__graph.svg
@@ -4,34 +4,32 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::Call Pages: 1 -->
-<svg width="193pt" height="395pt"
- viewBox="0.00 0.00 193.00 395.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 391)">
+<svg width="172pt" height="365pt"
+ viewBox="0.00 0.00 172.00 365.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 361)">
 <title>tvm::Call</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="Managed reference to CallNode.">
-<polygon fill="#999999" stroke="transparent" points="185,-146 0,-146 0,0 185,0 185,-146"/>
-<text text-anchor="start" x="70.5" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Call</text>
-<text text-anchor="start" x="91" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-104" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-104" font-family="Helvetica,sans-Serif" font-size="10.00">Call()</text>
-<text text-anchor="start" x="4.5" y="-89" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-89" font-family="Helvetica,sans-Serif" font-size="10.00">Call()</text>
-<text text-anchor="start" x="4.5" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="4.5" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="17.5" y="-37" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<text text-anchor="start" x="4.5" y="-22" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-22" font-family="Helvetica,sans-Serif" font-size="10.00">Unchecked()</text>
-<text text-anchor="start" x="4.5" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">ReinferType()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-129 0.5,-129 185.5,-129 185.5,-129 0.5,-129"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-114 0.5,-114 185.5,-114 185.5,-114 0.5,-114"/>
-<polygon fill="none" stroke="#666666" points="0,0 0,-146 185,-146 185,0 0,0"/>
+<polygon fill="#999999" stroke="transparent" points="164,-131 0,-131 0,0 164,0 164,-131"/>
+<text text-anchor="start" x="59.5" y="-118.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Call</text>
+<text text-anchor="start" x="80" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">Call()</text>
+<text text-anchor="start" x="4" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="17" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="4" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="17" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<text text-anchor="start" x="4" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">Unchecked()</text>
+<text text-anchor="start" x="4" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">ReinferType()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-113.5 0,-113.5 164,-113.5 164,-113.5 0,-113.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-98.5 0,-98.5 164,-98.5 164,-98.5 0,-98.5"/>
+<polygon fill="none" stroke="#666666" points="0,0 0,-131 164,-131 164,0 0,0"/>
 </a>
 </g>
 </g>
@@ -39,23 +37,21 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1Expr.html" target="_top" xlink:title="Managed reference to ExprNode.">
-<polygon fill="white" stroke="transparent" points="185,-302 0,-302 0,-182 185,-182 185,-302"/>
-<text text-anchor="start" x="69" y="-290" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
-<text text-anchor="start" x="91" y="-275" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-260" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-260" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
-<text text-anchor="start" x="4.5" y="-245" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-245" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
-<text text-anchor="start" x="4.5" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
-<text text-anchor="start" x="4.5" y="-215" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-215" font-family="Helvetica,sans-Serif" font-size="10.00">Expr()</text>
-<text text-anchor="start" x="4.5" y="-200" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-200" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-189" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-285 0.5,-285 185.5,-285 185.5,-285 0.5,-285"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-270 0.5,-270 185.5,-270 185.5,-270 0.5,-270"/>
-<polygon fill="none" stroke="#666666" points="0,-182 0,-302 185,-302 185,-182 0,-182"/>
+<polygon fill="white" stroke="transparent" points="164,-272 0,-272 0,-167 164,-167 164,-272"/>
+<text text-anchor="start" x="58" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
+<text text-anchor="start" x="80" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
+<text text-anchor="start" x="4" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
+<text text-anchor="start" x="4" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
+<text text-anchor="start" x="4" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="17" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-254.5 0,-254.5 164,-254.5 164,-254.5 0,-254.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-239.5 0,-239.5 164,-239.5 164,-239.5 0,-239.5"/>
+<polygon fill="none" stroke="#666666" points="0,-167 0,-272 164,-272 164,-167 0,-167"/>
 </a>
 </g>
 </g>
@@ -63,8 +59,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M92.5,-171.51C92.5,-163.09 92.5,-154.48 92.5,-146.03"/>
-<polygon fill="none" stroke="#63b8ff" points="89,-171.65 92.5,-181.65 96,-171.65 89,-171.65"/>
+<path fill="none" stroke="#63b8ff" d="M82,-156.52C82,-148.13 82,-139.49 82,-131.06"/>
+<polygon fill="none" stroke="#63b8ff" points="78.5,-156.62 82,-166.62 85.5,-156.62 78.5,-156.62"/>
 </a>
 </g>
 </g>
@@ -72,13 +68,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="129.5,-387 55.5,-387 55.5,-338 129.5,-338 129.5,-387"/>
-<text text-anchor="start" x="60.5" y="-374.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="90.5" y="-359.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="90.5" y="-344.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="55.5,-369.5 55.5,-369.5 129.5,-369.5 129.5,-369.5 55.5,-369.5"/>
-<polygon fill="#666666" stroke="#666666" points="55.5,-354.5 55.5,-354.5 129.5,-354.5 129.5,-354.5 55.5,-354.5"/>
-<polygon fill="none" stroke="#666666" points="55.5,-338 55.5,-387 129.5,-387 129.5,-338 55.5,-338"/>
+<polygon fill="white" stroke="transparent" points="119,-357 45,-357 45,-308 119,-308 119,-357"/>
+<text text-anchor="start" x="50" y="-344.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="80" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="80" y="-314.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="45,-339.5 45,-339.5 119,-339.5 119,-339.5 45,-339.5"/>
+<polygon fill="#666666" stroke="#666666" points="45,-324.5 45,-324.5 119,-324.5 119,-324.5 45,-324.5"/>
+<polygon fill="none" stroke="#666666" points="45,-308 45,-357 119,-357 119,-308 45,-308"/>
 </a>
 </g>
 </g>
@@ -86,8 +82,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M92.5,-327.59C92.5,-319.71 92.5,-311.09 92.5,-302.47"/>
-<polygon fill="none" stroke="#63b8ff" points="89,-327.8 92.5,-337.8 96,-327.8 89,-327.8"/>
+<path fill="none" stroke="#63b8ff" d="M82,-297.85C82,-289.79 82,-281 82,-272.32"/>
+<polygon fill="none" stroke="#63b8ff" points="78.5,-297.96 82,-307.96 85.5,-297.96 78.5,-297.96"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1Constant-members.html b/docs/reference/api/doxygen/classtvm_1_1Constant-members.html
index a0c715c2ae5..3bab3c354e5 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Constant-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1Constant-members.html
@@ -79,13 +79,11 @@ $(function() {
 
 <p>This is the complete list of members for <a class="el" href="classtvm_1_1Constant.html">tvm::Constant</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Constant.html#a977fdc57b32ff9ac646aa8c325b10ac9">Constant</a>(ffi::ObjectPtr&lt; ConstantNode &gt; node)</td><td class="entry"><a class="el" href="classtvm_1_1Constant.html">tvm::Constant</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#aad84c3380b07b63427dda3697a78b269">Expr</a>(ffi::ObjectPtr&lt; ExprNode &gt; node)</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a86bd9da75268e479e3bbe61729dce8ac">operator!=</a>(const Expr &amp;other) const =delete</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#afb14020d9ae652a64a6f15dcba073c0e">operator&lt;</a>(const Expr &amp;other) const =delete</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a637231cfc91838b8f14745ac199b5fbf">operator==</a>(const Expr &amp;other) const =delete</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1Constant.html#a024d132ab1c462a83b0f752fda6299dc">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(Constant, Expr, ConstantNode)</td><td class="entry"><a class="el" href="classtvm_1_1Constant.html">tvm::Constant</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a26775d381ee6e7c7bb65b8a7320f5b87">tvm::Expr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(Expr, ffi::ObjectRef, ExprNode)</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1Constant.html#a5a5ab2ad3307fc08180ae579214f5215">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(Constant, Expr, ConstantNode)</td><td class="entry"><a class="el" href="classtvm_1_1Constant.html">tvm::Constant</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a081d3512d899e352e81e8eda6385c444">tvm::Expr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(Expr, ffi::ObjectRef, ExprNode)</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1Constant.html b/docs/reference/api/doxygen/classtvm_1_1Constant.html
index fd6b9de1c5e..23f4275278e 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Constant.html
+++ b/docs/reference/api/doxygen/classtvm_1_1Constant.html
@@ -87,20 +87,18 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::Constant:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1Constant__inherit__graph.svg" width="799" height="635"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1Constant__inherit__graph.svg" width="715" height="575"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::Constant:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1Constant__coll__graph.svg" width="258" height="432"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1Constant__coll__graph.svg" width="230" height="392"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a977fdc57b32ff9ac646aa8c325b10ac9" id="r_a977fdc57b32ff9ac646aa8c325b10ac9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Constant.html#a977fdc57b32ff9ac646aa8c325b10ac9">Constant</a> (ffi::ObjectPtr&lt; <a class="el" href="classtvm_1_1ConstantNode.html">ConstantNode</a> &gt; node)</td></tr>
-<tr class="separator:a977fdc57b32ff9ac646aa8c325b10ac9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a024d132ab1c462a83b0f752fda6299dc" id="r_a024d132ab1c462a83b0f752fda6299dc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Constant.html#a024d132ab1c462a83b0f752fda6299dc">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a> (<a class="el" href="classtvm_1_1Constant.html">Constant</a>, <a class="el" href="classtvm_1_1Expr.html">Expr</a>, <a class="el" href="classtvm_1_1ConstantNode.htm [...]
-<tr class="separator:a024d132ab1c462a83b0f752fda6299dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5a5ab2ad3307fc08180ae579214f5215" id="r_a5a5ab2ad3307fc08180ae579214f5215"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Constant.html#a5a5ab2ad3307fc08180ae579214f5215">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a> (<a class="el" href="classtvm_1_1Constant.html">Constant</a>, <a class="el" href="classtvm_1_1Expr.html">Expr</a>, <a class="el" href="classtvm_1_1ConstantNode.html"> [...]
+<tr class="separator:a5a5ab2ad3307fc08180ae579214f5215"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="inherit_header pub_methods_classtvm_1_1Expr"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtvm_1_1Expr')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td></tr>
 <tr class="memitem:a637231cfc91838b8f14745ac199b5fbf inherit pub_methods_classtvm_1_1Expr" id="r_a637231cfc91838b8f14745ac199b5fbf"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Expr.html#a637231cfc91838b8f14745ac199b5fbf">operator==</a> (const <a class="el" href="classtvm_1_1Expr.html">Expr</a> &amp;other) const =delete</td></tr>
 <tr class="separator:a637231cfc91838b8f14745ac199b5fbf inherit pub_methods_classtvm_1_1Expr"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -108,49 +106,20 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:a86bd9da75268e479e3bbe61729dce8ac inherit pub_methods_classtvm_1_1Expr"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:afb14020d9ae652a64a6f15dcba073c0e inherit pub_methods_classtvm_1_1Expr" id="r_afb14020d9ae652a64a6f15dcba073c0e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Expr.html#afb14020d9ae652a64a6f15dcba073c0e">operator&lt;</a> (const <a class="el" href="classtvm_1_1Expr.html">Expr</a> &amp;other) const =delete</td></tr>
 <tr class="separator:afb14020d9ae652a64a6f15dcba073c0e inherit pub_methods_classtvm_1_1Expr"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aad84c3380b07b63427dda3697a78b269 inherit pub_methods_classtvm_1_1Expr" id="r_aad84c3380b07b63427dda3697a78b269"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Expr.html#aad84c3380b07b63427dda3697a78b269">Expr</a> (ffi::ObjectPtr&lt; <a class="el" href="classtvm_1_1ExprNode.html">ExprNode</a> &gt; node)</td></tr>
-<tr class="separator:aad84c3380b07b63427dda3697a78b269 inherit pub_methods_classtvm_1_1Expr"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a26775d381ee6e7c7bb65b8a7320f5b87 inherit pub_methods_classtvm_1_1Expr" id="r_a26775d381ee6e7c7bb65b8a7320f5b87"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Expr.html#a26775d381ee6e7c7bb65b8a7320f5b87">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a> (<a class="el" href="classtvm_1_1Expr.html">Expr</a>, ffi::ObjectRef, <a class="el" href="classtvm_1_1ExprNode.html">ExprNode</a>) [...]
-<tr class="separator:a26775d381ee6e7c7bb65b8a7320f5b87 inherit pub_methods_classtvm_1_1Expr"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a081d3512d899e352e81e8eda6385c444 inherit pub_methods_classtvm_1_1Expr" id="r_a081d3512d899e352e81e8eda6385c444"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Expr.html#a081d3512d899e352e81e8eda6385c444">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a> (<a class="el" href="classtvm_1_1Expr.html">Expr</a>, ffi::ObjectRef, <a class="el" href="classtvm_1_1ExprNode.html">ExprNode</a>)</td></tr>
+<tr class="separator:a081d3512d899e352e81e8eda6385c444 inherit pub_methods_classtvm_1_1Expr"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Managed reference to a literal constant. </p>
-</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a id="a977fdc57b32ff9ac646aa8c325b10ac9" name="a977fdc57b32ff9ac646aa8c325b10ac9"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a977fdc57b32ff9ac646aa8c325b10ac9">&#9670;&#160;</a></span>Constant()</h2>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a id="a5a5ab2ad3307fc08180ae579214f5215" name="a5a5ab2ad3307fc08180ae579214f5215"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5a5ab2ad3307fc08180ae579214f5215">&#9670;&#160;</a></span>TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE()</h2>
 
 <div class="memitem">
 <div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">tvm::Constant::Constant </td>
-          <td>(</td>
-          <td class="paramtype">ffi::ObjectPtr&lt; <a class="el" href="classtvm_1_1ConstantNode.html">ConstantNode</a> &gt;&#160;</td>
-          <td class="paramname"><em>node</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a id="a024d132ab1c462a83b0f752fda6299dc" name="a024d132ab1c462a83b0f752fda6299dc"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a024d132ab1c462a83b0f752fda6299dc">&#9670;&#160;</a></span>TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">tvm::Constant::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE </td>
+          <td class="memname">tvm::Constant::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE </td>
           <td>(</td>
           <td class="paramtype"><a class="el" href="classtvm_1_1Constant.html">Constant</a>&#160;</td>
           <td class="paramname">, </td>
diff --git a/docs/reference/api/doxygen/classtvm_1_1Constant__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1Constant__coll__graph.svg
index ccca02c7946..eb5e95ce1ed 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Constant__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1Constant__coll__graph.svg
@@ -4,25 +4,23 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::Constant Pages: 1 -->
-<svg width="193pt" height="324pt"
- viewBox="0.00 0.00 193.00 324.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 320)">
+<svg width="172pt" height="294pt"
+ viewBox="0.00 0.00 172.00 294.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 290)">
 <title>tvm::Constant</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="Managed reference to a literal constant.">
-<polygon fill="#999999" stroke="transparent" points="185,-75 0,-75 0,0 185,0 185,-75"/>
-<text text-anchor="start" x="58" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Constant</text>
-<text text-anchor="start" x="91" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">Constant()</text>
-<text text-anchor="start" x="4.5" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-57.5 0.5,-57.5 185.5,-57.5 185.5,-57.5 0.5,-57.5"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-42.5 0.5,-42.5 185.5,-42.5 185.5,-42.5 0.5,-42.5"/>
-<polygon fill="none" stroke="#666666" points="0,0 0,-75 185,-75 185,0 0,0"/>
+<polygon fill="#999999" stroke="transparent" points="164,-60 0,-60 0,0 164,0 164,-60"/>
+<text text-anchor="start" x="47" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Constant</text>
+<text text-anchor="start" x="80" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4" y="-18" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-18" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="17" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-43 0,-43 164,-43 164,-43 0,-43"/>
+<polygon fill="#666666" stroke="#666666" points="0,-28 0,-28 164,-28 164,-28 0,-28"/>
+<polygon fill="none" stroke="#666666" points="0,0 0,-60 164,-60 164,0 0,0"/>
 </a>
 </g>
 </g>
@@ -30,23 +28,21 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1Expr.html" target="_top" xlink:title="Managed reference to ExprNode.">
-<polygon fill="white" stroke="transparent" points="185,-231 0,-231 0,-111 185,-111 185,-231"/>
-<text text-anchor="start" x="69" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
-<text text-anchor="start" x="91" y="-204" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-189" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-189" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
-<text text-anchor="start" x="4.5" y="-174" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-174" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
-<text text-anchor="start" x="4.5" y="-159" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-159" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
-<text text-anchor="start" x="4.5" y="-144" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-144" font-family="Helvetica,sans-Serif" font-size="10.00">Expr()</text>
-<text text-anchor="start" x="4.5" y="-129" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-129" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-118" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-214 0.5,-214 185.5,-214 185.5,-214 0.5,-214"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-199 0.5,-199 185.5,-199 185.5,-199 0.5,-199"/>
-<polygon fill="none" stroke="#666666" points="0,-111 0,-231 185,-231 185,-111 0,-111"/>
+<polygon fill="white" stroke="transparent" points="164,-201 0,-201 0,-96 164,-96 164,-201"/>
+<text text-anchor="start" x="58" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
+<text text-anchor="start" x="80" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
+<text text-anchor="start" x="4" y="-143.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-143.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
+<text text-anchor="start" x="4" y="-128.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-128.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
+<text text-anchor="start" x="4" y="-113.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-113.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="17" y="-102.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-183.5 0,-183.5 164,-183.5 164,-183.5 0,-183.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-168.5 0,-168.5 164,-168.5 164,-168.5 0,-168.5"/>
+<polygon fill="none" stroke="#666666" points="0,-96 0,-201 164,-201 164,-96 0,-96"/>
 </a>
 </g>
 </g>
@@ -54,8 +50,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M92.5,-100.52C92.5,-91.77 92.5,-83.11 92.5,-75.16"/>
-<polygon fill="none" stroke="#63b8ff" points="89,-100.79 92.5,-110.79 96,-100.79 89,-100.79"/>
+<path fill="none" stroke="#63b8ff" d="M82,-85.71C82,-76.85 82,-68.09 82,-60.27"/>
+<polygon fill="none" stroke="#63b8ff" points="78.5,-85.72 82,-95.72 85.5,-85.72 78.5,-85.72"/>
 </a>
 </g>
 </g>
@@ -63,13 +59,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="129.5,-316 55.5,-316 55.5,-267 129.5,-267 129.5,-316"/>
-<text text-anchor="start" x="60.5" y="-303.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="90.5" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="90.5" y="-273.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="55.5,-298.5 55.5,-298.5 129.5,-298.5 129.5,-298.5 55.5,-298.5"/>
-<polygon fill="#666666" stroke="#666666" points="55.5,-283.5 55.5,-283.5 129.5,-283.5 129.5,-283.5 55.5,-283.5"/>
-<polygon fill="none" stroke="#666666" points="55.5,-267 55.5,-316 129.5,-316 129.5,-267 55.5,-267"/>
+<polygon fill="white" stroke="transparent" points="119,-286 45,-286 45,-237 119,-237 119,-286"/>
+<text text-anchor="start" x="50" y="-273.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="80" y="-258.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="80" y="-243.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="45,-268.5 45,-268.5 119,-268.5 119,-268.5 45,-268.5"/>
+<polygon fill="#666666" stroke="#666666" points="45,-253.5 45,-253.5 119,-253.5 119,-253.5 45,-253.5"/>
+<polygon fill="none" stroke="#666666" points="45,-237 45,-286 119,-286 119,-237 45,-237"/>
 </a>
 </g>
 </g>
@@ -77,8 +73,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M92.5,-256.59C92.5,-248.71 92.5,-240.09 92.5,-231.47"/>
-<polygon fill="none" stroke="#63b8ff" points="89,-256.8 92.5,-266.8 96,-256.8 89,-256.8"/>
+<path fill="none" stroke="#63b8ff" d="M82,-226.85C82,-218.79 82,-210 82,-201.32"/>
+<polygon fill="none" stroke="#63b8ff" points="78.5,-226.96 82,-236.96 85.5,-226.96 78.5,-226.96"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1Constant__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1Constant__inherit__graph.svg
index bb290d71dc7..1a3ed870c2b 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Constant__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1Constant__inherit__graph.svg
@@ -4,25 +4,23 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::Constant Pages: 1 -->
-<svg width="599pt" height="476pt"
- viewBox="0.00 0.00 599.00 476.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 472)">
+<svg width="536pt" height="431pt"
+ viewBox="0.00 0.00 536.00 431.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 427)">
 <title>tvm::Constant</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="Managed reference to a literal constant.">
-<polygon fill="#999999" stroke="transparent" points="388,-227 203,-227 203,-152 388,-152 388,-227"/>
-<text text-anchor="start" x="261" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Constant</text>
-<text text-anchor="start" x="294" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="207.5" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">Constant()</text>
-<text text-anchor="start" x="207.5" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="220.5" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="203.5,-209.5 203.5,-209.5 388.5,-209.5 388.5,-209.5 203.5,-209.5"/>
-<polygon fill="#666666" stroke="#666666" points="203.5,-194.5 203.5,-194.5 388.5,-194.5 388.5,-194.5 203.5,-194.5"/>
-<polygon fill="none" stroke="#666666" points="203,-152 203,-227 388,-227 388,-152 203,-152"/>
+<polygon fill="#999999" stroke="transparent" points="346,-197 182,-197 182,-137 346,-137 346,-197"/>
+<text text-anchor="start" x="229" y="-185" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Constant</text>
+<text text-anchor="start" x="262" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="186" y="-155" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="199" y="-155" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="199" y="-144" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="182,-180 182,-180 346,-180 346,-180 182,-180"/>
+<polygon fill="#666666" stroke="#666666" points="182,-165 182,-165 346,-165 346,-165 182,-165"/>
+<polygon fill="none" stroke="#666666" points="182,-137 182,-197 346,-197 346,-137 182,-137"/>
 </a>
 </g>
 </g>
@@ -30,22 +28,20 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1DataTypeImm.html" target="_top" xlink:title="Managed reference to a data type literal.">
-<polygon fill="white" stroke="transparent" points="185,-116 0,-116 0,0 185,0 185,-116"/>
-<text text-anchor="start" x="46" y="-104" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DataTypeImm</text>
-<text text-anchor="start" x="91" y="-89" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">DataTypeImm()</text>
-<text text-anchor="start" x="4.5" y="-59" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-59" font-family="Helvetica,sans-Serif" font-size="10.00">DataTypeImm()</text>
-<text text-anchor="start" x="4.5" y="-44" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-44" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="4.5" y="-18" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-18" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="17.5" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-99 0.5,-99 185.5,-99 185.5,-99 0.5,-99"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-84 0.5,-84 185.5,-84 185.5,-84 0.5,-84"/>
-<polygon fill="none" stroke="#666666" points="0,0 0,-116 185,-116 185,0 0,0"/>
+<polygon fill="white" stroke="transparent" points="164,-101 0,-101 0,0 164,0 164,-101"/>
+<text text-anchor="start" x="35" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DataTypeImm</text>
+<text text-anchor="start" x="80" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4" y="-58.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-58.5" font-family="Helvetica,sans-Serif" font-size="10.00">DataTypeImm()</text>
+<text text-anchor="start" x="4" y="-43.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-43.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="17" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="4" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="17" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-83.5 0,-83.5 164,-83.5 164,-83.5 0,-83.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-68.5 0,-68.5 164,-68.5 164,-68.5 0,-68.5"/>
+<polygon fill="none" stroke="#666666" points="0,0 0,-101 164,-101 164,0 0,0"/>
 </a>
 </g>
 </g>
@@ -53,8 +49,8 @@
 <g id="edge3_Node000001_Node000004" class="edge">
 <title>Node1&#45;&gt;Node4</title>
 <g id="a_edge3_Node000001_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M229.38,-146.32C214.25,-136.67 197.91,-126.24 181.97,-116.08"/>
-<polygon fill="none" stroke="#63b8ff" points="227.83,-149.48 238.14,-151.91 231.59,-143.58 227.83,-149.48"/>
+<path fill="none" stroke="#63b8ff" d="M208.89,-131.33C193.75,-121.8 177.03,-111.29 160.84,-101.1"/>
+<polygon fill="none" stroke="#63b8ff" points="207.27,-134.45 217.6,-136.81 211,-128.52 207.27,-134.45"/>
 </a>
 </g>
 </g>
@@ -62,22 +58,20 @@
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:href="classtvm_1_1GenericConst.html" target="_top" xlink:title="Managed reference to a generic constant.">
-<polygon fill="white" stroke="transparent" points="388,-116 203,-116 203,0 388,0 388,-116"/>
-<text text-anchor="start" x="250.5" y="-104" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::GenericConst</text>
-<text text-anchor="start" x="294" y="-89" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="207.5" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">GenericConst()</text>
-<text text-anchor="start" x="207.5" y="-59" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-59" font-family="Helvetica,sans-Serif" font-size="10.00">GenericConst()</text>
-<text text-anchor="start" x="207.5" y="-44" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-44" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="220.5" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="207.5" y="-18" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-18" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="220.5" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="203.5,-99 203.5,-99 388.5,-99 388.5,-99 203.5,-99"/>
-<polygon fill="#666666" stroke="#666666" points="203.5,-84 203.5,-84 388.5,-84 388.5,-84 203.5,-84"/>
-<polygon fill="none" stroke="#666666" points="203,0 203,-116 388,-116 388,0 203,0"/>
+<polygon fill="white" stroke="transparent" points="346,-101 182,-101 182,0 346,0 346,-101"/>
+<text text-anchor="start" x="218.5" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::GenericConst</text>
+<text text-anchor="start" x="262" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="186" y="-58.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="199" y="-58.5" font-family="Helvetica,sans-Serif" font-size="10.00">GenericConst()</text>
+<text text-anchor="start" x="186" y="-43.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="199" y="-43.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="199" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="186" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="199" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="199" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="182,-83.5 182,-83.5 346,-83.5 346,-83.5 182,-83.5"/>
+<polygon fill="#666666" stroke="#666666" points="182,-68.5 182,-68.5 346,-68.5 346,-68.5 182,-68.5"/>
+<polygon fill="none" stroke="#666666" points="182,0 182,-101 346,-101 346,0 182,0"/>
 </a>
 </g>
 </g>
@@ -85,8 +79,8 @@
 <g id="edge4_Node000001_Node000005" class="edge">
 <title>Node1&#45;&gt;Node5</title>
 <g id="a_edge4_Node000001_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M295.5,-141.57C295.5,-133.33 295.5,-124.67 295.5,-116.19"/>
-<polygon fill="none" stroke="#63b8ff" points="292,-141.74 295.5,-151.74 299,-141.74 292,-141.74"/>
+<path fill="none" stroke="#63b8ff" d="M264,-126.72C264,-118.47 264,-109.67 264,-101.1"/>
+<polygon fill="none" stroke="#63b8ff" points="260.5,-126.81 264,-136.81 267.5,-126.81 260.5,-126.81"/>
 </a>
 </g>
 </g>
@@ -94,22 +88,20 @@
 <g id="Node000006" class="node">
 <title>Node6</title>
 <g id="a_Node000006"><a xlink:href="classtvm_1_1StringImm.html" target="_top" xlink:title="Managed reference to a string literal.">
-<polygon fill="white" stroke="transparent" points="591,-116 406,-116 406,0 591,0 591,-116"/>
-<text text-anchor="start" x="460.5" y="-104" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::StringImm</text>
-<text text-anchor="start" x="497" y="-89" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="410.5" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="423.5" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">StringImm()</text>
-<text text-anchor="start" x="410.5" y="-59" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="423.5" y="-59" font-family="Helvetica,sans-Serif" font-size="10.00">StringImm()</text>
-<text text-anchor="start" x="410.5" y="-44" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="423.5" y="-44" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="423.5" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="410.5" y="-18" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="423.5" y="-18" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="423.5" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="406.5,-99 406.5,-99 591.5,-99 591.5,-99 406.5,-99"/>
-<polygon fill="#666666" stroke="#666666" points="406.5,-84 406.5,-84 591.5,-84 591.5,-84 406.5,-84"/>
-<polygon fill="none" stroke="#666666" points="406,0 406,-116 591,-116 591,0 406,0"/>
+<polygon fill="white" stroke="transparent" points="528,-101 364,-101 364,0 528,0 528,-101"/>
+<text text-anchor="start" x="407.5" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::StringImm</text>
+<text text-anchor="start" x="444" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="368" y="-58.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="381" y="-58.5" font-family="Helvetica,sans-Serif" font-size="10.00">StringImm()</text>
+<text text-anchor="start" x="368" y="-43.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="381" y="-43.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="381" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="368" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="381" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="381" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="364,-83.5 364,-83.5 528,-83.5 528,-83.5 364,-83.5"/>
+<polygon fill="#666666" stroke="#666666" points="364,-68.5 364,-68.5 528,-68.5 528,-68.5 364,-68.5"/>
+<polygon fill="none" stroke="#666666" points="364,0 364,-101 528,-101 528,0 364,0"/>
 </a>
 </g>
 </g>
@@ -117,8 +109,8 @@
 <g id="edge5_Node000001_Node000006" class="edge">
 <title>Node1&#45;&gt;Node6</title>
 <g id="a_edge5_Node000001_Node000006"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M361.62,-146.32C376.75,-136.67 393.09,-126.24 409.03,-116.08"/>
-<polygon fill="none" stroke="#63b8ff" points="359.41,-143.58 352.86,-151.91 363.17,-149.48 359.41,-143.58"/>
+<path fill="none" stroke="#63b8ff" d="M319.11,-131.33C334.25,-121.8 350.97,-111.29 367.16,-101.1"/>
+<polygon fill="none" stroke="#63b8ff" points="317,-128.52 310.4,-136.81 320.73,-134.45 317,-128.52"/>
 </a>
 </g>
 </g>
@@ -126,23 +118,21 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1Expr.html" target="_top" xlink:title="Managed reference to ExprNode.">
-<polygon fill="white" stroke="transparent" points="388,-383 203,-383 203,-263 388,-263 388,-383"/>
-<text text-anchor="start" x="272" y="-371" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
-<text text-anchor="start" x="294" y="-356" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="207.5" y="-341" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-341" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
-<text text-anchor="start" x="207.5" y="-326" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-326" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
-<text text-anchor="start" x="207.5" y="-311" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-311" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
-<text text-anchor="start" x="207.5" y="-296" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-296" font-family="Helvetica,sans-Serif" font-size="10.00">Expr()</text>
-<text text-anchor="start" x="207.5" y="-281" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-281" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="220.5" y="-270" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="203.5,-366 203.5,-366 388.5,-366 388.5,-366 203.5,-366"/>
-<polygon fill="#666666" stroke="#666666" points="203.5,-351 203.5,-351 388.5,-351 388.5,-351 203.5,-351"/>
-<polygon fill="none" stroke="#666666" points="203,-263 203,-383 388,-383 388,-263 203,-263"/>
+<polygon fill="white" stroke="transparent" points="346,-338 182,-338 182,-233 346,-233 346,-338"/>
+<text text-anchor="start" x="240" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
+<text text-anchor="start" x="262" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="186" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="199" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
+<text text-anchor="start" x="186" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="199" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
+<text text-anchor="start" x="186" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="199" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
+<text text-anchor="start" x="186" y="-250.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="199" y="-250.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="199" y="-239.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="182,-320.5 182,-320.5 346,-320.5 346,-320.5 182,-320.5"/>
+<polygon fill="#666666" stroke="#666666" points="182,-305.5 182,-305.5 346,-305.5 346,-305.5 182,-305.5"/>
+<polygon fill="none" stroke="#666666" points="182,-233 182,-338 346,-338 346,-233 182,-233"/>
 </a>
 </g>
 </g>
@@ -150,8 +140,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M295.5,-252.52C295.5,-243.77 295.5,-235.11 295.5,-227.16"/>
-<polygon fill="none" stroke="#63b8ff" points="292,-252.79 295.5,-262.79 299,-252.79 292,-252.79"/>
+<path fill="none" stroke="#63b8ff" d="M264,-222.71C264,-213.85 264,-205.09 264,-197.27"/>
+<polygon fill="none" stroke="#63b8ff" points="260.5,-222.72 264,-232.72 267.5,-222.72 260.5,-222.72"/>
 </a>
 </g>
 </g>
@@ -159,13 +149,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="332.5,-468 258.5,-468 258.5,-419 332.5,-419 332.5,-468"/>
-<text text-anchor="start" x="263.5" y="-455.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="293.5" y="-440.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="293.5" y="-425.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="258.5,-450.5 258.5,-450.5 332.5,-450.5 332.5,-450.5 258.5,-450.5"/>
-<polygon fill="#666666" stroke="#666666" points="258.5,-435.5 258.5,-435.5 332.5,-435.5 332.5,-435.5 258.5,-435.5"/>
-<polygon fill="none" stroke="#666666" points="258.5,-419 258.5,-468 332.5,-468 332.5,-419 258.5,-419"/>
+<polygon fill="white" stroke="transparent" points="301,-423 227,-423 227,-374 301,-374 301,-423"/>
+<text text-anchor="start" x="232" y="-410.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="262" y="-395.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="262" y="-380.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="227,-405.5 227,-405.5 301,-405.5 301,-405.5 227,-405.5"/>
+<polygon fill="#666666" stroke="#666666" points="227,-390.5 227,-390.5 301,-390.5 301,-390.5 227,-390.5"/>
+<polygon fill="none" stroke="#666666" points="227,-374 227,-423 301,-423 301,-374 227,-374"/>
 </a>
 </g>
 </g>
@@ -173,8 +163,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M295.5,-408.59C295.5,-400.71 295.5,-392.09 295.5,-383.47"/>
-<polygon fill="none" stroke="#63b8ff" points="292,-408.8 295.5,-418.8 299,-408.8 292,-408.8"/>
+<path fill="none" stroke="#63b8ff" d="M264,-363.85C264,-355.79 264,-347 264,-338.32"/>
+<polygon fill="none" stroke="#63b8ff" points="260.5,-363.96 264,-373.96 267.5,-363.96 260.5,-363.96"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1DataTypeImm-members.html b/docs/reference/api/doxygen/classtvm_1_1DataTypeImm-members.html
index 723209d63ba..8c5f49b4e29 100644
--- a/docs/reference/api/doxygen/classtvm_1_1DataTypeImm-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1DataTypeImm-members.html
@@ -79,17 +79,14 @@ $(function() {
 
 <p>This is the complete list of members for <a class="el" href="classtvm_1_1DataTypeImm.html">tvm::DataTypeImm</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Constant.html#a977fdc57b32ff9ac646aa8c325b10ac9">Constant</a>(ffi::ObjectPtr&lt; ConstantNode &gt; node)</td><td class="entry"><a class="el" href="classtvm_1_1Constant.html">tvm::Constant</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1DataTypeImm.html#a3ba48b8afe677b2affb7386fdfbe6813">DataTypeImm</a>(DLDataType value, Span span=Span())</td><td class="entry"><a class="el" href="classtvm_1_1DataTypeImm.html">tvm::DataTypeImm</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1DataTypeImm.html#a3a764f3ea1ad801cc15c29c718caa796">DataTypeImm</a>(ffi::ObjectPtr&lt; DataTypeImmNode &gt; node)</td><td class="entry"><a class="el" href="classtvm_1_1DataTypeImm.html">tvm::DataTypeImm</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#aad84c3380b07b63427dda3697a78b269">Expr</a>(ffi::ObjectPtr&lt; ExprNode &gt; node)</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a86bd9da75268e479e3bbe61729dce8ac">operator!=</a>(const Expr &amp;other) const =delete</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#afb14020d9ae652a64a6f15dcba073c0e">operator&lt;</a>(const Expr &amp;other) const =delete</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a637231cfc91838b8f14745ac199b5fbf">operator==</a>(const Expr &amp;other) const =delete</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1DataTypeImm.html#a550c40d2c8220fbc07141cc071a38836">TVM_DEFINE_OBJECT_REF_COW_METHOD</a>(DataTypeImmNode)</td><td class="entry"><a class="el" href="classtvm_1_1DataTypeImm.html">tvm::DataTypeImm</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1DataTypeImm.html#aa8f145627f42fc61e3fa0c5fef8a4b40">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(DataTypeImm, Constant, DataTypeImmNode)</td><td class="entry"><a class="el" href="classtvm_1_1DataTypeImm.html">tvm::DataTypeImm</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1Constant.html#a024d132ab1c462a83b0f752fda6299dc">tvm::Constant::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(Constant, Expr, ConstantNode)</td><td class="entry"><a class="el" href="classtvm_1_1Constant.html">tvm::Constant</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a26775d381ee6e7c7bb65b8a7320f5b87">tvm::Expr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(Expr, ffi::ObjectRef, ExprNode)</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1DataTypeImm.html#a3ba48b8afe677b2affb7386fdfbe6813">DataTypeImm</a>(DLDataType value, Span span=Span())</td><td class="entry"><a class="el" href="classtvm_1_1DataTypeImm.html">tvm::DataTypeImm</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a86bd9da75268e479e3bbe61729dce8ac">operator!=</a>(const Expr &amp;other) const =delete</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#afb14020d9ae652a64a6f15dcba073c0e">operator&lt;</a>(const Expr &amp;other) const =delete</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a637231cfc91838b8f14745ac199b5fbf">operator==</a>(const Expr &amp;other) const =delete</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1DataTypeImm.html#a550c40d2c8220fbc07141cc071a38836">TVM_DEFINE_OBJECT_REF_COW_METHOD</a>(DataTypeImmNode)</td><td class="entry"><a class="el" href="classtvm_1_1DataTypeImm.html">tvm::DataTypeImm</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1DataTypeImm.html#aa519c2e6237124f8db6414319cd20ba2">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(DataTypeImm, Constant, DataTypeImmNode)</td><td class="entry"><a class="el" href="classtvm_1_1DataTypeImm.html">tvm::DataTypeImm</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Constant.html#a5a5ab2ad3307fc08180ae579214f5215">tvm::Constant::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(Constant, Expr, ConstantNode)</td><td class="entry"><a class="el" href="classtvm_1_1Constant.html">tvm::Constant</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a081d3512d899e352e81e8eda6385c444">tvm::Expr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(Expr, ffi::ObjectRef, ExprNode)</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1DataTypeImm.html b/docs/reference/api/doxygen/classtvm_1_1DataTypeImm.html
index 487a28308db..474a2600a25 100644
--- a/docs/reference/api/doxygen/classtvm_1_1DataTypeImm.html
+++ b/docs/reference/api/doxygen/classtvm_1_1DataTypeImm.html
@@ -87,29 +87,25 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::DataTypeImm:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1DataTypeImm__inherit__graph.svg" width="258" height="635"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1DataTypeImm__inherit__graph.svg" width="230" height="575"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::DataTypeImm:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1DataTypeImm__coll__graph.svg" width="258" height="635"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1DataTypeImm__coll__graph.svg" width="230" height="575"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a3ba48b8afe677b2affb7386fdfbe6813" id="r_a3ba48b8afe677b2affb7386fdfbe6813"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1DataTypeImm.html#a3ba48b8afe677b2affb7386fdfbe6813">DataTypeImm</a> (DLDataType value, <a class="el" href="classtvm_1_1Span.html">Span</a> span=<a class="el" href="classtvm_1_1Span.html">Span</a>())</td></tr>
 <tr class="separator:a3ba48b8afe677b2affb7386fdfbe6813"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3a764f3ea1ad801cc15c29c718caa796" id="r_a3a764f3ea1ad801cc15c29c718caa796"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1DataTypeImm.html#a3a764f3ea1ad801cc15c29c718caa796">DataTypeImm</a> (ffi::ObjectPtr&lt; <a class="el" href="classtvm_1_1DataTypeImmNode.html">DataTypeImmNode</a> &gt; node)</td></tr>
-<tr class="separator:a3a764f3ea1ad801cc15c29c718caa796"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa8f145627f42fc61e3fa0c5fef8a4b40" id="r_aa8f145627f42fc61e3fa0c5fef8a4b40"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1DataTypeImm.html#aa8f145627f42fc61e3fa0c5fef8a4b40">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a> (<a class="el" href="classtvm_1_1DataTypeImm.html">DataTypeImm</a>, <a class="el" href="classtvm_1_1Constant.html">Constant</a>, <a class="el" href="classtvm_1_ [...]
-<tr class="separator:aa8f145627f42fc61e3fa0c5fef8a4b40"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa519c2e6237124f8db6414319cd20ba2" id="r_aa519c2e6237124f8db6414319cd20ba2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1DataTypeImm.html#aa519c2e6237124f8db6414319cd20ba2">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a> (<a class="el" href="classtvm_1_1DataTypeImm.html">DataTypeImm</a>, <a class="el" href="classtvm_1_1Constant.html">Constant</a>, <a class="el" href="classtvm_1_1Da [...]
+<tr class="separator:aa519c2e6237124f8db6414319cd20ba2"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a550c40d2c8220fbc07141cc071a38836" id="r_a550c40d2c8220fbc07141cc071a38836"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1DataTypeImm.html#a550c40d2c8220fbc07141cc071a38836">TVM_DEFINE_OBJECT_REF_COW_METHOD</a> (<a class="el" href="classtvm_1_1DataTypeImmNode.html">DataTypeImmNode</a>)</td></tr>
 <tr class="separator:a550c40d2c8220fbc07141cc071a38836"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="inherit_header pub_methods_classtvm_1_1Constant"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtvm_1_1Constant')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtvm_1_1Constant.html">tvm::Constant</a></td></tr>
-<tr class="memitem:a977fdc57b32ff9ac646aa8c325b10ac9 inherit pub_methods_classtvm_1_1Constant" id="r_a977fdc57b32ff9ac646aa8c325b10ac9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Constant.html#a977fdc57b32ff9ac646aa8c325b10ac9">Constant</a> (ffi::ObjectPtr&lt; <a class="el" href="classtvm_1_1ConstantNode.html">ConstantNode</a> &gt; node)</td></tr>
-<tr class="separator:a977fdc57b32ff9ac646aa8c325b10ac9 inherit pub_methods_classtvm_1_1Constant"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a024d132ab1c462a83b0f752fda6299dc inherit pub_methods_classtvm_1_1Constant" id="r_a024d132ab1c462a83b0f752fda6299dc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Constant.html#a024d132ab1c462a83b0f752fda6299dc">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a> (<a class="el" href="classtvm_1_1Constant.html">Constant</a>, <a class="el" href="classtvm_1_1Expr.html">Expr</a>, <a clas [...]
-<tr class="separator:a024d132ab1c462a83b0f752fda6299dc inherit pub_methods_classtvm_1_1Constant"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5a5ab2ad3307fc08180ae579214f5215 inherit pub_methods_classtvm_1_1Constant" id="r_a5a5ab2ad3307fc08180ae579214f5215"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Constant.html#a5a5ab2ad3307fc08180ae579214f5215">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a> (<a class="el" href="classtvm_1_1Constant.html">Constant</a>, <a class="el" href="classtvm_1_1Expr.html">Expr</a>, <a class=" [...]
+<tr class="separator:a5a5ab2ad3307fc08180ae579214f5215 inherit pub_methods_classtvm_1_1Constant"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="inherit_header pub_methods_classtvm_1_1Expr"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtvm_1_1Expr')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td></tr>
 <tr class="memitem:a637231cfc91838b8f14745ac199b5fbf inherit pub_methods_classtvm_1_1Expr" id="r_a637231cfc91838b8f14745ac199b5fbf"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Expr.html#a637231cfc91838b8f14745ac199b5fbf">operator==</a> (const <a class="el" href="classtvm_1_1Expr.html">Expr</a> &amp;other) const =delete</td></tr>
 <tr class="separator:a637231cfc91838b8f14745ac199b5fbf inherit pub_methods_classtvm_1_1Expr"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -117,16 +113,14 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:a86bd9da75268e479e3bbe61729dce8ac inherit pub_methods_classtvm_1_1Expr"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:afb14020d9ae652a64a6f15dcba073c0e inherit pub_methods_classtvm_1_1Expr" id="r_afb14020d9ae652a64a6f15dcba073c0e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Expr.html#afb14020d9ae652a64a6f15dcba073c0e">operator&lt;</a> (const <a class="el" href="classtvm_1_1Expr.html">Expr</a> &amp;other) const =delete</td></tr>
 <tr class="separator:afb14020d9ae652a64a6f15dcba073c0e inherit pub_methods_classtvm_1_1Expr"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aad84c3380b07b63427dda3697a78b269 inherit pub_methods_classtvm_1_1Expr" id="r_aad84c3380b07b63427dda3697a78b269"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Expr.html#aad84c3380b07b63427dda3697a78b269">Expr</a> (ffi::ObjectPtr&lt; <a class="el" href="classtvm_1_1ExprNode.html">ExprNode</a> &gt; node)</td></tr>
-<tr class="separator:aad84c3380b07b63427dda3697a78b269 inherit pub_methods_classtvm_1_1Expr"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a26775d381ee6e7c7bb65b8a7320f5b87 inherit pub_methods_classtvm_1_1Expr" id="r_a26775d381ee6e7c7bb65b8a7320f5b87"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Expr.html#a26775d381ee6e7c7bb65b8a7320f5b87">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a> (<a class="el" href="classtvm_1_1Expr.html">Expr</a>, ffi::ObjectRef, <a class="el" href="classtvm_1_1ExprNode.html">ExprNode</a>) [...]
-<tr class="separator:a26775d381ee6e7c7bb65b8a7320f5b87 inherit pub_methods_classtvm_1_1Expr"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a081d3512d899e352e81e8eda6385c444 inherit pub_methods_classtvm_1_1Expr" id="r_a081d3512d899e352e81e8eda6385c444"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Expr.html#a081d3512d899e352e81e8eda6385c444">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a> (<a class="el" href="classtvm_1_1Expr.html">Expr</a>, ffi::ObjectRef, <a class="el" href="classtvm_1_1ExprNode.html">ExprNode</a>)</td></tr>
+<tr class="separator:a081d3512d899e352e81e8eda6385c444 inherit pub_methods_classtvm_1_1Expr"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Managed reference to a data type literal. </p>
 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
 <a id="a3ba48b8afe677b2affb7386fdfbe6813" name="a3ba48b8afe677b2affb7386fdfbe6813"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a3ba48b8afe677b2affb7386fdfbe6813">&#9670;&#160;</a></span>DataTypeImm() <span class="overload">[1/2]</span></h2>
+<h2 class="memtitle"><span class="permalink"><a href="#a3ba48b8afe677b2affb7386fdfbe6813">&#9670;&#160;</a></span>DataTypeImm()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -159,32 +153,6 @@ Public Member Functions</h2></td></tr>
 </table>
 </div><div class="memdoc">
 
-</div>
-</div>
-<a id="a3a764f3ea1ad801cc15c29c718caa796" name="a3a764f3ea1ad801cc15c29c718caa796"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a3a764f3ea1ad801cc15c29c718caa796">&#9670;&#160;</a></span>DataTypeImm() <span class="overload">[2/2]</span></h2>
-
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">tvm::DataTypeImm::DataTypeImm </td>
-          <td>(</td>
-          <td class="paramtype">ffi::ObjectPtr&lt; <a class="el" href="classtvm_1_1DataTypeImmNode.html">DataTypeImmNode</a> &gt;&#160;</td>
-          <td class="paramname"><em>node</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
 </div>
 </div>
 <h2 class="groupheader">Member Function Documentation</h2>
@@ -206,14 +174,14 @@ Public Member Functions</h2></td></tr>
 
 </div>
 </div>
-<a id="aa8f145627f42fc61e3fa0c5fef8a4b40" name="aa8f145627f42fc61e3fa0c5fef8a4b40"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aa8f145627f42fc61e3fa0c5fef8a4b40">&#9670;&#160;</a></span>TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE()</h2>
+<a id="aa519c2e6237124f8db6414319cd20ba2" name="aa519c2e6237124f8db6414319cd20ba2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa519c2e6237124f8db6414319cd20ba2">&#9670;&#160;</a></span>TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE()</h2>
 
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">tvm::DataTypeImm::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE </td>
+          <td class="memname">tvm::DataTypeImm::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE </td>
           <td>(</td>
           <td class="paramtype"><a class="el" href="classtvm_1_1DataTypeImm.html">DataTypeImm</a>&#160;</td>
           <td class="paramname">, </td>
diff --git a/docs/reference/api/doxygen/classtvm_1_1DataTypeImm__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1DataTypeImm__coll__graph.svg
index 9dc9153fe7c..5200dc3db80 100644
--- a/docs/reference/api/doxygen/classtvm_1_1DataTypeImm__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1DataTypeImm__coll__graph.svg
@@ -4,30 +4,28 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::DataTypeImm Pages: 1 -->
-<svg width="193pt" height="476pt"
- viewBox="0.00 0.00 193.00 476.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 472)">
+<svg width="172pt" height="431pt"
+ viewBox="0.00 0.00 172.00 431.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 427)">
 <title>tvm::DataTypeImm</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="Managed reference to a data type literal.">
-<polygon fill="#999999" stroke="transparent" points="185,-116 0,-116 0,0 185,0 185,-116"/>
-<text text-anchor="start" x="46" y="-104" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DataTypeImm</text>
-<text text-anchor="start" x="91" y="-89" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">DataTypeImm()</text>
-<text text-anchor="start" x="4.5" y="-59" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-59" font-family="Helvetica,sans-Serif" font-size="10.00">DataTypeImm()</text>
-<text text-anchor="start" x="4.5" y="-44" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-44" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="4.5" y="-18" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-18" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="17.5" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-99 0.5,-99 185.5,-99 185.5,-99 0.5,-99"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-84 0.5,-84 185.5,-84 185.5,-84 0.5,-84"/>
-<polygon fill="none" stroke="#666666" points="0,0 0,-116 185,-116 185,0 0,0"/>
+<polygon fill="#999999" stroke="transparent" points="164,-101 0,-101 0,0 164,0 164,-101"/>
+<text text-anchor="start" x="35" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DataTypeImm</text>
+<text text-anchor="start" x="80" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4" y="-58.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-58.5" font-family="Helvetica,sans-Serif" font-size="10.00">DataTypeImm()</text>
+<text text-anchor="start" x="4" y="-43.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-43.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="17" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="4" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="17" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-83.5 0,-83.5 164,-83.5 164,-83.5 0,-83.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-68.5 0,-68.5 164,-68.5 164,-68.5 0,-68.5"/>
+<polygon fill="none" stroke="#666666" points="0,0 0,-101 164,-101 164,0 0,0"/>
 </a>
 </g>
 </g>
@@ -35,17 +33,15 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1Constant.html" target="_top" xlink:title="Managed reference to a literal constant.">
-<polygon fill="white" stroke="transparent" points="185,-227 0,-227 0,-152 185,-152 185,-227"/>
-<text text-anchor="start" x="58" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Constant</text>
-<text text-anchor="start" x="91" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">Constant()</text>
-<text text-anchor="start" x="4.5" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-209.5 0.5,-209.5 185.5,-209.5 185.5,-209.5 0.5,-209.5"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-194.5 0.5,-194.5 185.5,-194.5 185.5,-194.5 0.5,-194.5"/>
-<polygon fill="none" stroke="#666666" points="0,-152 0,-227 185,-227 185,-152 0,-152"/>
+<polygon fill="white" stroke="transparent" points="164,-197 0,-197 0,-137 164,-137 164,-197"/>
+<text text-anchor="start" x="47" y="-185" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Constant</text>
+<text text-anchor="start" x="80" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4" y="-155" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-155" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="17" y="-144" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-180 0,-180 164,-180 164,-180 0,-180"/>
+<polygon fill="#666666" stroke="#666666" points="0,-165 0,-165 164,-165 164,-165 0,-165"/>
+<polygon fill="none" stroke="#666666" points="0,-137 0,-197 164,-197 164,-137 0,-137"/>
 </a>
 </g>
 </g>
@@ -53,8 +49,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M92.5,-141.57C92.5,-133.33 92.5,-124.67 92.5,-116.19"/>
-<polygon fill="none" stroke="#63b8ff" points="89,-141.74 92.5,-151.74 96,-141.74 89,-141.74"/>
+<path fill="none" stroke="#63b8ff" d="M82,-126.72C82,-118.47 82,-109.67 82,-101.1"/>
+<polygon fill="none" stroke="#63b8ff" points="78.5,-126.81 82,-136.81 85.5,-126.81 78.5,-126.81"/>
 </a>
 </g>
 </g>
@@ -62,23 +58,21 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:href="classtvm_1_1Expr.html" target="_top" xlink:title="Managed reference to ExprNode.">
-<polygon fill="white" stroke="transparent" points="185,-383 0,-383 0,-263 185,-263 185,-383"/>
-<text text-anchor="start" x="69" y="-371" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
-<text text-anchor="start" x="91" y="-356" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-341" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-341" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
-<text text-anchor="start" x="4.5" y="-326" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-326" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
-<text text-anchor="start" x="4.5" y="-311" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-311" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
-<text text-anchor="start" x="4.5" y="-296" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-296" font-family="Helvetica,sans-Serif" font-size="10.00">Expr()</text>
-<text text-anchor="start" x="4.5" y="-281" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-281" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-270" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-366 0.5,-366 185.5,-366 185.5,-366 0.5,-366"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-351 0.5,-351 185.5,-351 185.5,-351 0.5,-351"/>
-<polygon fill="none" stroke="#666666" points="0,-263 0,-383 185,-383 185,-263 0,-263"/>
+<polygon fill="white" stroke="transparent" points="164,-338 0,-338 0,-233 164,-233 164,-338"/>
+<text text-anchor="start" x="58" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
+<text text-anchor="start" x="80" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
+<text text-anchor="start" x="4" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
+<text text-anchor="start" x="4" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
+<text text-anchor="start" x="4" y="-250.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-250.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="17" y="-239.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-320.5 0,-320.5 164,-320.5 164,-320.5 0,-320.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-305.5 0,-305.5 164,-305.5 164,-305.5 0,-305.5"/>
+<polygon fill="none" stroke="#666666" points="0,-233 0,-338 164,-338 164,-233 0,-233"/>
 </a>
 </g>
 </g>
@@ -86,8 +80,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M92.5,-252.52C92.5,-243.77 92.5,-235.11 92.5,-227.16"/>
-<polygon fill="none" stroke="#63b8ff" points="89,-252.79 92.5,-262.79 96,-252.79 89,-252.79"/>
+<path fill="none" stroke="#63b8ff" d="M82,-222.71C82,-213.85 82,-205.09 82,-197.27"/>
+<polygon fill="none" stroke="#63b8ff" points="78.5,-222.72 82,-232.72 85.5,-222.72 78.5,-222.72"/>
 </a>
 </g>
 </g>
@@ -95,13 +89,13 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="129.5,-468 55.5,-468 55.5,-419 129.5,-419 129.5,-468"/>
-<text text-anchor="start" x="60.5" y="-455.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="90.5" y="-440.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="90.5" y="-425.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="55.5,-450.5 55.5,-450.5 129.5,-450.5 129.5,-450.5 55.5,-450.5"/>
-<polygon fill="#666666" stroke="#666666" points="55.5,-435.5 55.5,-435.5 129.5,-435.5 129.5,-435.5 55.5,-435.5"/>
-<polygon fill="none" stroke="#666666" points="55.5,-419 55.5,-468 129.5,-468 129.5,-419 55.5,-419"/>
+<polygon fill="white" stroke="transparent" points="119,-423 45,-423 45,-374 119,-374 119,-423"/>
+<text text-anchor="start" x="50" y="-410.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="80" y="-395.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="80" y="-380.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="45,-405.5 45,-405.5 119,-405.5 119,-405.5 45,-405.5"/>
+<polygon fill="#666666" stroke="#666666" points="45,-390.5 45,-390.5 119,-390.5 119,-390.5 45,-390.5"/>
+<polygon fill="none" stroke="#666666" points="45,-374 45,-423 119,-423 119,-374 45,-374"/>
 </a>
 </g>
 </g>
@@ -109,8 +103,8 @@
 <g id="edge3_Node000003_Node000004" class="edge">
 <title>Node4&#45;&gt;Node3</title>
 <g id="a_edge3_Node000003_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M92.5,-408.59C92.5,-400.71 92.5,-392.09 92.5,-383.47"/>
-<polygon fill="none" stroke="#63b8ff" points="89,-408.8 92.5,-418.8 96,-408.8 89,-408.8"/>
+<path fill="none" stroke="#63b8ff" d="M82,-363.85C82,-355.79 82,-347 82,-338.32"/>
+<polygon fill="none" stroke="#63b8ff" points="78.5,-363.96 82,-373.96 85.5,-363.96 78.5,-363.96"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1DataTypeImm__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1DataTypeImm__inherit__graph.svg
index 9dc9153fe7c..5200dc3db80 100644
--- a/docs/reference/api/doxygen/classtvm_1_1DataTypeImm__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1DataTypeImm__inherit__graph.svg
@@ -4,30 +4,28 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::DataTypeImm Pages: 1 -->
-<svg width="193pt" height="476pt"
- viewBox="0.00 0.00 193.00 476.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 472)">
+<svg width="172pt" height="431pt"
+ viewBox="0.00 0.00 172.00 431.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 427)">
 <title>tvm::DataTypeImm</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="Managed reference to a data type literal.">
-<polygon fill="#999999" stroke="transparent" points="185,-116 0,-116 0,0 185,0 185,-116"/>
-<text text-anchor="start" x="46" y="-104" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DataTypeImm</text>
-<text text-anchor="start" x="91" y="-89" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">DataTypeImm()</text>
-<text text-anchor="start" x="4.5" y="-59" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-59" font-family="Helvetica,sans-Serif" font-size="10.00">DataTypeImm()</text>
-<text text-anchor="start" x="4.5" y="-44" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-44" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="4.5" y="-18" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-18" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="17.5" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-99 0.5,-99 185.5,-99 185.5,-99 0.5,-99"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-84 0.5,-84 185.5,-84 185.5,-84 0.5,-84"/>
-<polygon fill="none" stroke="#666666" points="0,0 0,-116 185,-116 185,0 0,0"/>
+<polygon fill="#999999" stroke="transparent" points="164,-101 0,-101 0,0 164,0 164,-101"/>
+<text text-anchor="start" x="35" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DataTypeImm</text>
+<text text-anchor="start" x="80" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4" y="-58.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-58.5" font-family="Helvetica,sans-Serif" font-size="10.00">DataTypeImm()</text>
+<text text-anchor="start" x="4" y="-43.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-43.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="17" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="4" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="17" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-83.5 0,-83.5 164,-83.5 164,-83.5 0,-83.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-68.5 0,-68.5 164,-68.5 164,-68.5 0,-68.5"/>
+<polygon fill="none" stroke="#666666" points="0,0 0,-101 164,-101 164,0 0,0"/>
 </a>
 </g>
 </g>
@@ -35,17 +33,15 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1Constant.html" target="_top" xlink:title="Managed reference to a literal constant.">
-<polygon fill="white" stroke="transparent" points="185,-227 0,-227 0,-152 185,-152 185,-227"/>
-<text text-anchor="start" x="58" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Constant</text>
-<text text-anchor="start" x="91" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">Constant()</text>
-<text text-anchor="start" x="4.5" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-209.5 0.5,-209.5 185.5,-209.5 185.5,-209.5 0.5,-209.5"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-194.5 0.5,-194.5 185.5,-194.5 185.5,-194.5 0.5,-194.5"/>
-<polygon fill="none" stroke="#666666" points="0,-152 0,-227 185,-227 185,-152 0,-152"/>
+<polygon fill="white" stroke="transparent" points="164,-197 0,-197 0,-137 164,-137 164,-197"/>
+<text text-anchor="start" x="47" y="-185" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Constant</text>
+<text text-anchor="start" x="80" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4" y="-155" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-155" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="17" y="-144" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-180 0,-180 164,-180 164,-180 0,-180"/>
+<polygon fill="#666666" stroke="#666666" points="0,-165 0,-165 164,-165 164,-165 0,-165"/>
+<polygon fill="none" stroke="#666666" points="0,-137 0,-197 164,-197 164,-137 0,-137"/>
 </a>
 </g>
 </g>
@@ -53,8 +49,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M92.5,-141.57C92.5,-133.33 92.5,-124.67 92.5,-116.19"/>
-<polygon fill="none" stroke="#63b8ff" points="89,-141.74 92.5,-151.74 96,-141.74 89,-141.74"/>
+<path fill="none" stroke="#63b8ff" d="M82,-126.72C82,-118.47 82,-109.67 82,-101.1"/>
+<polygon fill="none" stroke="#63b8ff" points="78.5,-126.81 82,-136.81 85.5,-126.81 78.5,-126.81"/>
 </a>
 </g>
 </g>
@@ -62,23 +58,21 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:href="classtvm_1_1Expr.html" target="_top" xlink:title="Managed reference to ExprNode.">
-<polygon fill="white" stroke="transparent" points="185,-383 0,-383 0,-263 185,-263 185,-383"/>
-<text text-anchor="start" x="69" y="-371" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
-<text text-anchor="start" x="91" y="-356" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-341" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-341" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
-<text text-anchor="start" x="4.5" y="-326" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-326" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
-<text text-anchor="start" x="4.5" y="-311" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-311" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
-<text text-anchor="start" x="4.5" y="-296" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-296" font-family="Helvetica,sans-Serif" font-size="10.00">Expr()</text>
-<text text-anchor="start" x="4.5" y="-281" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-281" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-270" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-366 0.5,-366 185.5,-366 185.5,-366 0.5,-366"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-351 0.5,-351 185.5,-351 185.5,-351 0.5,-351"/>
-<polygon fill="none" stroke="#666666" points="0,-263 0,-383 185,-383 185,-263 0,-263"/>
+<polygon fill="white" stroke="transparent" points="164,-338 0,-338 0,-233 164,-233 164,-338"/>
+<text text-anchor="start" x="58" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
+<text text-anchor="start" x="80" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
+<text text-anchor="start" x="4" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
+<text text-anchor="start" x="4" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
+<text text-anchor="start" x="4" y="-250.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-250.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="17" y="-239.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-320.5 0,-320.5 164,-320.5 164,-320.5 0,-320.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-305.5 0,-305.5 164,-305.5 164,-305.5 0,-305.5"/>
+<polygon fill="none" stroke="#666666" points="0,-233 0,-338 164,-338 164,-233 0,-233"/>
 </a>
 </g>
 </g>
@@ -86,8 +80,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M92.5,-252.52C92.5,-243.77 92.5,-235.11 92.5,-227.16"/>
-<polygon fill="none" stroke="#63b8ff" points="89,-252.79 92.5,-262.79 96,-252.79 89,-252.79"/>
+<path fill="none" stroke="#63b8ff" d="M82,-222.71C82,-213.85 82,-205.09 82,-197.27"/>
+<polygon fill="none" stroke="#63b8ff" points="78.5,-222.72 82,-232.72 85.5,-222.72 78.5,-222.72"/>
 </a>
 </g>
 </g>
@@ -95,13 +89,13 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="129.5,-468 55.5,-468 55.5,-419 129.5,-419 129.5,-468"/>
-<text text-anchor="start" x="60.5" y="-455.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="90.5" y="-440.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="90.5" y="-425.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="55.5,-450.5 55.5,-450.5 129.5,-450.5 129.5,-450.5 55.5,-450.5"/>
-<polygon fill="#666666" stroke="#666666" points="55.5,-435.5 55.5,-435.5 129.5,-435.5 129.5,-435.5 55.5,-435.5"/>
-<polygon fill="none" stroke="#666666" points="55.5,-419 55.5,-468 129.5,-468 129.5,-419 55.5,-419"/>
+<polygon fill="white" stroke="transparent" points="119,-423 45,-423 45,-374 119,-374 119,-423"/>
+<text text-anchor="start" x="50" y="-410.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="80" y="-395.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="80" y="-380.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="45,-405.5 45,-405.5 119,-405.5 119,-405.5 45,-405.5"/>
+<polygon fill="#666666" stroke="#666666" points="45,-390.5 45,-390.5 119,-390.5 119,-390.5 45,-390.5"/>
+<polygon fill="none" stroke="#666666" points="45,-374 45,-423 119,-423 119,-374 45,-374"/>
 </a>
 </g>
 </g>
@@ -109,8 +103,8 @@
 <g id="edge3_Node000003_Node000004" class="edge">
 <title>Node4&#45;&gt;Node3</title>
 <g id="a_edge3_Node000003_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M92.5,-408.59C92.5,-400.71 92.5,-392.09 92.5,-383.47"/>
-<polygon fill="none" stroke="#63b8ff" points="89,-408.8 92.5,-418.8 96,-408.8 89,-408.8"/>
+<path fill="none" stroke="#63b8ff" d="M82,-363.85C82,-355.79 82,-347 82,-338.32"/>
+<polygon fill="none" stroke="#63b8ff" points="78.5,-363.96 82,-373.96 85.5,-363.96 78.5,-363.96"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1Expr-members.html b/docs/reference/api/doxygen/classtvm_1_1Expr-members.html
index 1a379b72a71..46240669d0d 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Expr-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1Expr-members.html
@@ -79,11 +79,10 @@ $(function() {
 
 <p>This is the complete list of members for <a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#aad84c3380b07b63427dda3697a78b269">Expr</a>(ffi::ObjectPtr&lt; ExprNode &gt; node)</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a86bd9da75268e479e3bbe61729dce8ac">operator!=</a>(const Expr &amp;other) const =delete</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#afb14020d9ae652a64a6f15dcba073c0e">operator&lt;</a>(const Expr &amp;other) const =delete</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a637231cfc91838b8f14745ac199b5fbf">operator==</a>(const Expr &amp;other) const =delete</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a26775d381ee6e7c7bb65b8a7320f5b87">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(Expr, ffi::ObjectRef, ExprNode)</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a86bd9da75268e479e3bbe61729dce8ac">operator!=</a>(const Expr &amp;other) const =delete</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#afb14020d9ae652a64a6f15dcba073c0e">operator&lt;</a>(const Expr &amp;other) const =delete</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a637231cfc91838b8f14745ac199b5fbf">operator==</a>(const Expr &amp;other) const =delete</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a081d3512d899e352e81e8eda6385c444">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(Expr, ffi::ObjectRef, ExprNode)</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1Expr.html b/docs/reference/api/doxygen/classtvm_1_1Expr.html
index 41fbe2ad80e..d28a668cfe0 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Expr.html
+++ b/docs/reference/api/doxygen/classtvm_1_1Expr.html
@@ -87,12 +87,12 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::Expr:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1Expr__inherit__graph.svg" width="10002" height="1480"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1Expr__inherit__graph.svg" width="8966" height="1400"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::Expr:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1Expr__coll__graph.svg" width="258" height="284"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1Expr__coll__graph.svg" width="230" height="264"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
@@ -103,42 +103,13 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:a86bd9da75268e479e3bbe61729dce8ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:afb14020d9ae652a64a6f15dcba073c0e" id="r_afb14020d9ae652a64a6f15dcba073c0e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Expr.html#afb14020d9ae652a64a6f15dcba073c0e">operator&lt;</a> (const <a class="el" href="classtvm_1_1Expr.html">Expr</a> &amp;other) const =delete</td></tr>
 <tr class="separator:afb14020d9ae652a64a6f15dcba073c0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aad84c3380b07b63427dda3697a78b269" id="r_aad84c3380b07b63427dda3697a78b269"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Expr.html#aad84c3380b07b63427dda3697a78b269">Expr</a> (ffi::ObjectPtr&lt; <a class="el" href="classtvm_1_1ExprNode.html">ExprNode</a> &gt; node)</td></tr>
-<tr class="separator:aad84c3380b07b63427dda3697a78b269"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a26775d381ee6e7c7bb65b8a7320f5b87" id="r_a26775d381ee6e7c7bb65b8a7320f5b87"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Expr.html#a26775d381ee6e7c7bb65b8a7320f5b87">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a> (<a class="el" href="classtvm_1_1Expr.html">Expr</a>, ffi::ObjectRef, <a class="el" href="classtvm_1_1ExprNode.html">ExprNode</a>)</td></tr>
-<tr class="separator:a26775d381ee6e7c7bb65b8a7320f5b87"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a081d3512d899e352e81e8eda6385c444" id="r_a081d3512d899e352e81e8eda6385c444"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1Expr.html#a081d3512d899e352e81e8eda6385c444">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a> (<a class="el" href="classtvm_1_1Expr.html">Expr</a>, ffi::ObjectRef, <a class="el" href="classtvm_1_1ExprNode.html">ExprNode</a>)</td></tr>
+<tr class="separator:a081d3512d899e352e81e8eda6385c444"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Managed reference to <a class="el" href="classtvm_1_1ExprNode.html" title="Base type of all the expressions.">ExprNode</a>. </p>
 <dl class="section see"><dt>See also</dt><dd><a class="el" href="classtvm_1_1ExprNode.html" title="Base type of all the expressions.">ExprNode</a> </dd></dl>
-</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a id="aad84c3380b07b63427dda3697a78b269" name="aad84c3380b07b63427dda3697a78b269"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aad84c3380b07b63427dda3697a78b269">&#9670;&#160;</a></span>Expr()</h2>
-
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">tvm::Expr::Expr </td>
-          <td>(</td>
-          <td class="paramtype">ffi::ObjectPtr&lt; <a class="el" href="classtvm_1_1ExprNode.html">ExprNode</a> &gt;&#160;</td>
-          <td class="paramname"><em>node</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<h2 class="groupheader">Member Function Documentation</h2>
+</div><h2 class="groupheader">Member Function Documentation</h2>
 <a id="a86bd9da75268e479e3bbe61729dce8ac" name="a86bd9da75268e479e3bbe61729dce8ac"></a>
 <h2 class="memtitle"><span class="permalink"><a href="#a86bd9da75268e479e3bbe61729dce8ac">&#9670;&#160;</a></span>operator!=()</h2>
 
@@ -217,14 +188,14 @@ Public Member Functions</h2></td></tr>
 
 </div>
 </div>
-<a id="a26775d381ee6e7c7bb65b8a7320f5b87" name="a26775d381ee6e7c7bb65b8a7320f5b87"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a26775d381ee6e7c7bb65b8a7320f5b87">&#9670;&#160;</a></span>TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE()</h2>
+<a id="a081d3512d899e352e81e8eda6385c444" name="a081d3512d899e352e81e8eda6385c444"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a081d3512d899e352e81e8eda6385c444">&#9670;&#160;</a></span>TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE()</h2>
 
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">tvm::Expr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE </td>
+          <td class="memname">tvm::Expr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE </td>
           <td>(</td>
           <td class="paramtype"><a class="el" href="classtvm_1_1Expr.html">Expr</a>&#160;</td>
           <td class="paramname">, </td>
diff --git a/docs/reference/api/doxygen/classtvm_1_1ExprMutator.html b/docs/reference/api/doxygen/classtvm_1_1ExprMutator.html
index 5ecdab484f0..f39c84479d3 100644
--- a/docs/reference/api/doxygen/classtvm_1_1ExprMutator.html
+++ b/docs/reference/api/doxygen/classtvm_1_1ExprMutator.html
@@ -89,7 +89,7 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::ExprMutator:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1ExprMutator__inherit__graph.svg" width="214" height="1350"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1ExprMutator__inherit__graph.svg" width="214" height="1430"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::ExprMutator:</div>
diff --git a/docs/reference/api/doxygen/classtvm_1_1ExprMutator__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1ExprMutator__inherit__graph.svg
index b16ca4ea3ec..7fe74c753f6 100644
--- a/docs/reference/api/doxygen/classtvm_1_1ExprMutator__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1ExprMutator__inherit__graph.svg
@@ -4,21 +4,29 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::ExprMutator Pages: 1 -->
-<svg width="160pt" height="1012pt"
- viewBox="0.00 0.00 160.00 1012.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1008)">
+<svg width="160pt" height="1072pt"
+ viewBox="0.00 0.00 160.00 1072.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1068)">
 <title>tvm::ExprMutator</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="Structural Expr mutator with native overrides for core expressions and structural fallback for other ...">
-<polygon fill="#999999" stroke="transparent" points="149,-669 3,-669 3,-425 149,-425 149,-669"/>
-<text text-anchor="start" x="33" y="-657" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ExprMutator</text>
-<text text-anchor="start" x="74" y="-642" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#999999" stroke="transparent" points="149,-729 3,-729 3,-485 149,-485 149,-729"/>
+<text text-anchor="start" x="33" y="-717" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ExprMutator</text>
+<text text-anchor="start" x="74" y="-702" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="7" y="-687" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="20" y="-687" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate()</text>
+<text text-anchor="start" x="7" y="-672" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="20" y="-672" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate()</text>
+<text text-anchor="start" x="7" y="-657" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="20" y="-657" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate_()</text>
+<text text-anchor="start" x="7" y="-642" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="20" y="-642" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate_()</text>
 <text text-anchor="start" x="7" y="-627" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="20" y="-627" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate()</text>
+<text text-anchor="start" x="20" y="-627" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate_()</text>
 <text text-anchor="start" x="7" y="-612" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="20" y="-612" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate()</text>
+<text text-anchor="start" x="20" y="-612" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate_()</text>
 <text text-anchor="start" x="7" y="-597" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="20" y="-597" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate_()</text>
 <text text-anchor="start" x="7" y="-582" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -27,24 +35,16 @@
 <text text-anchor="start" x="20" y="-567" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate_()</text>
 <text text-anchor="start" x="7" y="-552" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="20" y="-552" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate_()</text>
-<text text-anchor="start" x="7" y="-537" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="20" y="-537" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate_()</text>
-<text text-anchor="start" x="7" y="-522" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="20" y="-522" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate_()</text>
-<text text-anchor="start" x="7" y="-507" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="20" y="-507" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate_()</text>
-<text text-anchor="start" x="7" y="-492" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="20" y="-492" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate_()</text>
-<text text-anchor="start" x="20" y="-477" font-family="Helvetica,sans-Serif" font-size="10.00">and 37 more...</text>
-<text text-anchor="start" x="7" y="-462" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
-<text text-anchor="start" x="20" y="-462" font-family="Helvetica,sans-Serif" font-size="10.00">ExprMutator()</text>
-<text text-anchor="start" x="7" y="-447" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
-<text text-anchor="start" x="20" y="-447" font-family="Helvetica,sans-Serif" font-size="10.00">ReinferMutatedCallType()</text>
-<text text-anchor="start" x="7" y="-432" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
-<text text-anchor="start" x="20" y="-432" font-family="Helvetica,sans-Serif" font-size="10.00">InitVTable()</text>
-<polygon fill="#666666" stroke="#666666" points="3,-652 3,-652 149,-652 149,-652 3,-652"/>
-<polygon fill="#666666" stroke="#666666" points="3,-637 3,-637 149,-637 149,-637 3,-637"/>
-<polygon fill="none" stroke="#666666" points="3,-425 3,-669 149,-669 149,-425 3,-425"/>
+<text text-anchor="start" x="20" y="-537" font-family="Helvetica,sans-Serif" font-size="10.00">and 37 more...</text>
+<text text-anchor="start" x="7" y="-522" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
+<text text-anchor="start" x="20" y="-522" font-family="Helvetica,sans-Serif" font-size="10.00">ExprMutator()</text>
+<text text-anchor="start" x="7" y="-507" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
+<text text-anchor="start" x="20" y="-507" font-family="Helvetica,sans-Serif" font-size="10.00">ReinferMutatedCallType()</text>
+<text text-anchor="start" x="7" y="-492" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
+<text text-anchor="start" x="20" y="-492" font-family="Helvetica,sans-Serif" font-size="10.00">InitVTable()</text>
+<polygon fill="#666666" stroke="#666666" points="3,-712 3,-712 149,-712 149,-712 3,-712"/>
+<polygon fill="#666666" stroke="#666666" points="3,-697 3,-697 149,-697 149,-697 3,-697"/>
+<polygon fill="none" stroke="#666666" points="3,-485 3,-729 149,-729 149,-485 3,-485"/>
 </a>
 </g>
 </g>
@@ -52,13 +52,21 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1tirx_1_1StmtExprMutator.html" target="_top" xlink:title="Mutator that recursively mutates stmts and exprs on them.">
-<polygon fill="white" stroke="transparent" points="147,-389 5,-389 5,-160 147,-160 147,-389"/>
-<text text-anchor="start" x="10" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::StmtExprMutator</text>
-<text text-anchor="start" x="74" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="white" stroke="transparent" points="147,-449 5,-449 5,-160 147,-160 147,-449"/>
+<text text-anchor="start" x="10" y="-436.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::StmtExprMutator</text>
+<text text-anchor="start" x="74" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="16.5" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="37" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate()</text>
+<text text-anchor="start" x="16.5" y="-391.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="37" y="-391.5" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate_()</text>
+<text text-anchor="start" x="16.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="37" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate_()</text>
+<text text-anchor="start" x="16.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="37" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate_()</text>
 <text text-anchor="start" x="16.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="37" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate()</text>
+<text text-anchor="start" x="37" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate_()</text>
 <text text-anchor="start" x="16.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="37" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate()</text>
+<text text-anchor="start" x="37" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate_()</text>
 <text text-anchor="start" x="16.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="37" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate_()</text>
 <text text-anchor="start" x="16.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -75,14 +83,15 @@
 <text text-anchor="start" x="37" y="-226.5" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate_()</text>
 <text text-anchor="start" x="16.5" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="37" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate_()</text>
-<text text-anchor="start" x="37" y="-196.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 6 more...</text>
+<text text-anchor="start" x="16.5" y="-196.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="37" y="-196.5" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate_()</text>
 <text text-anchor="start" x="16.5" y="-181.5" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
 <text text-anchor="start" x="37" y="-181.5" font-family="Helvetica,sans-Serif" font-size="10.00">StmtExprMutator()</text>
 <text text-anchor="start" x="16.5" y="-166.5" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
 <text text-anchor="start" x="37" y="-166.5" font-family="Helvetica,sans-Serif" font-size="10.00">InitVTable()</text>
-<polygon fill="#666666" stroke="#666666" points="5,-371.5 5,-371.5 147,-371.5 147,-371.5 5,-371.5"/>
-<polygon fill="#666666" stroke="#666666" points="5,-356.5 5,-356.5 147,-356.5 147,-356.5 5,-356.5"/>
-<polygon fill="none" stroke="#666666" points="5,-160 5,-389 147,-389 147,-160 5,-160"/>
+<polygon fill="#666666" stroke="#666666" points="5,-431.5 5,-431.5 147,-431.5 147,-431.5 5,-431.5"/>
+<polygon fill="#666666" stroke="#666666" points="5,-416.5 5,-416.5 147,-416.5 147,-416.5 5,-416.5"/>
+<polygon fill="none" stroke="#666666" points="5,-160 5,-449 147,-449 147,-160 5,-160"/>
 </a>
 </g>
 </g>
@@ -90,8 +99,8 @@
 <g id="edge3_Node000001_Node000004" class="edge">
 <title>Node1&#45;&gt;Node4</title>
 <g id="a_edge3_Node000001_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M76,-414.88C76,-406.24 76,-397.59 76,-389.05"/>
-<polygon fill="none" stroke="#63b8ff" points="72.5,-414.99 76,-424.99 79.5,-414.99 72.5,-414.99"/>
+<path fill="none" stroke="#63b8ff" d="M76,-474.42C76,-466 76,-457.5 76,-449.03"/>
+<polygon fill="none" stroke="#63b8ff" points="72.5,-474.64 76,-484.64 79.5,-474.64 72.5,-474.64"/>
 </a>
 </g>
 </g>
@@ -99,36 +108,36 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1ObjectMutator.html" target="_top" xlink:title="Native mutation with exact dispatch and structural fallback.">
-<polygon fill="white" stroke="transparent" points="147,-919 5,-919 5,-705 147,-705 147,-919"/>
-<text text-anchor="start" x="28" y="-907" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ObjectMutator</text>
-<text text-anchor="start" x="74" y="-892" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="white" stroke="transparent" points="147,-979 5,-979 5,-765 147,-765 147,-979"/>
+<text text-anchor="start" x="28" y="-967" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ObjectMutator</text>
+<text text-anchor="start" x="74" y="-952" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="9" y="-937" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="22" y="-937" font-family="Helvetica,sans-Serif" font-size="10.00">ObjectMutator()</text>
+<text text-anchor="start" x="9" y="-922" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="22" y="-922" font-family="Helvetica,sans-Serif" font-size="10.00">ObjectMutator()</text>
+<text text-anchor="start" x="9" y="-907" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="22" y="-907" font-family="Helvetica,sans-Serif" font-size="10.00">operator=()</text>
+<text text-anchor="start" x="9" y="-892" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="22" y="-892" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate()</text>
 <text text-anchor="start" x="9" y="-877" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="22" y="-877" font-family="Helvetica,sans-Serif" font-size="10.00">ObjectMutator()</text>
+<text text-anchor="start" x="22" y="-877" font-family="Helvetica,sans-Serif" font-size="10.00">MutateExpected()</text>
 <text text-anchor="start" x="9" y="-862" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="22" y="-862" font-family="Helvetica,sans-Serif" font-size="10.00">ObjectMutator()</text>
+<text text-anchor="start" x="22" y="-862" font-family="Helvetica,sans-Serif" font-size="10.00">VarRemapGet()</text>
 <text text-anchor="start" x="9" y="-847" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="22" y="-847" font-family="Helvetica,sans-Serif" font-size="10.00">operator=()</text>
+<text text-anchor="start" x="22" y="-847" font-family="Helvetica,sans-Serif" font-size="10.00">VarRemapSet()</text>
 <text text-anchor="start" x="9" y="-832" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="22" y="-832" font-family="Helvetica,sans-Serif" font-size="10.00">Mutate()</text>
+<text text-anchor="start" x="22" y="-832" font-family="Helvetica,sans-Serif" font-size="10.00">VarRemapGetExpected()</text>
 <text text-anchor="start" x="9" y="-817" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="22" y="-817" font-family="Helvetica,sans-Serif" font-size="10.00">MutateExpected()</text>
-<text text-anchor="start" x="9" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="22" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00">VarRemapGet()</text>
-<text text-anchor="start" x="9" y="-787" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="22" y="-787" font-family="Helvetica,sans-Serif" font-size="10.00">VarRemapSet()</text>
-<text text-anchor="start" x="9" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="22" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00">VarRemapGetExpected()</text>
-<text text-anchor="start" x="9" y="-757" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="22" y="-757" font-family="Helvetica,sans-Serif" font-size="10.00">VarRemapSetExpected()</text>
-<text text-anchor="start" x="9" y="-742" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
-<text text-anchor="start" x="22" y="-742" font-family="Helvetica,sans-Serif" font-size="10.00">ObjectMutator()</text>
-<text text-anchor="start" x="9" y="-727" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
-<text text-anchor="start" x="22" y="-727" font-family="Helvetica,sans-Serif" font-size="10.00">InitVTable()</text>
-<text text-anchor="start" x="9" y="-712" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
-<text text-anchor="start" x="22" y="-712" font-family="Helvetica,sans-Serif" font-size="10.00">SetDispatch()</text>
-<polygon fill="#666666" stroke="#666666" points="5,-902 5,-902 147,-902 147,-902 5,-902"/>
-<polygon fill="#666666" stroke="#666666" points="5,-887 5,-887 147,-887 147,-887 5,-887"/>
-<polygon fill="none" stroke="#666666" points="5,-705 5,-919 147,-919 147,-705 5,-705"/>
+<text text-anchor="start" x="22" y="-817" font-family="Helvetica,sans-Serif" font-size="10.00">VarRemapSetExpected()</text>
+<text text-anchor="start" x="9" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
+<text text-anchor="start" x="22" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00">ObjectMutator()</text>
+<text text-anchor="start" x="9" y="-787" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
+<text text-anchor="start" x="22" y="-787" font-family="Helvetica,sans-Serif" font-size="10.00">InitVTable()</text>
+<text text-anchor="start" x="9" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
+<text text-anchor="start" x="22" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00">SetDispatch()</text>
+<polygon fill="#666666" stroke="#666666" points="5,-962 5,-962 147,-962 147,-962 5,-962"/>
+<polygon fill="#666666" stroke="#666666" points="5,-947 5,-947 147,-947 147,-947 5,-947"/>
+<polygon fill="none" stroke="#666666" points="5,-765 5,-979 147,-979 147,-765 5,-765"/>
 </a>
 </g>
 </g>
@@ -136,8 +145,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M76,-694.59C76,-686.19 76,-677.7 76,-669.27"/>
-<polygon fill="none" stroke="#63b8ff" points="72.5,-694.79 76,-704.79 79.5,-694.79 72.5,-694.79"/>
+<path fill="none" stroke="#63b8ff" d="M76,-754.59C76,-746.19 76,-737.7 76,-729.27"/>
+<polygon fill="none" stroke="#63b8ff" points="72.5,-754.79 76,-764.79 79.5,-754.79 72.5,-754.79"/>
 </a>
 </g>
 </g>
@@ -145,13 +154,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="152,-1004 0,-1004 0,-955 152,-955 152,-1004"/>
-<text text-anchor="start" x="5" y="-991.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::StructuralMapEngineBase</text>
-<text text-anchor="start" x="74" y="-976.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="74" y="-961.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="0,-986.5 0,-986.5 152,-986.5 152,-986.5 0,-986.5"/>
-<polygon fill="#666666" stroke="#666666" points="0,-971.5 0,-971.5 152,-971.5 152,-971.5 0,-971.5"/>
-<polygon fill="none" stroke="#666666" points="0,-955 0,-1004 152,-1004 152,-955 0,-955"/>
+<polygon fill="white" stroke="transparent" points="152,-1064 0,-1064 0,-1015 152,-1015 152,-1064"/>
+<text text-anchor="start" x="5" y="-1051.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::StructuralMapEngineBase</text>
+<text text-anchor="start" x="74" y="-1036.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="74" y="-1021.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="0,-1046.5 0,-1046.5 152,-1046.5 152,-1046.5 0,-1046.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-1031.5 0,-1031.5 152,-1031.5 152,-1031.5 0,-1031.5"/>
+<polygon fill="none" stroke="#666666" points="0,-1015 0,-1064 152,-1064 152,-1015 0,-1015"/>
 </a>
 </g>
 </g>
@@ -159,8 +168,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M76,-944.75C76,-936.93 76,-928.21 76,-919.07"/>
-<polygon fill="none" stroke="#63b8ff" points="72.5,-944.79 76,-954.79 79.5,-944.79 72.5,-944.79"/>
+<path fill="none" stroke="#63b8ff" d="M76,-1004.75C76,-996.93 76,-988.21 76,-979.07"/>
+<polygon fill="none" stroke="#63b8ff" points="72.5,-1004.79 76,-1014.79 79.5,-1004.79 72.5,-1004.79"/>
 </a>
 </g>
 </g>
@@ -193,8 +202,8 @@
 <g id="edge4_Node000004_Node000005" class="edge">
 <title>Node4&#45;&gt;Node5</title>
 <g id="a_edge4_Node000004_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M76,-149.87C76,-141 76,-132.32 76,-124.08"/>
-<polygon fill="none" stroke="#63b8ff" points="72.5,-149.93 76,-159.93 79.5,-149.93 72.5,-149.93"/>
+<path fill="none" stroke="#63b8ff" d="M76,-149.67C76,-140.8 76,-132.19 76,-124.07"/>
+<polygon fill="none" stroke="#63b8ff" points="72.5,-149.78 76,-159.78 79.5,-149.78 72.5,-149.78"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1ExprNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1ExprNode__inherit__graph.svg
index 74f714090f8..7aa09f62ee9 100644
--- a/docs/reference/api/doxygen/classtvm_1_1ExprNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1ExprNode__inherit__graph.svg
@@ -38,30 +38,26 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:href="classtvm_1_1prim_1_1BinaryOpNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="179,-409 0,-409 0,-248 179,-248 179,-409"/>
-<text text-anchor="start" x="27.5" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
-<text text-anchor="start" x="56.5" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; AddNode &gt;</text>
-<text text-anchor="start" x="4.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="179,-394 0,-394 0,-263 179,-263 179,-394"/>
+<text text-anchor="start" x="27.5" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
+<text text-anchor="start" x="56.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; AddNode &gt;</text>
 <text text-anchor="start" x="4.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="17.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="4.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="17.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="4.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
+<text text-anchor="start" x="17.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
+<text text-anchor="start" x="17.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
 <text text-anchor="start" x="4.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
-<text text-anchor="start" x="4.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
-<text text-anchor="start" x="4.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-380.5 0.5,-380.5 179.5,-380.5 179.5,-380.5 0.5,-380.5"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-320.5 0.5,-320.5 15.5,-320.5 15.5,-320.5 0.5,-320.5"/>
-<polygon fill="#666666" stroke="#666666" points="15.5,-320.5 15.5,-320.5 179.5,-320.5 179.5,-320.5 15.5,-320.5"/>
-<polygon fill="none" stroke="#666666" points="0,-248 0,-409 179,-409 179,-248 0,-248"/>
+<text text-anchor="start" x="17.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="17.5" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
+<text text-anchor="start" x="4.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="0.5,-365.5 0.5,-365.5 179.5,-365.5 179.5,-365.5 0.5,-365.5"/>
+<polygon fill="#666666" stroke="#666666" points="0.5,-305.5 0.5,-305.5 15.5,-305.5 15.5,-305.5 0.5,-305.5"/>
+<polygon fill="#666666" stroke="#666666" points="15.5,-305.5 15.5,-305.5 179.5,-305.5 179.5,-305.5 15.5,-305.5"/>
+<polygon fill="none" stroke="#666666" points="0,-263 0,-394 179,-394 179,-263 0,-263"/>
 </a>
 </g>
 </g>
@@ -69,7 +65,7 @@
 <g id="edge2_Node000001_Node000003" class="edge">
 <title>Node1&#45;&gt;Node3</title>
 <g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4452.08,-536.08C3851.43,-536.41 387.72,-534.23 187.5,-441 171.38,-433.49 156.83,-421.93 144.17,-409.05"/>
+<path fill="none" stroke="#63b8ff" d="M4452.08,-536.08C3851.43,-536.41 387.72,-534.23 187.5,-441 165.3,-430.67 146.09,-412.65 130.69,-394.07"/>
 <polygon fill="none" stroke="#63b8ff" points="4452.41,-539.58 4462.41,-536.08 4452.4,-532.58 4452.41,-539.58"/>
 </a>
 </g>
@@ -78,30 +74,26 @@
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:href="classtvm_1_1prim_1_1BinaryOpNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="376,-409 197,-409 197,-248 376,-248 376,-409"/>
-<text text-anchor="start" x="224.5" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
-<text text-anchor="start" x="235.5" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; BitwiseAndNode &gt;</text>
-<text text-anchor="start" x="201.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="214.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="376,-394 197,-394 197,-263 376,-263 376,-394"/>
+<text text-anchor="start" x="224.5" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
+<text text-anchor="start" x="235.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; BitwiseAndNode &gt;</text>
 <text text-anchor="start" x="201.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="214.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="214.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="201.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="214.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="214.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="201.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="214.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
+<text text-anchor="start" x="214.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="201.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="214.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
+<text text-anchor="start" x="214.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
 <text text-anchor="start" x="201.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="214.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
-<text text-anchor="start" x="201.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="214.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="214.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
-<text text-anchor="start" x="201.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="214.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="197.5,-380.5 197.5,-380.5 376.5,-380.5 376.5,-380.5 197.5,-380.5"/>
-<polygon fill="#666666" stroke="#666666" points="197.5,-320.5 197.5,-320.5 212.5,-320.5 212.5,-320.5 197.5,-320.5"/>
-<polygon fill="#666666" stroke="#666666" points="212.5,-320.5 212.5,-320.5 376.5,-320.5 376.5,-320.5 212.5,-320.5"/>
-<polygon fill="none" stroke="#666666" points="197,-248 197,-409 376,-409 376,-248 197,-248"/>
+<text text-anchor="start" x="214.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="214.5" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
+<text text-anchor="start" x="201.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="214.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="197.5,-365.5 197.5,-365.5 376.5,-365.5 376.5,-365.5 197.5,-365.5"/>
+<polygon fill="#666666" stroke="#666666" points="197.5,-305.5 197.5,-305.5 212.5,-305.5 212.5,-305.5 197.5,-305.5"/>
+<polygon fill="#666666" stroke="#666666" points="212.5,-305.5 212.5,-305.5 376.5,-305.5 376.5,-305.5 212.5,-305.5"/>
+<polygon fill="none" stroke="#666666" points="197,-263 197,-394 376,-394 376,-263 197,-263"/>
 </a>
 </g>
 </g>
@@ -109,7 +101,7 @@
 <g id="edge4_Node000001_Node000005" class="edge">
 <title>Node1&#45;&gt;Node5</title>
 <g id="a_edge4_Node000001_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4452.39,-535.99C3868.56,-535.67 575.21,-529.92 384.5,-441 368.38,-433.49 353.84,-421.92 341.18,-409.04"/>
+<path fill="none" stroke="#63b8ff" d="M4452.39,-535.99C3868.56,-535.67 575.21,-529.92 384.5,-441 362.31,-430.65 343.09,-412.63 327.7,-394.06"/>
 <polygon fill="none" stroke="#63b8ff" points="4452.43,-539.49 4462.43,-535.99 4452.43,-532.49 4452.43,-539.49"/>
 </a>
 </g>
@@ -118,30 +110,26 @@
 <g id="Node000007" class="node">
 <title>Node7</title>
 <g id="a_Node000007"><a xlink:href="classtvm_1_1prim_1_1BinaryOpNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="573,-409 394,-409 394,-248 573,-248 573,-409"/>
-<text text-anchor="start" x="421.5" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
-<text text-anchor="start" x="436" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; BitwiseOrNode &gt;</text>
-<text text-anchor="start" x="398.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="411.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="573,-394 394,-394 394,-263 573,-263 573,-394"/>
+<text text-anchor="start" x="421.5" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
+<text text-anchor="start" x="436" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; BitwiseOrNode &gt;</text>
 <text text-anchor="start" x="398.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="411.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="411.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="398.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="411.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="411.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="398.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="411.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
+<text text-anchor="start" x="411.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="398.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="411.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
+<text text-anchor="start" x="411.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
 <text text-anchor="start" x="398.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="411.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
-<text text-anchor="start" x="398.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="411.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="411.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
-<text text-anchor="start" x="398.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="411.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="394.5,-380.5 394.5,-380.5 573.5,-380.5 573.5,-380.5 394.5,-380.5"/>
-<polygon fill="#666666" stroke="#666666" points="394.5,-320.5 394.5,-320.5 409.5,-320.5 409.5,-320.5 394.5,-320.5"/>
-<polygon fill="#666666" stroke="#666666" points="409.5,-320.5 409.5,-320.5 573.5,-320.5 573.5,-320.5 409.5,-320.5"/>
-<polygon fill="none" stroke="#666666" points="394,-248 394,-409 573,-409 573,-248 394,-248"/>
+<text text-anchor="start" x="411.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="411.5" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
+<text text-anchor="start" x="398.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="411.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="394.5,-365.5 394.5,-365.5 573.5,-365.5 573.5,-365.5 394.5,-365.5"/>
+<polygon fill="#666666" stroke="#666666" points="394.5,-305.5 394.5,-305.5 409.5,-305.5 409.5,-305.5 394.5,-305.5"/>
+<polygon fill="#666666" stroke="#666666" points="409.5,-305.5 409.5,-305.5 573.5,-305.5 573.5,-305.5 409.5,-305.5"/>
+<polygon fill="none" stroke="#666666" points="394,-263 394,-394 573,-394 573,-263 394,-263"/>
 </a>
 </g>
 </g>
@@ -149,7 +137,7 @@
 <g id="edge6_Node000001_Node000007" class="edge">
 <title>Node1&#45;&gt;Node7</title>
 <g id="a_edge6_Node000001_Node000007"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4452.1,-535.88C3883.84,-534.89 762.65,-525.59 581.5,-441 565.39,-433.48 550.84,-421.91 538.19,-409.02"/>
+<path fill="none" stroke="#63b8ff" d="M4452.1,-535.88C3883.84,-534.89 762.65,-525.59 581.5,-441 559.32,-430.64 540.1,-412.62 524.71,-394.04"/>
 <polygon fill="none" stroke="#63b8ff" points="4452.27,-539.38 4462.28,-535.9 4452.29,-532.38 4452.27,-539.38"/>
 </a>
 </g>
@@ -158,30 +146,26 @@
 <g id="Node000009" class="node">
 <title>Node9</title>
 <g id="a_Node000009"><a xlink:href="classtvm_1_1prim_1_1BinaryOpNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="770,-409 591,-409 591,-248 770,-248 770,-409"/>
-<text text-anchor="start" x="618.5" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
-<text text-anchor="start" x="630.5" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; BitwiseXorNode &gt;</text>
-<text text-anchor="start" x="595.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="608.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="770,-394 591,-394 591,-263 770,-263 770,-394"/>
+<text text-anchor="start" x="618.5" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
+<text text-anchor="start" x="630.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; BitwiseXorNode &gt;</text>
 <text text-anchor="start" x="595.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="608.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="608.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="595.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="608.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="608.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="595.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="608.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
+<text text-anchor="start" x="608.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="595.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="608.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
+<text text-anchor="start" x="608.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
 <text text-anchor="start" x="595.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="608.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
-<text text-anchor="start" x="595.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="608.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="608.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
-<text text-anchor="start" x="595.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="608.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="591.5,-380.5 591.5,-380.5 770.5,-380.5 770.5,-380.5 591.5,-380.5"/>
-<polygon fill="#666666" stroke="#666666" points="591.5,-320.5 591.5,-320.5 606.5,-320.5 606.5,-320.5 591.5,-320.5"/>
-<polygon fill="#666666" stroke="#666666" points="606.5,-320.5 606.5,-320.5 770.5,-320.5 770.5,-320.5 606.5,-320.5"/>
-<polygon fill="none" stroke="#666666" points="591,-248 591,-409 770,-409 770,-248 591,-248"/>
+<text text-anchor="start" x="608.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="608.5" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
+<text text-anchor="start" x="595.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="608.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="591.5,-365.5 591.5,-365.5 770.5,-365.5 770.5,-365.5 591.5,-365.5"/>
+<polygon fill="#666666" stroke="#666666" points="591.5,-305.5 591.5,-305.5 606.5,-305.5 606.5,-305.5 591.5,-305.5"/>
+<polygon fill="#666666" stroke="#666666" points="606.5,-305.5 606.5,-305.5 770.5,-305.5 770.5,-305.5 606.5,-305.5"/>
+<polygon fill="none" stroke="#666666" points="591,-263 591,-394 770,-394 770,-263 591,-263"/>
 </a>
 </g>
 </g>
@@ -189,7 +173,7 @@
 <g id="edge8_Node000001_Node000009" class="edge">
 <title>Node1&#45;&gt;Node9</title>
 <g id="a_edge8_Node000001_Node000009"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4452.16,-535.77C3900.82,-534.08 950.13,-521.28 778.5,-441 762.39,-433.47 747.85,-421.89 735.2,-409.01"/>
+<path fill="none" stroke="#63b8ff" d="M4452.16,-535.77C3900.82,-534.08 950.13,-521.28 778.5,-441 756.32,-430.63 737.11,-412.6 721.71,-394.02"/>
 <polygon fill="none" stroke="#63b8ff" points="4452.42,-539.27 4462.43,-535.8 4452.44,-532.27 4452.42,-539.27"/>
 </a>
 </g>
@@ -198,30 +182,26 @@
 <g id="Node000011" class="node">
 <title>Node11</title>
 <g id="a_Node000011"><a xlink:href="classtvm_1_1prim_1_1BinaryOpNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="967,-409 788,-409 788,-248 967,-248 967,-409"/>
-<text text-anchor="start" x="815.5" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
-<text text-anchor="start" x="845.5" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; DivNode &gt;</text>
-<text text-anchor="start" x="792.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="805.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="967,-394 788,-394 788,-263 967,-263 967,-394"/>
+<text text-anchor="start" x="815.5" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
+<text text-anchor="start" x="845.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; DivNode &gt;</text>
 <text text-anchor="start" x="792.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="805.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="805.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="792.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="805.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="805.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="792.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="805.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
+<text text-anchor="start" x="805.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="792.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="805.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
+<text text-anchor="start" x="805.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
 <text text-anchor="start" x="792.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="805.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
-<text text-anchor="start" x="792.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="805.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="805.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
-<text text-anchor="start" x="792.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="805.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="788.5,-380.5 788.5,-380.5 967.5,-380.5 967.5,-380.5 788.5,-380.5"/>
-<polygon fill="#666666" stroke="#666666" points="788.5,-320.5 788.5,-320.5 803.5,-320.5 803.5,-320.5 788.5,-320.5"/>
-<polygon fill="#666666" stroke="#666666" points="803.5,-320.5 803.5,-320.5 967.5,-320.5 967.5,-320.5 803.5,-320.5"/>
-<polygon fill="none" stroke="#666666" points="788,-248 788,-409 967,-409 967,-248 788,-248"/>
+<text text-anchor="start" x="805.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="805.5" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
+<text text-anchor="start" x="792.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="805.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="788.5,-365.5 788.5,-365.5 967.5,-365.5 967.5,-365.5 788.5,-365.5"/>
+<polygon fill="#666666" stroke="#666666" points="788.5,-305.5 788.5,-305.5 803.5,-305.5 803.5,-305.5 788.5,-305.5"/>
+<polygon fill="#666666" stroke="#666666" points="803.5,-305.5 803.5,-305.5 967.5,-305.5 967.5,-305.5 803.5,-305.5"/>
+<polygon fill="none" stroke="#666666" points="788,-263 788,-394 967,-394 967,-263 788,-263"/>
 </a>
 </g>
 </g>
@@ -229,7 +209,7 @@
 <g id="edge10_Node000001_Node000011" class="edge">
 <title>Node1&#45;&gt;Node11</title>
 <g id="a_edge10_Node000001_Node000011"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4452.15,-535.64C3917.99,-533.21 1137.62,-516.97 975.5,-441 959.51,-433.51 945.07,-422.04 932.48,-409.27"/>
+<path fill="none" stroke="#63b8ff" d="M4452.15,-535.64C3917.99,-533.21 1137.62,-516.97 975.5,-441 953.33,-430.61 934.12,-412.58 918.72,-394.01"/>
 <polygon fill="none" stroke="#63b8ff" points="4452.47,-539.14 4462.48,-535.69 4452.5,-532.14 4452.47,-539.14"/>
 </a>
 </g>
@@ -238,30 +218,26 @@
 <g id="Node000013" class="node">
 <title>Node13</title>
 <g id="a_Node000013"><a xlink:href="classtvm_1_1prim_1_1BinaryOpNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="1164,-409 985,-409 985,-248 1164,-248 1164,-409"/>
-<text text-anchor="start" x="1012.5" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
-<text text-anchor="start" x="1030" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; FloorDivNode &gt;</text>
-<text text-anchor="start" x="989.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1002.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="1164,-394 985,-394 985,-263 1164,-263 1164,-394"/>
+<text text-anchor="start" x="1012.5" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
+<text text-anchor="start" x="1030" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; FloorDivNode &gt;</text>
 <text text-anchor="start" x="989.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1002.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="1002.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="989.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1002.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="1002.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="989.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1002.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
+<text text-anchor="start" x="1002.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="989.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1002.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
+<text text-anchor="start" x="1002.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
 <text text-anchor="start" x="989.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1002.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
-<text text-anchor="start" x="989.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1002.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="1002.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
-<text text-anchor="start" x="989.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1002.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="985.5,-380.5 985.5,-380.5 1164.5,-380.5 1164.5,-380.5 985.5,-380.5"/>
-<polygon fill="#666666" stroke="#666666" points="985.5,-320.5 985.5,-320.5 1000.5,-320.5 1000.5,-320.5 985.5,-320.5"/>
-<polygon fill="#666666" stroke="#666666" points="1000.5,-320.5 1000.5,-320.5 1164.5,-320.5 1164.5,-320.5 1000.5,-320.5"/>
-<polygon fill="none" stroke="#666666" points="985,-248 985,-409 1164,-409 1164,-248 985,-248"/>
+<text text-anchor="start" x="1002.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="1002.5" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
+<text text-anchor="start" x="989.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1002.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="985.5,-365.5 985.5,-365.5 1164.5,-365.5 1164.5,-365.5 985.5,-365.5"/>
+<polygon fill="#666666" stroke="#666666" points="985.5,-305.5 985.5,-305.5 1000.5,-305.5 1000.5,-305.5 985.5,-305.5"/>
+<polygon fill="#666666" stroke="#666666" points="1000.5,-305.5 1000.5,-305.5 1164.5,-305.5 1164.5,-305.5 1000.5,-305.5"/>
+<polygon fill="none" stroke="#666666" points="985,-263 985,-394 1164,-394 1164,-263 985,-263"/>
 </a>
 </g>
 </g>
@@ -269,7 +245,7 @@
 <g id="edge12_Node000001_Node000013" class="edge">
 <title>Node1&#45;&gt;Node13</title>
 <g id="a_edge12_Node000001_Node000013"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4452.12,-535.5C3935.61,-532.3 1325.13,-512.66 1172.5,-441 1156.52,-433.5 1142.08,-422.03 1129.49,-409.25"/>
+<path fill="none" stroke="#63b8ff" d="M4452.12,-535.5C3935.61,-532.3 1325.13,-512.66 1172.5,-441 1150.45,-430.65 1131.33,-412.75 1115.98,-394.28"/>
 <polygon fill="none" stroke="#63b8ff" points="4452.47,-539 4462.49,-535.56 4452.51,-532 4452.47,-539"/>
 </a>
 </g>
@@ -278,30 +254,26 @@
 <g id="Node000015" class="node">
 <title>Node15</title>
 <g id="a_Node000015"><a xlink:href="classtvm_1_1prim_1_1BinaryOpNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="1361,-409 1182,-409 1182,-248 1361,-248 1361,-409"/>
-<text text-anchor="start" x="1209.5" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
-<text text-anchor="start" x="1225" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; FloorModNode &gt;</text>
-<text text-anchor="start" x="1186.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1199.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="1361,-394 1182,-394 1182,-263 1361,-263 1361,-394"/>
+<text text-anchor="start" x="1209.5" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
+<text text-anchor="start" x="1225" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; FloorModNode &gt;</text>
 <text text-anchor="start" x="1186.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1199.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="1199.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="1186.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1199.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="1199.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="1186.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1199.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
+<text text-anchor="start" x="1199.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="1186.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1199.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
+<text text-anchor="start" x="1199.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
 <text text-anchor="start" x="1186.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1199.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
-<text text-anchor="start" x="1186.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1199.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="1199.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
-<text text-anchor="start" x="1186.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1199.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="1182.5,-380.5 1182.5,-380.5 1361.5,-380.5 1361.5,-380.5 1182.5,-380.5"/>
-<polygon fill="#666666" stroke="#666666" points="1182.5,-320.5 1182.5,-320.5 1197.5,-320.5 1197.5,-320.5 1182.5,-320.5"/>
-<polygon fill="#666666" stroke="#666666" points="1197.5,-320.5 1197.5,-320.5 1361.5,-320.5 1361.5,-320.5 1197.5,-320.5"/>
-<polygon fill="none" stroke="#666666" points="1182,-248 1182,-409 1361,-409 1361,-248 1182,-248"/>
+<text text-anchor="start" x="1199.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="1199.5" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
+<text text-anchor="start" x="1186.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1199.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="1182.5,-365.5 1182.5,-365.5 1361.5,-365.5 1361.5,-365.5 1182.5,-365.5"/>
+<polygon fill="#666666" stroke="#666666" points="1182.5,-305.5 1182.5,-305.5 1197.5,-305.5 1197.5,-305.5 1182.5,-305.5"/>
+<polygon fill="#666666" stroke="#666666" points="1197.5,-305.5 1197.5,-305.5 1361.5,-305.5 1361.5,-305.5 1197.5,-305.5"/>
+<polygon fill="none" stroke="#666666" points="1182,-263 1182,-394 1361,-394 1361,-263 1182,-263"/>
 </a>
 </g>
 </g>
@@ -309,7 +281,7 @@
 <g id="edge14_Node000001_Node000015" class="edge">
 <title>Node1&#45;&gt;Node15</title>
 <g id="a_edge14_Node000001_Node000015"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4452.11,-535.33C3953.81,-531.34 1512.65,-508.36 1369.5,-441 1353.53,-433.48 1339.08,-422.01 1326.5,-409.23"/>
+<path fill="none" stroke="#63b8ff" d="M4452.11,-535.33C3953.81,-531.34 1512.65,-508.36 1369.5,-441 1347.46,-430.63 1328.34,-412.72 1312.99,-394.26"/>
 <polygon fill="none" stroke="#63b8ff" points="4452.1,-538.83 4462.12,-535.41 4452.15,-531.84 4452.1,-538.83"/>
 </a>
 </g>
@@ -318,30 +290,26 @@
 <g id="Node000017" class="node">
 <title>Node17</title>
 <g id="a_Node000017"><a xlink:href="classtvm_1_1prim_1_1BinaryOpNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="1558,-409 1379,-409 1379,-248 1558,-248 1558,-409"/>
-<text text-anchor="start" x="1406.5" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
-<text text-anchor="start" x="1431" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; LShiftNode &gt;</text>
-<text text-anchor="start" x="1383.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1396.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="1558,-394 1379,-394 1379,-263 1558,-263 1558,-394"/>
+<text text-anchor="start" x="1406.5" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
+<text text-anchor="start" x="1431" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; LShiftNode &gt;</text>
 <text text-anchor="start" x="1383.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1396.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="1396.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="1383.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1396.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="1396.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="1383.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1396.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
+<text text-anchor="start" x="1396.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="1383.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1396.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
+<text text-anchor="start" x="1396.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
 <text text-anchor="start" x="1383.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1396.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
-<text text-anchor="start" x="1383.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1396.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="1396.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
-<text text-anchor="start" x="1383.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1396.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="1379.5,-380.5 1379.5,-380.5 1558.5,-380.5 1558.5,-380.5 1379.5,-380.5"/>
-<polygon fill="#666666" stroke="#666666" points="1379.5,-320.5 1379.5,-320.5 1394.5,-320.5 1394.5,-320.5 1379.5,-320.5"/>
-<polygon fill="#666666" stroke="#666666" points="1394.5,-320.5 1394.5,-320.5 1558.5,-320.5 1558.5,-320.5 1394.5,-320.5"/>
-<polygon fill="none" stroke="#666666" points="1379,-248 1379,-409 1558,-409 1558,-248 1379,-248"/>
+<text text-anchor="start" x="1396.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="1396.5" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
+<text text-anchor="start" x="1383.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1396.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="1379.5,-365.5 1379.5,-365.5 1558.5,-365.5 1558.5,-365.5 1379.5,-365.5"/>
+<polygon fill="#666666" stroke="#666666" points="1379.5,-305.5 1379.5,-305.5 1394.5,-305.5 1394.5,-305.5 1379.5,-305.5"/>
+<polygon fill="#666666" stroke="#666666" points="1394.5,-305.5 1394.5,-305.5 1558.5,-305.5 1558.5,-305.5 1394.5,-305.5"/>
+<polygon fill="none" stroke="#666666" points="1379,-263 1379,-394 1558,-394 1558,-263 1379,-263"/>
 </a>
 </g>
 </g>
@@ -349,7 +317,7 @@
 <g id="edge16_Node000001_Node000017" class="edge">
 <title>Node1&#45;&gt;Node17</title>
 <g id="a_edge16_Node000001_Node000017"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4451.9,-535.15C3971.96,-530.3 1700.16,-504.06 1566.5,-441 1550.53,-433.47 1536.1,-421.98 1523.51,-409.2"/>
+<path fill="none" stroke="#63b8ff" d="M4451.9,-535.15C3971.96,-530.3 1700.16,-504.06 1566.5,-441 1544.47,-430.61 1525.36,-412.69 1510,-394.23"/>
 <polygon fill="none" stroke="#63b8ff" points="4452.2,-538.65 4462.23,-535.25 4452.27,-531.65 4452.2,-538.65"/>
 </a>
 </g>
@@ -358,30 +326,26 @@
 <g id="Node000019" class="node">
 <title>Node19</title>
 <g id="a_Node000019"><a xlink:href="classtvm_1_1prim_1_1BinaryOpNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="1755,-409 1576,-409 1576,-248 1755,-248 1755,-409"/>
-<text text-anchor="start" x="1603.5" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
-<text text-anchor="start" x="1631" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; MaxNode &gt;</text>
-<text text-anchor="start" x="1580.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1593.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="1755,-394 1576,-394 1576,-263 1755,-263 1755,-394"/>
+<text text-anchor="start" x="1603.5" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
+<text text-anchor="start" x="1631" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; MaxNode &gt;</text>
 <text text-anchor="start" x="1580.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1593.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="1593.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="1580.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1593.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="1593.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="1580.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1593.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
+<text text-anchor="start" x="1593.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="1580.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1593.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
+<text text-anchor="start" x="1593.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
 <text text-anchor="start" x="1580.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1593.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
-<text text-anchor="start" x="1580.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1593.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="1593.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
-<text text-anchor="start" x="1580.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1593.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="1576.5,-380.5 1576.5,-380.5 1755.5,-380.5 1755.5,-380.5 1576.5,-380.5"/>
-<polygon fill="#666666" stroke="#666666" points="1576.5,-320.5 1576.5,-320.5 1591.5,-320.5 1591.5,-320.5 1576.5,-320.5"/>
-<polygon fill="#666666" stroke="#666666" points="1591.5,-320.5 1591.5,-320.5 1755.5,-320.5 1755.5,-320.5 1591.5,-320.5"/>
-<polygon fill="none" stroke="#666666" points="1576,-248 1576,-409 1755,-409 1755,-248 1576,-248"/>
+<text text-anchor="start" x="1593.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="1593.5" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
+<text text-anchor="start" x="1580.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1593.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="1576.5,-365.5 1576.5,-365.5 1755.5,-365.5 1755.5,-365.5 1576.5,-365.5"/>
+<polygon fill="#666666" stroke="#666666" points="1576.5,-305.5 1576.5,-305.5 1591.5,-305.5 1591.5,-305.5 1576.5,-305.5"/>
+<polygon fill="#666666" stroke="#666666" points="1591.5,-305.5 1591.5,-305.5 1755.5,-305.5 1755.5,-305.5 1591.5,-305.5"/>
+<polygon fill="none" stroke="#666666" points="1576,-263 1576,-394 1755,-394 1755,-263 1576,-263"/>
 </a>
 </g>
 </g>
@@ -389,7 +353,7 @@
 <g id="edge18_Node000001_Node000019" class="edge">
 <title>Node1&#45;&gt;Node19</title>
 <g id="a_edge18_Node000001_Node000019"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4452.26,-534.95C3992.5,-529.21 1887.75,-499.79 1763.5,-441 1747.54,-433.45 1733.11,-421.96 1720.52,-409.17"/>
+<path fill="none" stroke="#63b8ff" d="M4452.26,-534.95C3992.5,-529.21 1887.75,-499.79 1763.5,-441 1741.49,-430.58 1722.37,-412.66 1707.01,-394.2"/>
 <polygon fill="none" stroke="#63b8ff" points="4452.44,-538.45 4462.49,-535.07 4452.53,-531.45 4452.44,-538.45"/>
 </a>
 </g>
@@ -398,30 +362,26 @@
 <g id="Node000021" class="node">
 <title>Node21</title>
 <g id="a_Node000021"><a xlink:href="classtvm_1_1prim_1_1BinaryOpNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="1952,-409 1773,-409 1773,-248 1952,-248 1952,-409"/>
-<text text-anchor="start" x="1800.5" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
-<text text-anchor="start" x="1829.5" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; MinNode &gt;</text>
-<text text-anchor="start" x="1777.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1790.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="1952,-394 1773,-394 1773,-263 1952,-263 1952,-394"/>
+<text text-anchor="start" x="1800.5" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
+<text text-anchor="start" x="1829.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; MinNode &gt;</text>
 <text text-anchor="start" x="1777.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1790.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="1790.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="1777.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1790.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="1790.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="1777.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1790.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
+<text text-anchor="start" x="1790.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="1777.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1790.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
+<text text-anchor="start" x="1790.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
 <text text-anchor="start" x="1777.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1790.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
-<text text-anchor="start" x="1777.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1790.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="1790.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
-<text text-anchor="start" x="1777.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1790.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="1773.5,-380.5 1773.5,-380.5 1952.5,-380.5 1952.5,-380.5 1773.5,-380.5"/>
-<polygon fill="#666666" stroke="#666666" points="1773.5,-320.5 1773.5,-320.5 1788.5,-320.5 1788.5,-320.5 1773.5,-320.5"/>
-<polygon fill="#666666" stroke="#666666" points="1788.5,-320.5 1788.5,-320.5 1952.5,-320.5 1952.5,-320.5 1788.5,-320.5"/>
-<polygon fill="none" stroke="#666666" points="1773,-248 1773,-409 1952,-409 1952,-248 1773,-248"/>
+<text text-anchor="start" x="1790.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="1790.5" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
+<text text-anchor="start" x="1777.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1790.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="1773.5,-365.5 1773.5,-365.5 1952.5,-365.5 1952.5,-365.5 1773.5,-365.5"/>
+<polygon fill="#666666" stroke="#666666" points="1773.5,-305.5 1773.5,-305.5 1788.5,-305.5 1788.5,-305.5 1773.5,-305.5"/>
+<polygon fill="#666666" stroke="#666666" points="1788.5,-305.5 1788.5,-305.5 1952.5,-305.5 1952.5,-305.5 1788.5,-305.5"/>
+<polygon fill="none" stroke="#666666" points="1773,-263 1773,-394 1952,-394 1952,-263 1773,-263"/>
 </a>
 </g>
 </g>
@@ -429,7 +389,7 @@
 <g id="edge20_Node000001_Node000021" class="edge">
 <title>Node1&#45;&gt;Node21</title>
 <g id="a_edge20_Node000001_Node000021"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4452.16,-534.7C4012.35,-528.01 2075.31,-495.51 1960.5,-441 1944.55,-433.43 1930.12,-421.93 1917.54,-409.14"/>
+<path fill="none" stroke="#63b8ff" d="M4452.16,-534.7C4012.35,-528.01 2075.31,-495.51 1960.5,-441 1938.5,-430.55 1919.39,-412.63 1904.03,-394.16"/>
 <polygon fill="none" stroke="#63b8ff" points="4452.22,-538.21 4462.27,-534.86 4452.33,-531.21 4452.22,-538.21"/>
 </a>
 </g>
@@ -438,30 +398,26 @@
 <g id="Node000023" class="node">
 <title>Node23</title>
 <g id="a_Node000023"><a xlink:href="classtvm_1_1prim_1_1BinaryOpNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="2149,-409 1970,-409 1970,-248 2149,-248 2149,-409"/>
-<text text-anchor="start" x="1997.5" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
-<text text-anchor="start" x="2025" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; ModNode &gt;</text>
-<text text-anchor="start" x="1974.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1987.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="2149,-394 1970,-394 1970,-263 2149,-263 2149,-394"/>
+<text text-anchor="start" x="1997.5" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
+<text text-anchor="start" x="2025" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; ModNode &gt;</text>
 <text text-anchor="start" x="1974.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1987.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="1987.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="1974.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1987.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="1987.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="1974.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1987.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
+<text text-anchor="start" x="1987.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="1974.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1987.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
+<text text-anchor="start" x="1987.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
 <text text-anchor="start" x="1974.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1987.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
-<text text-anchor="start" x="1974.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1987.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="1987.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
-<text text-anchor="start" x="1974.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1987.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="1970.5,-380.5 1970.5,-380.5 2149.5,-380.5 2149.5,-380.5 1970.5,-380.5"/>
-<polygon fill="#666666" stroke="#666666" points="1970.5,-320.5 1970.5,-320.5 1985.5,-320.5 1985.5,-320.5 1970.5,-320.5"/>
-<polygon fill="#666666" stroke="#666666" points="1985.5,-320.5 1985.5,-320.5 2149.5,-320.5 2149.5,-320.5 1985.5,-320.5"/>
-<polygon fill="none" stroke="#666666" points="1970,-248 1970,-409 2149,-409 2149,-248 1970,-248"/>
+<text text-anchor="start" x="1987.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="1987.5" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
+<text text-anchor="start" x="1974.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1987.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="1970.5,-365.5 1970.5,-365.5 2149.5,-365.5 2149.5,-365.5 1970.5,-365.5"/>
+<polygon fill="#666666" stroke="#666666" points="1970.5,-305.5 1970.5,-305.5 1985.5,-305.5 1985.5,-305.5 1970.5,-305.5"/>
+<polygon fill="#666666" stroke="#666666" points="1985.5,-305.5 1985.5,-305.5 2149.5,-305.5 2149.5,-305.5 1985.5,-305.5"/>
+<polygon fill="none" stroke="#666666" points="1970,-263 1970,-394 2149,-394 2149,-263 1970,-263"/>
 </a>
 </g>
 </g>
@@ -469,7 +425,7 @@
 <g id="edge22_Node000001_Node000023" class="edge">
 <title>Node1&#45;&gt;Node23</title>
 <g id="a_edge22_Node000001_Node000023"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4452.19,-534.43C4033.36,-526.71 2262.9,-491.24 2157.5,-441 2141.56,-433.4 2127.14,-421.89 2114.56,-409.1"/>
+<path fill="none" stroke="#63b8ff" d="M4452.19,-534.43C4033.36,-526.71 2262.9,-491.24 2157.5,-441 2135.52,-430.52 2116.41,-412.58 2101.05,-394.13"/>
 <polygon fill="none" stroke="#63b8ff" points="4452.36,-537.93 4462.42,-534.61 4452.49,-530.93 4452.36,-537.93"/>
 </a>
 </g>
@@ -478,30 +434,26 @@
 <g id="Node000025" class="node">
 <title>Node25</title>
 <g id="a_Node000025"><a xlink:href="classtvm_1_1prim_1_1BinaryOpNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="2346,-409 2167,-409 2167,-248 2346,-248 2346,-409"/>
-<text text-anchor="start" x="2194.5" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
-<text text-anchor="start" x="2223.5" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; MulNode &gt;</text>
-<text text-anchor="start" x="2171.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2184.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="2346,-394 2167,-394 2167,-263 2346,-263 2346,-394"/>
+<text text-anchor="start" x="2194.5" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
+<text text-anchor="start" x="2223.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; MulNode &gt;</text>
 <text text-anchor="start" x="2171.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2184.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="2184.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="2171.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2184.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="2184.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="2171.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2184.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
+<text text-anchor="start" x="2184.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="2171.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2184.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
+<text text-anchor="start" x="2184.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
 <text text-anchor="start" x="2171.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2184.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
-<text text-anchor="start" x="2171.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2184.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="2184.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
-<text text-anchor="start" x="2171.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2184.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="2167.5,-380.5 2167.5,-380.5 2346.5,-380.5 2346.5,-380.5 2167.5,-380.5"/>
-<polygon fill="#666666" stroke="#666666" points="2167.5,-320.5 2167.5,-320.5 2182.5,-320.5 2182.5,-320.5 2167.5,-320.5"/>
-<polygon fill="#666666" stroke="#666666" points="2182.5,-320.5 2182.5,-320.5 2346.5,-320.5 2346.5,-320.5 2182.5,-320.5"/>
-<polygon fill="none" stroke="#666666" points="2167,-248 2167,-409 2346,-409 2346,-248 2167,-248"/>
+<text text-anchor="start" x="2184.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="2184.5" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
+<text text-anchor="start" x="2171.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2184.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="2167.5,-365.5 2167.5,-365.5 2346.5,-365.5 2346.5,-365.5 2167.5,-365.5"/>
+<polygon fill="#666666" stroke="#666666" points="2167.5,-305.5 2167.5,-305.5 2182.5,-305.5 2182.5,-305.5 2167.5,-305.5"/>
+<polygon fill="#666666" stroke="#666666" points="2182.5,-305.5 2182.5,-305.5 2346.5,-305.5 2346.5,-305.5 2182.5,-305.5"/>
+<polygon fill="none" stroke="#666666" points="2167,-263 2167,-394 2346,-394 2346,-263 2167,-263"/>
 </a>
 </g>
 </g>
@@ -509,7 +461,7 @@
 <g id="edge24_Node000001_Node000025" class="edge">
 <title>Node1&#45;&gt;Node25</title>
 <g id="a_edge24_Node000001_Node000025"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4452.18,-536.23C4067.11,-536.68 2545.8,-532.6 2354.5,-441 2338.58,-433.38 2324.16,-421.85 2311.58,-409.05"/>
+<path fill="none" stroke="#63b8ff" d="M4452.18,-536.23C4067.11,-536.68 2545.8,-532.6 2354.5,-441 2332.53,-430.48 2313.43,-412.54 2298.07,-394.08"/>
 <polygon fill="none" stroke="#63b8ff" points="4452.43,-539.73 4462.42,-536.22 4452.42,-532.73 4452.43,-539.73"/>
 </a>
 </g>
@@ -518,30 +470,26 @@
 <g id="Node000027" class="node">
 <title>Node27</title>
 <g id="a_Node000027"><a xlink:href="classtvm_1_1prim_1_1BinaryOpNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="2543,-409 2364,-409 2364,-248 2543,-248 2543,-409"/>
-<text text-anchor="start" x="2391.5" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
-<text text-anchor="start" x="2415.5" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; RShiftNode &gt;</text>
-<text text-anchor="start" x="2368.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2381.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="2543,-394 2364,-394 2364,-263 2543,-263 2543,-394"/>
+<text text-anchor="start" x="2391.5" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
+<text text-anchor="start" x="2415.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; RShiftNode &gt;</text>
 <text text-anchor="start" x="2368.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2381.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="2381.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="2368.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2381.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="2381.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="2368.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2381.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
+<text text-anchor="start" x="2381.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="2368.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2381.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
+<text text-anchor="start" x="2381.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
 <text text-anchor="start" x="2368.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2381.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
-<text text-anchor="start" x="2368.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2381.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="2381.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
-<text text-anchor="start" x="2368.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2381.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="2364.5,-380.5 2364.5,-380.5 2543.5,-380.5 2543.5,-380.5 2364.5,-380.5"/>
-<polygon fill="#666666" stroke="#666666" points="2364.5,-320.5 2364.5,-320.5 2379.5,-320.5 2379.5,-320.5 2364.5,-320.5"/>
-<polygon fill="#666666" stroke="#666666" points="2379.5,-320.5 2379.5,-320.5 2543.5,-320.5 2543.5,-320.5 2379.5,-320.5"/>
-<polygon fill="none" stroke="#666666" points="2364,-248 2364,-409 2543,-409 2543,-248 2364,-248"/>
+<text text-anchor="start" x="2381.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="2381.5" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
+<text text-anchor="start" x="2368.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2381.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="2364.5,-365.5 2364.5,-365.5 2543.5,-365.5 2543.5,-365.5 2364.5,-365.5"/>
+<polygon fill="#666666" stroke="#666666" points="2364.5,-305.5 2364.5,-305.5 2379.5,-305.5 2379.5,-305.5 2364.5,-305.5"/>
+<polygon fill="#666666" stroke="#666666" points="2379.5,-305.5 2379.5,-305.5 2543.5,-305.5 2543.5,-305.5 2379.5,-305.5"/>
+<polygon fill="none" stroke="#666666" points="2364,-263 2364,-394 2543,-394 2543,-263 2364,-263"/>
 </a>
 </g>
 </g>
@@ -549,7 +497,7 @@
 <g id="edge26_Node000001_Node000027" class="edge">
 <title>Node1&#45;&gt;Node27</title>
 <g id="a_edge26_Node000001_Node000027"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4452.16,-535.82C4089.25,-534.52 2724.12,-524.12 2551.5,-441 2535.71,-433.4 2521.39,-421.97 2508.88,-409.28"/>
+<path fill="none" stroke="#63b8ff" d="M4452.16,-535.82C4089.25,-534.52 2724.12,-524.12 2551.5,-441 2529.56,-430.43 2510.46,-412.48 2495.1,-394.02"/>
 <polygon fill="none" stroke="#63b8ff" points="4452.33,-539.32 4462.34,-535.85 4452.35,-532.32 4452.33,-539.32"/>
 </a>
 </g>
@@ -558,30 +506,26 @@
 <g id="Node000029" class="node">
 <title>Node29</title>
 <g id="a_Node000029"><a xlink:href="classtvm_1_1prim_1_1BinaryOpNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="2740,-409 2561,-409 2561,-248 2740,-248 2740,-409"/>
-<text text-anchor="start" x="2588.5" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
-<text text-anchor="start" x="2617.5" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; SubNode &gt;</text>
-<text text-anchor="start" x="2565.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2578.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="2740,-394 2561,-394 2561,-263 2740,-263 2740,-394"/>
+<text text-anchor="start" x="2588.5" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode</text>
+<text text-anchor="start" x="2617.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; SubNode &gt;</text>
 <text text-anchor="start" x="2565.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2578.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="2578.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="2565.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2578.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="2578.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="2565.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2578.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
+<text text-anchor="start" x="2578.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="2565.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2578.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
+<text text-anchor="start" x="2578.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
 <text text-anchor="start" x="2565.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2578.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
-<text text-anchor="start" x="2565.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2578.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="2578.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
-<text text-anchor="start" x="2565.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2578.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="2561.5,-380.5 2561.5,-380.5 2740.5,-380.5 2740.5,-380.5 2561.5,-380.5"/>
-<polygon fill="#666666" stroke="#666666" points="2561.5,-320.5 2561.5,-320.5 2576.5,-320.5 2576.5,-320.5 2561.5,-320.5"/>
-<polygon fill="#666666" stroke="#666666" points="2576.5,-320.5 2576.5,-320.5 2740.5,-320.5 2740.5,-320.5 2576.5,-320.5"/>
-<polygon fill="none" stroke="#666666" points="2561,-248 2561,-409 2740,-409 2740,-248 2561,-248"/>
+<text text-anchor="start" x="2578.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="2578.5" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
+<text text-anchor="start" x="2565.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2578.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="2561.5,-365.5 2561.5,-365.5 2740.5,-365.5 2740.5,-365.5 2561.5,-365.5"/>
+<polygon fill="#666666" stroke="#666666" points="2561.5,-305.5 2561.5,-305.5 2576.5,-305.5 2576.5,-305.5 2561.5,-305.5"/>
+<polygon fill="#666666" stroke="#666666" points="2576.5,-305.5 2576.5,-305.5 2740.5,-305.5 2740.5,-305.5 2576.5,-305.5"/>
+<polygon fill="none" stroke="#666666" points="2561,-263 2561,-394 2740,-394 2740,-263 2561,-263"/>
 </a>
 </g>
 </g>
@@ -589,7 +533,7 @@
 <g id="edge28_Node000001_Node000029" class="edge">
 <title>Node1&#45;&gt;Node29</title>
 <g id="a_edge28_Node000001_Node000029"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4452.28,-535.32C4112.86,-532.15 2902.54,-515.67 2748.5,-441 2732.73,-433.36 2718.42,-421.91 2705.92,-409.21"/>
+<path fill="none" stroke="#63b8ff" d="M4452.28,-535.32C4112.86,-532.15 2902.54,-515.67 2748.5,-441 2726.7,-430.43 2707.7,-412.59 2692.38,-394.25"/>
 <polygon fill="none" stroke="#63b8ff" points="4452.27,-538.82 4462.3,-535.41 4452.33,-531.82 4452.27,-538.82"/>
 </a>
 </g>
@@ -598,30 +542,26 @@
 <g id="Node000031" class="node">
 <title>Node31</title>
 <g id="a_Node000031"><a xlink:href="classtvm_1_1prim_1_1CmpOpNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="2937,-409 2758,-409 2758,-248 2937,-248 2937,-409"/>
-<text text-anchor="start" x="2790" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::CmpOpNode</text>
-<text text-anchor="start" x="2817" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; EQNode &gt;</text>
-<text text-anchor="start" x="2762.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2775.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="2937,-394 2758,-394 2758,-263 2937,-263 2937,-394"/>
+<text text-anchor="start" x="2790" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::CmpOpNode</text>
+<text text-anchor="start" x="2817" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; EQNode &gt;</text>
 <text text-anchor="start" x="2762.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2775.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="2775.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="2762.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2775.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="2775.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="2762.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2775.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
+<text text-anchor="start" x="2775.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="2762.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2775.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">CmpOpNode()</text>
+<text text-anchor="start" x="2775.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
 <text text-anchor="start" x="2762.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2775.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">CmpOpNode()</text>
-<text text-anchor="start" x="2762.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2775.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="2775.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
-<text text-anchor="start" x="2762.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2775.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="2758.5,-380.5 2758.5,-380.5 2937.5,-380.5 2937.5,-380.5 2758.5,-380.5"/>
-<polygon fill="#666666" stroke="#666666" points="2758.5,-320.5 2758.5,-320.5 2773.5,-320.5 2773.5,-320.5 2758.5,-320.5"/>
-<polygon fill="#666666" stroke="#666666" points="2773.5,-320.5 2773.5,-320.5 2937.5,-320.5 2937.5,-320.5 2773.5,-320.5"/>
-<polygon fill="none" stroke="#666666" points="2758,-248 2758,-409 2937,-409 2937,-248 2758,-248"/>
+<text text-anchor="start" x="2775.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="2775.5" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
+<text text-anchor="start" x="2762.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2775.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="2758.5,-365.5 2758.5,-365.5 2937.5,-365.5 2937.5,-365.5 2758.5,-365.5"/>
+<polygon fill="#666666" stroke="#666666" points="2758.5,-305.5 2758.5,-305.5 2773.5,-305.5 2773.5,-305.5 2758.5,-305.5"/>
+<polygon fill="#666666" stroke="#666666" points="2773.5,-305.5 2773.5,-305.5 2937.5,-305.5 2937.5,-305.5 2773.5,-305.5"/>
+<polygon fill="none" stroke="#666666" points="2758,-263 2758,-394 2937,-394 2937,-263 2758,-263"/>
 </a>
 </g>
 </g>
@@ -629,7 +569,7 @@
 <g id="edge30_Node000001_Node000031" class="edge">
 <title>Node1&#45;&gt;Node31</title>
 <g id="a_edge30_Node000001_Node000031"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4451.91,-534.69C4136.67,-529.48 3080.96,-507.21 2945.5,-441 2929.76,-433.3 2915.46,-421.83 2902.96,-409.13"/>
+<path fill="none" stroke="#63b8ff" d="M4451.91,-534.69C4136.67,-529.48 3080.96,-507.21 2945.5,-441 2923.74,-430.36 2904.74,-412.5 2889.42,-394.16"/>
 <polygon fill="none" stroke="#63b8ff" points="4452.31,-538.19 4462.36,-534.86 4452.42,-531.2 4452.31,-538.19"/>
 </a>
 </g>
@@ -638,30 +578,26 @@
 <g id="Node000033" class="node">
 <title>Node33</title>
 <g id="a_Node000033"><a xlink:href="classtvm_1_1prim_1_1CmpOpNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="3134,-409 2955,-409 2955,-248 3134,-248 3134,-409"/>
-<text text-anchor="start" x="2987" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::CmpOpNode</text>
-<text text-anchor="start" x="3014" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; GENode &gt;</text>
-<text text-anchor="start" x="2959.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2972.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="3134,-394 2955,-394 2955,-263 3134,-263 3134,-394"/>
+<text text-anchor="start" x="2987" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::CmpOpNode</text>
+<text text-anchor="start" x="3014" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; GENode &gt;</text>
 <text text-anchor="start" x="2959.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2972.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="2972.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="2959.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2972.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="2972.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="2959.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2972.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
+<text text-anchor="start" x="2972.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="2959.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2972.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">CmpOpNode()</text>
+<text text-anchor="start" x="2972.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
 <text text-anchor="start" x="2959.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2972.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">CmpOpNode()</text>
-<text text-anchor="start" x="2959.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2972.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="2972.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
-<text text-anchor="start" x="2959.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2972.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="2955.5,-380.5 2955.5,-380.5 3134.5,-380.5 3134.5,-380.5 2955.5,-380.5"/>
-<polygon fill="#666666" stroke="#666666" points="2955.5,-320.5 2955.5,-320.5 2970.5,-320.5 2970.5,-320.5 2955.5,-320.5"/>
-<polygon fill="#666666" stroke="#666666" points="2970.5,-320.5 2970.5,-320.5 3134.5,-320.5 3134.5,-320.5 2970.5,-320.5"/>
-<polygon fill="none" stroke="#666666" points="2955,-248 2955,-409 3134,-409 3134,-248 2955,-248"/>
+<text text-anchor="start" x="2972.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="2972.5" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
+<text text-anchor="start" x="2959.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2972.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="2955.5,-365.5 2955.5,-365.5 3134.5,-365.5 3134.5,-365.5 2955.5,-365.5"/>
+<polygon fill="#666666" stroke="#666666" points="2955.5,-305.5 2955.5,-305.5 2970.5,-305.5 2970.5,-305.5 2955.5,-305.5"/>
+<polygon fill="#666666" stroke="#666666" points="2970.5,-305.5 2970.5,-305.5 3134.5,-305.5 3134.5,-305.5 2970.5,-305.5"/>
+<polygon fill="none" stroke="#666666" points="2955,-263 2955,-394 3134,-394 3134,-263 2955,-263"/>
 </a>
 </g>
 </g>
@@ -669,7 +605,7 @@
 <g id="edge32_Node000001_Node000033" class="edge">
 <title>Node1&#45;&gt;Node33</title>
 <g id="a_edge32_Node000001_Node000033"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4452.24,-533.9C4163.62,-526.48 3259.57,-498.83 3142.5,-441 3126.79,-433.24 3112.51,-421.73 3100.01,-409.02"/>
+<path fill="none" stroke="#63b8ff" d="M4452.24,-533.9C4163.62,-526.48 3259.57,-498.83 3142.5,-441 3120.78,-430.27 3101.8,-412.39 3086.47,-394.05"/>
 <polygon fill="none" stroke="#63b8ff" points="4452.16,-537.39 4462.25,-534.15 4452.34,-530.4 4452.16,-537.39"/>
 </a>
 </g>
@@ -678,30 +614,26 @@
 <g id="Node000035" class="node">
 <title>Node35</title>
 <g id="a_Node000035"><a xlink:href="classtvm_1_1prim_1_1CmpOpNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="3331,-409 3152,-409 3152,-248 3331,-248 3331,-409"/>
-<text text-anchor="start" x="3184" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::CmpOpNode</text>
-<text text-anchor="start" x="3211" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; GTNode &gt;</text>
-<text text-anchor="start" x="3156.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3169.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="3331,-394 3152,-394 3152,-263 3331,-263 3331,-394"/>
+<text text-anchor="start" x="3184" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::CmpOpNode</text>
+<text text-anchor="start" x="3211" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; GTNode &gt;</text>
 <text text-anchor="start" x="3156.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3169.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="3169.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="3156.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3169.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="3169.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="3156.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3169.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
+<text text-anchor="start" x="3169.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="3156.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3169.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">CmpOpNode()</text>
+<text text-anchor="start" x="3169.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
 <text text-anchor="start" x="3156.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3169.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">CmpOpNode()</text>
-<text text-anchor="start" x="3156.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3169.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="3169.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
-<text text-anchor="start" x="3156.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3169.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="3152.5,-380.5 3152.5,-380.5 3331.5,-380.5 3331.5,-380.5 3152.5,-380.5"/>
-<polygon fill="#666666" stroke="#666666" points="3152.5,-320.5 3152.5,-320.5 3167.5,-320.5 3167.5,-320.5 3152.5,-320.5"/>
-<polygon fill="#666666" stroke="#666666" points="3167.5,-320.5 3167.5,-320.5 3331.5,-320.5 3331.5,-320.5 3167.5,-320.5"/>
-<polygon fill="none" stroke="#666666" points="3152,-248 3152,-409 3331,-409 3331,-248 3152,-248"/>
+<text text-anchor="start" x="3169.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="3169.5" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
+<text text-anchor="start" x="3156.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3169.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="3152.5,-365.5 3152.5,-365.5 3331.5,-365.5 3331.5,-365.5 3152.5,-365.5"/>
+<polygon fill="#666666" stroke="#666666" points="3152.5,-305.5 3152.5,-305.5 3167.5,-305.5 3167.5,-305.5 3152.5,-305.5"/>
+<polygon fill="#666666" stroke="#666666" points="3167.5,-305.5 3167.5,-305.5 3331.5,-305.5 3331.5,-305.5 3167.5,-305.5"/>
+<polygon fill="none" stroke="#666666" points="3152,-263 3152,-394 3331,-394 3331,-263 3152,-263"/>
 </a>
 </g>
 </g>
@@ -709,7 +641,7 @@
 <g id="edge34_Node000001_Node000035" class="edge">
 <title>Node1&#45;&gt;Node35</title>
 <g id="a_edge34_Node000001_Node000035"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4452.02,-532.83C4191.34,-522.96 3438.23,-490.45 3339.5,-441 3323.95,-433.21 3309.78,-421.78 3297.35,-409.16"/>
+<path fill="none" stroke="#63b8ff" d="M4452.02,-532.83C4191.34,-522.96 3438.23,-490.45 3339.5,-441 3317.95,-430.21 3299.07,-412.43 3283.79,-394.2"/>
 <polygon fill="none" stroke="#63b8ff" points="4452.08,-536.34 4462.21,-533.21 4452.34,-529.34 4452.08,-536.34"/>
 </a>
 </g>
@@ -718,30 +650,26 @@
 <g id="Node000037" class="node">
 <title>Node37</title>
 <g id="a_Node000037"><a xlink:href="classtvm_1_1prim_1_1CmpOpNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="3528,-409 3349,-409 3349,-248 3528,-248 3528,-409"/>
-<text text-anchor="start" x="3381" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::CmpOpNode</text>
-<text text-anchor="start" x="3409" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; LENode &gt;</text>
-<text text-anchor="start" x="3353.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3366.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="3528,-394 3349,-394 3349,-263 3528,-263 3528,-394"/>
+<text text-anchor="start" x="3381" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::CmpOpNode</text>
+<text text-anchor="start" x="3409" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; LENode &gt;</text>
 <text text-anchor="start" x="3353.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3366.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="3366.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="3353.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3366.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="3366.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="3353.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3366.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
+<text text-anchor="start" x="3366.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="3353.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3366.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">CmpOpNode()</text>
+<text text-anchor="start" x="3366.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
 <text text-anchor="start" x="3353.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3366.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">CmpOpNode()</text>
-<text text-anchor="start" x="3353.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3366.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="3366.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
-<text text-anchor="start" x="3353.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3366.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="3349.5,-380.5 3349.5,-380.5 3528.5,-380.5 3528.5,-380.5 3349.5,-380.5"/>
-<polygon fill="#666666" stroke="#666666" points="3349.5,-320.5 3349.5,-320.5 3364.5,-320.5 3364.5,-320.5 3349.5,-320.5"/>
-<polygon fill="#666666" stroke="#666666" points="3364.5,-320.5 3364.5,-320.5 3528.5,-320.5 3528.5,-320.5 3364.5,-320.5"/>
-<polygon fill="none" stroke="#666666" points="3349,-248 3349,-409 3528,-409 3528,-248 3349,-248"/>
+<text text-anchor="start" x="3366.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="3366.5" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
+<text text-anchor="start" x="3353.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3366.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="3349.5,-365.5 3349.5,-365.5 3528.5,-365.5 3528.5,-365.5 3349.5,-365.5"/>
+<polygon fill="#666666" stroke="#666666" points="3349.5,-305.5 3349.5,-305.5 3364.5,-305.5 3364.5,-305.5 3349.5,-305.5"/>
+<polygon fill="#666666" stroke="#666666" points="3364.5,-305.5 3364.5,-305.5 3528.5,-305.5 3528.5,-305.5 3364.5,-305.5"/>
+<polygon fill="none" stroke="#666666" points="3349,-263 3349,-394 3528,-394 3528,-263 3349,-263"/>
 </a>
 </g>
 </g>
@@ -749,7 +677,7 @@
 <g id="edge36_Node000001_Node000037" class="edge">
 <title>Node1&#45;&gt;Node37</title>
 <g id="a_edge36_Node000001_Node000037"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4452.07,-535.88C4237.54,-534.29 3695.39,-522.12 3536.5,-441 3521.12,-433.15 3507.08,-421.77 3494.73,-409.25"/>
+<path fill="none" stroke="#63b8ff" d="M4452.07,-535.88C4237.54,-534.29 3695.39,-522.12 3536.5,-441 3515.15,-430.1 3496.38,-412.41 3481.13,-394.29"/>
 <polygon fill="none" stroke="#63b8ff" points="4452.32,-539.38 4462.35,-535.95 4452.37,-532.38 4452.32,-539.38"/>
 </a>
 </g>
@@ -758,30 +686,26 @@
 <g id="Node000039" class="node">
 <title>Node39</title>
 <g id="a_Node000039"><a xlink:href="classtvm_1_1prim_1_1CmpOpNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="3725,-409 3546,-409 3546,-248 3725,-248 3725,-409"/>
-<text text-anchor="start" x="3578" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::CmpOpNode</text>
-<text text-anchor="start" x="3606.5" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; LTNode &gt;</text>
-<text text-anchor="start" x="3550.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3563.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="3725,-394 3546,-394 3546,-263 3725,-263 3725,-394"/>
+<text text-anchor="start" x="3578" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::CmpOpNode</text>
+<text text-anchor="start" x="3606.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; LTNode &gt;</text>
 <text text-anchor="start" x="3550.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3563.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="3563.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="3550.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3563.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="3563.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="3550.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3563.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
+<text text-anchor="start" x="3563.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="3550.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3563.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">CmpOpNode()</text>
+<text text-anchor="start" x="3563.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
 <text text-anchor="start" x="3550.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3563.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">CmpOpNode()</text>
-<text text-anchor="start" x="3550.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3563.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="3563.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
-<text text-anchor="start" x="3550.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3563.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="3546.5,-380.5 3546.5,-380.5 3725.5,-380.5 3725.5,-380.5 3546.5,-380.5"/>
-<polygon fill="#666666" stroke="#666666" points="3546.5,-320.5 3546.5,-320.5 3561.5,-320.5 3561.5,-320.5 3546.5,-320.5"/>
-<polygon fill="#666666" stroke="#666666" points="3561.5,-320.5 3561.5,-320.5 3725.5,-320.5 3725.5,-320.5 3561.5,-320.5"/>
-<polygon fill="none" stroke="#666666" points="3546,-248 3546,-409 3725,-409 3725,-248 3546,-248"/>
+<text text-anchor="start" x="3563.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="3563.5" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
+<text text-anchor="start" x="3550.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3563.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="3546.5,-365.5 3546.5,-365.5 3725.5,-365.5 3725.5,-365.5 3546.5,-365.5"/>
+<polygon fill="#666666" stroke="#666666" points="3546.5,-305.5 3546.5,-305.5 3561.5,-305.5 3561.5,-305.5 3546.5,-305.5"/>
+<polygon fill="#666666" stroke="#666666" points="3561.5,-305.5 3561.5,-305.5 3725.5,-305.5 3725.5,-305.5 3561.5,-305.5"/>
+<polygon fill="none" stroke="#666666" points="3546,-263 3546,-394 3725,-394 3725,-263 3546,-263"/>
 </a>
 </g>
 </g>
@@ -789,7 +713,7 @@
 <g id="edge38_Node000001_Node000039" class="edge">
 <title>Node1&#45;&gt;Node39</title>
 <g id="a_edge38_Node000001_Node000039"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4452.36,-533.52C4269.74,-527.12 3856.78,-505.72 3733.5,-441 3718.33,-433.03 3704.42,-421.68 3692.15,-409.24"/>
+<path fill="none" stroke="#63b8ff" d="M4452.36,-533.52C4269.74,-527.12 3856.78,-505.72 3733.5,-441 3712.39,-429.92 3693.74,-412.29 3678.53,-394.29"/>
 <polygon fill="none" stroke="#63b8ff" points="4452.36,-537.02 4462.47,-533.87 4452.6,-530.02 4452.36,-537.02"/>
 </a>
 </g>
@@ -798,30 +722,26 @@
 <g id="Node000041" class="node">
 <title>Node41</title>
 <g id="a_Node000041"><a xlink:href="classtvm_1_1prim_1_1CmpOpNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="3922,-409 3743,-409 3743,-248 3922,-248 3922,-409"/>
-<text text-anchor="start" x="3775" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::CmpOpNode</text>
-<text text-anchor="start" x="3802" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; NENode &gt;</text>
-<text text-anchor="start" x="3747.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3760.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="3922,-394 3743,-394 3743,-263 3922,-263 3922,-394"/>
+<text text-anchor="start" x="3775" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::CmpOpNode</text>
+<text text-anchor="start" x="3802" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; NENode &gt;</text>
 <text text-anchor="start" x="3747.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3760.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="3760.5" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="3747.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3760.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="3760.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="3747.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3760.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
+<text text-anchor="start" x="3760.5" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="3747.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3760.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">CmpOpNode()</text>
+<text text-anchor="start" x="3760.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
 <text text-anchor="start" x="3747.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3760.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">CmpOpNode()</text>
-<text text-anchor="start" x="3747.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3760.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="3760.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
-<text text-anchor="start" x="3747.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3760.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="3743.5,-380.5 3743.5,-380.5 3922.5,-380.5 3922.5,-380.5 3743.5,-380.5"/>
-<polygon fill="#666666" stroke="#666666" points="3743.5,-320.5 3743.5,-320.5 3758.5,-320.5 3758.5,-320.5 3743.5,-320.5"/>
-<polygon fill="#666666" stroke="#666666" points="3758.5,-320.5 3758.5,-320.5 3922.5,-320.5 3922.5,-320.5 3758.5,-320.5"/>
-<polygon fill="none" stroke="#666666" points="3743,-248 3743,-409 3922,-409 3922,-248 3743,-248"/>
+<text text-anchor="start" x="3760.5" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="3760.5" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
+<text text-anchor="start" x="3747.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3760.5" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="3743.5,-365.5 3743.5,-365.5 3922.5,-365.5 3922.5,-365.5 3743.5,-365.5"/>
+<polygon fill="#666666" stroke="#666666" points="3743.5,-305.5 3743.5,-305.5 3758.5,-305.5 3758.5,-305.5 3743.5,-305.5"/>
+<polygon fill="#666666" stroke="#666666" points="3758.5,-305.5 3758.5,-305.5 3922.5,-305.5 3922.5,-305.5 3758.5,-305.5"/>
+<polygon fill="none" stroke="#666666" points="3743,-263 3743,-394 3922,-394 3922,-263 3743,-263"/>
 </a>
 </g>
 </g>
@@ -829,7 +749,7 @@
 <g id="edge40_Node000001_Node000041" class="edge">
 <title>Node1&#45;&gt;Node41</title>
 <g id="a_edge40_Node000001_Node000041"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4451.94,-529.56C4305.31,-517.69 4019.55,-489.07 3931.5,-441 3916.5,-432.81 3902.66,-421.44 3890.37,-409.06"/>
+<path fill="none" stroke="#63b8ff" d="M4451.94,-529.56C4305.31,-517.69 4019.55,-489.07 3931.5,-441 3910.6,-429.59 3891.93,-411.98 3876.6,-394.1"/>
 <polygon fill="none" stroke="#63b8ff" points="4452,-533.08 4462.25,-530.39 4452.56,-526.1 4452,-533.08"/>
 </a>
 </g>
@@ -877,29 +797,25 @@
 <g id="Node000047" class="node">
 <title>Node47</title>
 <g id="a_Node000047"><a xlink:href="classtvm_1_1CallNode.html" target="_top" xlink:title="Call corresponds to callable invocation.">
-<polygon fill="white" stroke="transparent" points="4270.5,-403.5 4114.5,-403.5 4114.5,-253.5 4270.5,-253.5 4270.5,-403.5"/>
-<text text-anchor="start" x="4157.5" y="-391.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::CallNode</text>
-<text text-anchor="start" x="4118.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4131.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">op</text>
+<polygon fill="white" stroke="transparent" points="4270.5,-388.5 4114.5,-388.5 4114.5,-268.5 4270.5,-268.5 4270.5,-388.5"/>
+<text text-anchor="start" x="4157.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::CallNode</text>
 <text text-anchor="start" x="4118.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4131.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">args</text>
+<text text-anchor="start" x="4131.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">op</text>
 <text text-anchor="start" x="4118.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4131.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">attrs</text>
+<text text-anchor="start" x="4131.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">args</text>
 <text text-anchor="start" x="4118.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4131.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">ty_args</text>
+<text text-anchor="start" x="4131.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">attrs</text>
 <text text-anchor="start" x="4118.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4131.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">CallNode()</text>
+<text text-anchor="start" x="4131.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">ty_args</text>
 <text text-anchor="start" x="4118.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4131.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">CallNode()</text>
-<text text-anchor="start" x="4118.5" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4131.5" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="4131.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="4118.5" y="-260.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4131.5" y="-260.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="4114.5,-386.5 4114.5,-386.5 4270.5,-386.5 4270.5,-386.5 4114.5,-386.5"/>
-<polygon fill="#666666" stroke="#666666" points="4114.5,-326.5 4114.5,-326.5 4129.5,-326.5 4129.5,-326.5 4114.5,-326.5"/>
-<polygon fill="#666666" stroke="#666666" points="4129.5,-326.5 4129.5,-326.5 4270.5,-326.5 4270.5,-326.5 4129.5,-326.5"/>
-<polygon fill="none" stroke="#666666" points="4114.5,-253.5 4114.5,-403.5 4270.5,-403.5 4270.5,-253.5 4114.5,-253.5"/>
+<text text-anchor="start" x="4131.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="4131.5" y="-290.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="4118.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4131.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="4114.5,-371.5 4114.5,-371.5 4270.5,-371.5 4270.5,-371.5 4114.5,-371.5"/>
+<polygon fill="#666666" stroke="#666666" points="4114.5,-311.5 4114.5,-311.5 4129.5,-311.5 4129.5,-311.5 4114.5,-311.5"/>
+<polygon fill="#666666" stroke="#666666" points="4129.5,-311.5 4129.5,-311.5 4270.5,-311.5 4270.5,-311.5 4129.5,-311.5"/>
+<polygon fill="none" stroke="#666666" points="4114.5,-268.5 4114.5,-388.5 4270.5,-388.5 4270.5,-268.5 4114.5,-268.5"/>
 </a>
 </g>
 </g>
@@ -907,7 +823,7 @@
 <g id="edge46_Node000001_Node000047" class="edge">
 <title>Node1&#45;&gt;Node47</title>
 <g id="a_edge46_Node000001_Node000047"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4452.39,-517.08C4398.8,-502.53 4331,-478.44 4279.5,-441 4265.3,-430.68 4252.25,-417.42 4240.81,-403.68"/>
+<path fill="none" stroke="#63b8ff" d="M4452.39,-517.08C4398.8,-502.53 4331,-478.44 4279.5,-441 4260.14,-426.92 4242.9,-407.39 4228.99,-388.61"/>
 <polygon fill="none" stroke="#63b8ff" points="4451.66,-520.51 4462.23,-519.69 4453.46,-513.74 4451.66,-520.51"/>
 </a>
 </g>
@@ -1058,25 +974,21 @@
 <g id="Node000059" class="node">
 <title>Node59</title>
 <g id="a_Node000059"><a xlink:href="classtvm_1_1TensorLoadNode.html" target="_top" xlink:title="Load a value from an indexed expression source.">
-<polygon fill="white" stroke="transparent" points="5140.5,-388.5 4984.5,-388.5 4984.5,-268.5 5140.5,-268.5 5140.5,-388.5"/>
-<text text-anchor="start" x="5009.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TensorLoadNode</text>
-<text text-anchor="start" x="4988.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5001.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">source</text>
+<polygon fill="white" stroke="transparent" points="5140.5,-373.5 4984.5,-373.5 4984.5,-283.5 5140.5,-283.5 5140.5,-373.5"/>
+<text text-anchor="start" x="5009.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TensorLoadNode</text>
 <text text-anchor="start" x="4988.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5001.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">indices</text>
+<text text-anchor="start" x="5001.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">source</text>
 <text text-anchor="start" x="4988.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5001.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">TensorLoadNode()</text>
+<text text-anchor="start" x="5001.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">indices</text>
 <text text-anchor="start" x="4988.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5001.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">TensorLoadNode()</text>
-<text text-anchor="start" x="4988.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5001.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="5001.5" y="-290.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="4988.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5001.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="4984.5,-371.5 4984.5,-371.5 5140.5,-371.5 5140.5,-371.5 4984.5,-371.5"/>
-<polygon fill="#666666" stroke="#666666" points="4984.5,-341.5 4984.5,-341.5 4999.5,-341.5 4999.5,-341.5 4984.5,-341.5"/>
-<polygon fill="#666666" stroke="#666666" points="4999.5,-341.5 4999.5,-341.5 5140.5,-341.5 5140.5,-341.5 4999.5,-341.5"/>
-<polygon fill="none" stroke="#666666" points="4984.5,-268.5 4984.5,-388.5 5140.5,-388.5 5140.5,-268.5 4984.5,-268.5"/>
+<text text-anchor="start" x="5001.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="5001.5" y="-305.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="4988.5" y="-290.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5001.5" y="-290.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="4984.5,-356.5 4984.5,-356.5 5140.5,-356.5 5140.5,-356.5 4984.5,-356.5"/>
+<polygon fill="#666666" stroke="#666666" points="4984.5,-326.5 4984.5,-326.5 4999.5,-326.5 4999.5,-326.5 4984.5,-326.5"/>
+<polygon fill="#666666" stroke="#666666" points="4999.5,-326.5 4999.5,-326.5 5140.5,-326.5 5140.5,-326.5 4999.5,-326.5"/>
+<polygon fill="none" stroke="#666666" points="4984.5,-283.5 4984.5,-373.5 5140.5,-373.5 5140.5,-283.5 4984.5,-283.5"/>
 </a>
 </g>
 </g>
@@ -1084,7 +996,7 @@
 <g id="edge58_Node000001_Node000059" class="edge">
 <title>Node1&#45;&gt;Node59</title>
 <g id="a_edge58_Node000001_Node000059"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4628.97,-534.05C4721.85,-528.24 4868.92,-508.06 4975.5,-441 4996.28,-427.92 5014.1,-408.05 5028.11,-388.68"/>
+<path fill="none" stroke="#63b8ff" d="M4628.97,-534.05C4721.85,-528.24 4868.92,-508.06 4975.5,-441 5001.79,-424.46 5023.34,-397.04 5038.42,-373.53"/>
 <polygon fill="none" stroke="#63b8ff" points="4628.54,-530.57 4618.76,-534.65 4628.95,-537.56 4628.54,-530.57"/>
 </a>
 </g>
@@ -1093,27 +1005,23 @@
 <g id="Node000060" class="node">
 <title>Node60</title>
 <g id="a_Node000060"><a xlink:href="classtvm_1_1TensorRegionNode.html" target="_top" xlink:title="A region of an indexed expression source.">
-<polygon fill="white" stroke="transparent" points="5314.5,-396 5158.5,-396 5158.5,-261 5314.5,-261 5314.5,-396"/>
-<text text-anchor="start" x="5178" y="-383.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TensorRegionNode</text>
-<text text-anchor="start" x="5162.5" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5175.5" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00">source</text>
+<polygon fill="white" stroke="transparent" points="5314.5,-381 5158.5,-381 5158.5,-276 5314.5,-276 5314.5,-381"/>
+<text text-anchor="start" x="5178" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TensorRegionNode</text>
 <text text-anchor="start" x="5162.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5175.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">region</text>
+<text text-anchor="start" x="5175.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">source</text>
 <text text-anchor="start" x="5162.5" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5175.5" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="5175.5" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">region</text>
 <text text-anchor="start" x="5162.5" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5175.5" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00">TensorRegionNode()</text>
+<text text-anchor="start" x="5175.5" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
 <text text-anchor="start" x="5162.5" y="-308.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5175.5" y="-308.5" font-family="Helvetica,sans-Serif" font-size="10.00">TensorRegionNode()</text>
-<text text-anchor="start" x="5162.5" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5175.5" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="5175.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="5162.5" y="-267.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5175.5" y="-267.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="5158.5,-378.5 5158.5,-378.5 5314.5,-378.5 5314.5,-378.5 5158.5,-378.5"/>
-<polygon fill="#666666" stroke="#666666" points="5158.5,-333.5 5158.5,-333.5 5173.5,-333.5 5173.5,-333.5 5158.5,-333.5"/>
-<polygon fill="#666666" stroke="#666666" points="5173.5,-333.5 5173.5,-333.5 5314.5,-333.5 5314.5,-333.5 5173.5,-333.5"/>
-<polygon fill="none" stroke="#666666" points="5158.5,-261 5158.5,-396 5314.5,-396 5314.5,-261 5158.5,-261"/>
+<text text-anchor="start" x="5175.5" y="-308.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="5175.5" y="-297.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="5162.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5175.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="5158.5,-363.5 5158.5,-363.5 5314.5,-363.5 5314.5,-363.5 5158.5,-363.5"/>
+<polygon fill="#666666" stroke="#666666" points="5158.5,-318.5 5158.5,-318.5 5173.5,-318.5 5173.5,-318.5 5158.5,-318.5"/>
+<polygon fill="#666666" stroke="#666666" points="5173.5,-318.5 5173.5,-318.5 5314.5,-318.5 5314.5,-318.5 5173.5,-318.5"/>
+<polygon fill="none" stroke="#666666" points="5158.5,-276 5158.5,-381 5314.5,-381 5314.5,-276 5158.5,-276"/>
 </a>
 </g>
 </g>
@@ -1121,7 +1029,7 @@
 <g id="edge59_Node000001_Node000060" class="edge">
 <title>Node1&#45;&gt;Node60</title>
 <g id="a_edge59_Node000001_Node000060"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4629.11,-530.18C4776.15,-519.21 5062.96,-491.88 5149.5,-441 5168.23,-429.99 5184.41,-413.26 5197.56,-396.09"/>
+<path fill="none" stroke="#63b8ff" d="M4629.11,-530.18C4776.15,-519.21 5062.96,-491.88 5149.5,-441 5173.63,-426.81 5193.52,-403.15 5208.16,-381.27"/>
 <polygon fill="none" stroke="#63b8ff" points="4628.49,-526.71 4618.77,-530.94 4629,-533.69 4628.49,-526.71"/>
 </a>
 </g>
@@ -1130,25 +1038,21 @@
 <g id="Node000061" class="node">
 <title>Node61</title>
 <g id="a_Node000061"><a xlink:href="classtvm_1_1TupleGetItemNode.html" target="_top" xlink:title="Get the index&#45;th field out of a tuple.">
-<polygon fill="white" stroke="transparent" points="5488.5,-388.5 5332.5,-388.5 5332.5,-268.5 5488.5,-268.5 5488.5,-388.5"/>
-<text text-anchor="start" x="5352" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TupleGetItemNode</text>
-<text text-anchor="start" x="5336.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5349.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">tuple</text>
+<polygon fill="white" stroke="transparent" points="5488.5,-373.5 5332.5,-373.5 5332.5,-283.5 5488.5,-283.5 5488.5,-373.5"/>
+<text text-anchor="start" x="5352" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TupleGetItemNode</text>
 <text text-anchor="start" x="5336.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5349.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">index</text>
+<text text-anchor="start" x="5349.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">tuple</text>
 <text text-anchor="start" x="5336.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5349.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">TupleGetItemNode()</text>
+<text text-anchor="start" x="5349.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">index</text>
 <text text-anchor="start" x="5336.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5349.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">TupleGetItemNode()</text>
-<text text-anchor="start" x="5336.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5349.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="5349.5" y="-290.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="5336.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5349.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="5332.5,-371.5 5332.5,-371.5 5488.5,-371.5 5488.5,-371.5 5332.5,-371.5"/>
-<polygon fill="#666666" stroke="#666666" points="5332.5,-341.5 5332.5,-341.5 5347.5,-341.5 5347.5,-341.5 5332.5,-341.5"/>
-<polygon fill="#666666" stroke="#666666" points="5347.5,-341.5 5347.5,-341.5 5488.5,-341.5 5488.5,-341.5 5347.5,-341.5"/>
-<polygon fill="none" stroke="#666666" points="5332.5,-268.5 5332.5,-388.5 5488.5,-388.5 5488.5,-268.5 5332.5,-268.5"/>
+<text text-anchor="start" x="5349.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="5349.5" y="-305.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="5336.5" y="-290.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5349.5" y="-290.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="5332.5,-356.5 5332.5,-356.5 5488.5,-356.5 5488.5,-356.5 5332.5,-356.5"/>
+<polygon fill="#666666" stroke="#666666" points="5332.5,-326.5 5332.5,-326.5 5347.5,-326.5 5347.5,-326.5 5332.5,-326.5"/>
+<polygon fill="#666666" stroke="#666666" points="5347.5,-326.5 5347.5,-326.5 5488.5,-326.5 5488.5,-326.5 5347.5,-326.5"/>
+<polygon fill="none" stroke="#666666" points="5332.5,-283.5 5332.5,-373.5 5488.5,-373.5 5488.5,-283.5 5332.5,-283.5"/>
 </a>
 </g>
 </g>
@@ -1156,7 +1060,7 @@
 <g id="edge60_Node000001_Node000061" class="edge">
 <title>Node1&#45;&gt;Node61</title>
 <g id="a_edge60_Node000001_Node000061"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4628.92,-533.71C4807.99,-527.73 5206.42,-507.18 5323.5,-441 5345.3,-428.68 5363.54,-408.47 5377.6,-388.62"/>
+<path fill="none" stroke="#63b8ff" d="M4628.92,-533.71C4807.99,-527.73 5206.42,-507.18 5323.5,-441 5350.86,-425.54 5372.61,-397.66 5387.52,-373.65"/>
 <polygon fill="none" stroke="#63b8ff" points="4628.63,-530.22 4618.75,-534.04 4628.86,-537.22 4628.63,-530.22"/>
 </a>
 </g>
@@ -1230,25 +1134,21 @@
 <g id="Node000065" class="node">
 <title>Node65</title>
 <g id="a_Node000065"><a xlink:href="classtvm_1_1prim_1_1AndNode.html" target="_top" xlink:title="a &amp;&amp; b">
-<polygon fill="white" stroke="transparent" points="6010.5,-388.5 5854.5,-388.5 5854.5,-268.5 6010.5,-268.5 6010.5,-388.5"/>
-<text text-anchor="start" x="5883" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::AndNode</text>
-<text text-anchor="start" x="5858.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5871.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="6010.5,-373.5 5854.5,-373.5 5854.5,-283.5 6010.5,-283.5 6010.5,-373.5"/>
+<text text-anchor="start" x="5883" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::AndNode</text>
 <text text-anchor="start" x="5858.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5871.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="5871.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="5858.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5871.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">AndNode()</text>
+<text text-anchor="start" x="5871.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="5858.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5871.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">AndNode()</text>
-<text text-anchor="start" x="5858.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5871.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="5871.5" y="-290.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="5858.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5871.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="5854.5,-371.5 5854.5,-371.5 6010.5,-371.5 6010.5,-371.5 5854.5,-371.5"/>
-<polygon fill="#666666" stroke="#666666" points="5854.5,-341.5 5854.5,-341.5 5869.5,-341.5 5869.5,-341.5 5854.5,-341.5"/>
-<polygon fill="#666666" stroke="#666666" points="5869.5,-341.5 5869.5,-341.5 6010.5,-341.5 6010.5,-341.5 5869.5,-341.5"/>
-<polygon fill="none" stroke="#666666" points="5854.5,-268.5 5854.5,-388.5 6010.5,-388.5 6010.5,-268.5 5854.5,-268.5"/>
+<text text-anchor="start" x="5871.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="5871.5" y="-305.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="5858.5" y="-290.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5871.5" y="-290.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="5854.5,-356.5 5854.5,-356.5 6010.5,-356.5 6010.5,-356.5 5854.5,-356.5"/>
+<polygon fill="#666666" stroke="#666666" points="5854.5,-326.5 5854.5,-326.5 5869.5,-326.5 5869.5,-326.5 5854.5,-326.5"/>
+<polygon fill="#666666" stroke="#666666" points="5869.5,-326.5 5869.5,-326.5 6010.5,-326.5 6010.5,-326.5 5869.5,-326.5"/>
+<polygon fill="none" stroke="#666666" points="5854.5,-283.5 5854.5,-373.5 6010.5,-373.5 6010.5,-283.5 5854.5,-283.5"/>
 </a>
 </g>
 </g>
@@ -1256,7 +1156,7 @@
 <g id="edge64_Node000001_Node000065" class="edge">
 <title>Node1&#45;&gt;Node65</title>
 <g id="a_edge64_Node000001_Node000065"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4629.03,-533.7C4905.18,-525.94 5738.73,-498.01 5845.5,-441 5867.81,-429.09 5886.25,-408.71 5900.32,-388.61"/>
+<path fill="none" stroke="#63b8ff" d="M4629.03,-533.7C4905.18,-525.94 5738.73,-498.01 5845.5,-441 5873.44,-426.08 5895.31,-397.89 5910.14,-373.58"/>
 <polygon fill="none" stroke="#63b8ff" points="4628.56,-530.21 4618.66,-533.99 4628.75,-537.21 4628.56,-530.21"/>
 </a>
 </g>
@@ -1265,29 +1165,25 @@
 <g id="Node000066" class="node">
 <title>Node66</title>
 <g id="a_Node000066"><a xlink:href="classtvm_1_1prim_1_1BinaryOpNode.html" target="_top" xlink:title="Base template to implement binary ops.">
-<polygon fill="white" stroke="transparent" points="6208,-403.5 6029,-403.5 6029,-253.5 6208,-253.5 6208,-403.5"/>
-<text text-anchor="start" x="6042" y="-391.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode&lt; T &gt;</text>
-<text text-anchor="start" x="6033.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6046.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="6208,-388.5 6029,-388.5 6029,-268.5 6208,-268.5 6208,-388.5"/>
+<text text-anchor="start" x="6042" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BinaryOpNode&lt; T &gt;</text>
 <text text-anchor="start" x="6033.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6046.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="6046.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="6033.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6046.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="6046.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="6033.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6046.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
+<text text-anchor="start" x="6046.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="6033.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6046.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
+<text text-anchor="start" x="6046.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
 <text text-anchor="start" x="6033.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6046.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">BinaryOpNode()</text>
-<text text-anchor="start" x="6033.5" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6046.5" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="6046.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
-<text text-anchor="start" x="6033.5" y="-260.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6046.5" y="-260.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="6029.5,-386.5 6029.5,-386.5 6208.5,-386.5 6208.5,-386.5 6029.5,-386.5"/>
-<polygon fill="#666666" stroke="#666666" points="6029.5,-326.5 6029.5,-326.5 6044.5,-326.5 6044.5,-326.5 6029.5,-326.5"/>
-<polygon fill="#666666" stroke="#666666" points="6044.5,-326.5 6044.5,-326.5 6208.5,-326.5 6208.5,-326.5 6044.5,-326.5"/>
-<polygon fill="none" stroke="#666666" points="6029,-253.5 6029,-403.5 6208,-403.5 6208,-253.5 6029,-253.5"/>
+<text text-anchor="start" x="6046.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="6046.5" y="-290.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
+<text text-anchor="start" x="6033.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="6046.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="6029.5,-371.5 6029.5,-371.5 6208.5,-371.5 6208.5,-371.5 6029.5,-371.5"/>
+<polygon fill="#666666" stroke="#666666" points="6029.5,-311.5 6029.5,-311.5 6044.5,-311.5 6044.5,-311.5 6029.5,-311.5"/>
+<polygon fill="#666666" stroke="#666666" points="6044.5,-311.5 6044.5,-311.5 6208.5,-311.5 6208.5,-311.5 6044.5,-311.5"/>
+<polygon fill="none" stroke="#666666" points="6029,-268.5 6029,-388.5 6208,-388.5 6208,-268.5 6029,-268.5"/>
 </a>
 </g>
 </g>
@@ -1295,7 +1191,7 @@
 <g id="edge65_Node000001_Node000066" class="edge">
 <title>Node1&#45;&gt;Node66</title>
 <g id="a_edge65_Node000001_Node000066"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4629.16,-534.22C4929.21,-527.65 5894.77,-501.94 6019.5,-441 6037.53,-432.19 6053.71,-418.5 6067.52,-403.69"/>
+<path fill="none" stroke="#63b8ff" d="M4629.16,-534.22C4929.21,-527.65 5894.77,-501.94 6019.5,-441 6043.57,-429.24 6064.36,-408.76 6080.59,-388.54"/>
 <polygon fill="none" stroke="#63b8ff" points="4628.7,-530.73 4618.77,-534.44 4628.85,-537.72 4628.7,-530.73"/>
 </a>
 </g>
@@ -1304,23 +1200,19 @@
 <g id="Node000067" class="node">
 <title>Node67</title>
 <g id="a_Node000067"><a xlink:href="classtvm_1_1prim_1_1BitwiseNotNode.html" target="_top" xlink:title="~a">
-<polygon fill="white" stroke="transparent" points="6382.5,-381 6226.5,-381 6226.5,-276 6382.5,-276 6382.5,-381"/>
-<text text-anchor="start" x="6238" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BitwiseNotNode</text>
-<text text-anchor="start" x="6230.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6243.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="6382.5,-366 6226.5,-366 6226.5,-291 6382.5,-291 6382.5,-366"/>
+<text text-anchor="start" x="6238" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BitwiseNotNode</text>
 <text text-anchor="start" x="6230.5" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6243.5" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">BitwiseNotNode()</text>
+<text text-anchor="start" x="6243.5" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="6230.5" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6243.5" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00">BitwiseNotNode()</text>
-<text text-anchor="start" x="6230.5" y="-308.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6243.5" y="-308.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="6243.5" y="-297.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="6230.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6243.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="6226.5,-363.5 6226.5,-363.5 6382.5,-363.5 6382.5,-363.5 6226.5,-363.5"/>
-<polygon fill="#666666" stroke="#666666" points="6226.5,-348.5 6226.5,-348.5 6241.5,-348.5 6241.5,-348.5 6226.5,-348.5"/>
-<polygon fill="#666666" stroke="#666666" points="6241.5,-348.5 6241.5,-348.5 6382.5,-348.5 6382.5,-348.5 6241.5,-348.5"/>
-<polygon fill="none" stroke="#666666" points="6226.5,-276 6226.5,-381 6382.5,-381 6382.5,-276 6226.5,-276"/>
+<text text-anchor="start" x="6243.5" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="6243.5" y="-312.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="6230.5" y="-297.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="6243.5" y="-297.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="6226.5,-348.5 6226.5,-348.5 6382.5,-348.5 6382.5,-348.5 6226.5,-348.5"/>
+<polygon fill="#666666" stroke="#666666" points="6226.5,-333.5 6226.5,-333.5 6241.5,-333.5 6241.5,-333.5 6226.5,-333.5"/>
+<polygon fill="#666666" stroke="#666666" points="6241.5,-333.5 6241.5,-333.5 6382.5,-333.5 6382.5,-333.5 6241.5,-333.5"/>
+<polygon fill="none" stroke="#666666" points="6226.5,-291 6226.5,-366 6382.5,-366 6382.5,-291 6226.5,-291"/>
 </a>
 </g>
 </g>
@@ -1328,7 +1220,7 @@
 <g id="edge66_Node000001_Node000067" class="edge">
 <title>Node1&#45;&gt;Node67</title>
 <g id="a_edge66_Node000001_Node000067"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4629.03,-535.21C4954.79,-531.72 6075.3,-514.44 6216.5,-441 6241.88,-427.8 6262.33,-403.67 6277.1,-381.22"/>
+<path fill="none" stroke="#63b8ff" d="M4629.03,-535.21C4954.79,-531.72 6075.3,-514.44 6216.5,-441 6247.68,-424.78 6271.41,-392.07 6286.33,-366.25"/>
 <polygon fill="none" stroke="#63b8ff" points="4628.66,-531.71 4618.7,-535.32 4628.74,-538.71 4628.66,-531.71"/>
 </a>
 </g>
@@ -1337,25 +1229,21 @@
 <g id="Node000068" class="node">
 <title>Node68</title>
 <g id="a_Node000068"><a xlink:href="classtvm_1_1prim_1_1BroadcastNode.html" target="_top" xlink:title="Create a vector where all the elements are value.">
-<polygon fill="white" stroke="transparent" points="6556.5,-388.5 6400.5,-388.5 6400.5,-268.5 6556.5,-268.5 6556.5,-388.5"/>
-<text text-anchor="start" x="6414" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BroadcastNode</text>
-<text text-anchor="start" x="6404.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6417.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">value</text>
+<polygon fill="white" stroke="transparent" points="6556.5,-373.5 6400.5,-373.5 6400.5,-283.5 6556.5,-283.5 6556.5,-373.5"/>
+<text text-anchor="start" x="6414" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BroadcastNode</text>
 <text text-anchor="start" x="6404.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6417.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">lanes</text>
+<text text-anchor="start" x="6417.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">value</text>
 <text text-anchor="start" x="6404.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6417.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">BroadcastNode()</text>
+<text text-anchor="start" x="6417.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">lanes</text>
 <text text-anchor="start" x="6404.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6417.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">BroadcastNode()</text>
-<text text-anchor="start" x="6404.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6417.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="6417.5" y="-290.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="6404.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6417.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="6400.5,-371.5 6400.5,-371.5 6556.5,-371.5 6556.5,-371.5 6400.5,-371.5"/>
-<polygon fill="#666666" stroke="#666666" points="6400.5,-341.5 6400.5,-341.5 6415.5,-341.5 6415.5,-341.5 6400.5,-341.5"/>
-<polygon fill="#666666" stroke="#666666" points="6415.5,-341.5 6415.5,-341.5 6556.5,-341.5 6556.5,-341.5 6415.5,-341.5"/>
-<polygon fill="none" stroke="#666666" points="6400.5,-268.5 6400.5,-388.5 6556.5,-388.5 6556.5,-268.5 6400.5,-268.5"/>
+<text text-anchor="start" x="6417.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="6417.5" y="-305.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="6404.5" y="-290.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="6417.5" y="-290.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="6400.5,-356.5 6400.5,-356.5 6556.5,-356.5 6556.5,-356.5 6400.5,-356.5"/>
+<polygon fill="#666666" stroke="#666666" points="6400.5,-326.5 6400.5,-326.5 6415.5,-326.5 6415.5,-326.5 6400.5,-326.5"/>
+<polygon fill="#666666" stroke="#666666" points="6415.5,-326.5 6415.5,-326.5 6556.5,-326.5 6556.5,-326.5 6415.5,-326.5"/>
+<polygon fill="none" stroke="#666666" points="6400.5,-283.5 6400.5,-373.5 6556.5,-373.5 6556.5,-283.5 6400.5,-283.5"/>
 </a>
 </g>
 </g>
@@ -1363,7 +1251,7 @@
 <g id="edge67_Node000001_Node000068" class="edge">
 <title>Node1&#45;&gt;Node68</title>
 <g id="a_edge67_Node000001_Node000068"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4628.82,-535.75C4975.81,-534.17 6234.22,-522.83 6391.5,-441 6414.04,-429.27 6432.58,-408.8 6446.66,-388.57"/>
+<path fill="none" stroke="#63b8ff" d="M4628.82,-535.75C4975.81,-534.17 6234.22,-522.83 6391.5,-441 6419.71,-426.32 6441.64,-397.96 6456.43,-373.52"/>
 <polygon fill="none" stroke="#63b8ff" points="4628.56,-532.25 4618.58,-535.79 4628.59,-539.25 4628.56,-532.25"/>
 </a>
 </g>
@@ -1372,23 +1260,19 @@
 <g id="Node000069" class="node">
 <title>Node69</title>
 <g id="a_Node000069"><a xlink:href="classtvm_1_1prim_1_1CastNode.html" target="_top" xlink:title="Cast value from one data type to another.">
-<polygon fill="white" stroke="transparent" points="6730.5,-381 6574.5,-381 6574.5,-276 6730.5,-276 6730.5,-381"/>
-<text text-anchor="start" x="6601.5" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::CastNode</text>
-<text text-anchor="start" x="6578.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6591.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">value</text>
+<polygon fill="white" stroke="transparent" points="6730.5,-366 6574.5,-366 6574.5,-291 6730.5,-291 6730.5,-366"/>
+<text text-anchor="start" x="6601.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::CastNode</text>
 <text text-anchor="start" x="6578.5" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6591.5" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">CastNode()</text>
+<text text-anchor="start" x="6591.5" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">value</text>
 <text text-anchor="start" x="6578.5" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6591.5" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00">CastNode()</text>
-<text text-anchor="start" x="6578.5" y="-308.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6591.5" y="-308.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="6591.5" y="-297.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="6578.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6591.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="6574.5,-363.5 6574.5,-363.5 6730.5,-363.5 6730.5,-363.5 6574.5,-363.5"/>
-<polygon fill="#666666" stroke="#666666" points="6574.5,-348.5 6574.5,-348.5 6589.5,-348.5 6589.5,-348.5 6574.5,-348.5"/>
-<polygon fill="#666666" stroke="#666666" points="6589.5,-348.5 6589.5,-348.5 6730.5,-348.5 6730.5,-348.5 6589.5,-348.5"/>
-<polygon fill="none" stroke="#666666" points="6574.5,-276 6574.5,-381 6730.5,-381 6730.5,-276 6574.5,-276"/>
+<text text-anchor="start" x="6591.5" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="6591.5" y="-312.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="6578.5" y="-297.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="6591.5" y="-297.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="6574.5,-348.5 6574.5,-348.5 6730.5,-348.5 6730.5,-348.5 6574.5,-348.5"/>
+<polygon fill="#666666" stroke="#666666" points="6574.5,-333.5 6574.5,-333.5 6589.5,-333.5 6589.5,-333.5 6574.5,-333.5"/>
+<polygon fill="#666666" stroke="#666666" points="6589.5,-333.5 6589.5,-333.5 6730.5,-333.5 6730.5,-333.5 6589.5,-333.5"/>
+<polygon fill="none" stroke="#666666" points="6574.5,-291 6574.5,-366 6730.5,-366 6730.5,-291 6574.5,-291"/>
 </a>
 </g>
 </g>
@@ -1396,7 +1280,7 @@
 <g id="edge68_Node000001_Node000069" class="edge">
 <title>Node1&#45;&gt;Node69</title>
 <g id="a_edge68_Node000001_Node000069"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4628.76,-536.17C4996.02,-536.29 6391.98,-530.79 6565.5,-441 6590.9,-427.85 6611.2,-403.58 6625.78,-381.03"/>
+<path fill="none" stroke="#63b8ff" d="M4628.76,-536.17C4996.02,-536.29 6391.98,-530.79 6565.5,-441 6596.68,-424.86 6620.18,-391.96 6634.84,-366.06"/>
 <polygon fill="none" stroke="#63b8ff" points="4628.72,-532.67 4618.72,-536.16 4628.72,-539.67 4628.72,-532.67"/>
 </a>
 </g>
@@ -1405,29 +1289,25 @@
 <g id="Node000070" class="node">
 <title>Node70</title>
 <g id="a_Node000070"><a xlink:href="classtvm_1_1prim_1_1CmpOpNode.html" target="_top" xlink:title="Base template to implement comparison ops.">
-<polygon fill="white" stroke="transparent" points="6928,-403.5 6749,-403.5 6749,-253.5 6928,-253.5 6928,-403.5"/>
-<text text-anchor="start" x="6766.5" y="-391.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::CmpOpNode&lt; T &gt;</text>
-<text text-anchor="start" x="6753.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6766.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="6928,-388.5 6749,-388.5 6749,-268.5 6928,-268.5 6928,-388.5"/>
+<text text-anchor="start" x="6766.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::CmpOpNode&lt; T &gt;</text>
 <text text-anchor="start" x="6753.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6766.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="6766.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="6753.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6766.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="6766.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="6753.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6766.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
+<text text-anchor="start" x="6766.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="6753.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6766.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">CmpOpNode()</text>
+<text text-anchor="start" x="6766.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_final</text>
 <text text-anchor="start" x="6753.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6766.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">CmpOpNode()</text>
-<text text-anchor="start" x="6753.5" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6766.5" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="6766.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
-<text text-anchor="start" x="6753.5" y="-260.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6766.5" y="-260.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="6749.5,-386.5 6749.5,-386.5 6928.5,-386.5 6928.5,-386.5 6749.5,-386.5"/>
-<polygon fill="#666666" stroke="#666666" points="6749.5,-326.5 6749.5,-326.5 6764.5,-326.5 6764.5,-326.5 6749.5,-326.5"/>
-<polygon fill="#666666" stroke="#666666" points="6764.5,-326.5 6764.5,-326.5 6928.5,-326.5 6928.5,-326.5 6764.5,-326.5"/>
-<polygon fill="none" stroke="#666666" points="6749,-253.5 6749,-403.5 6928,-403.5 6928,-253.5 6749,-253.5"/>
+<text text-anchor="start" x="6766.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="6766.5" y="-290.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_PREDEFINED_TYPE_KEY()</text>
+<text text-anchor="start" x="6753.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="6766.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="6749.5,-371.5 6749.5,-371.5 6928.5,-371.5 6928.5,-371.5 6749.5,-371.5"/>
+<polygon fill="#666666" stroke="#666666" points="6749.5,-311.5 6749.5,-311.5 6764.5,-311.5 6764.5,-311.5 6749.5,-311.5"/>
+<polygon fill="#666666" stroke="#666666" points="6764.5,-311.5 6764.5,-311.5 6928.5,-311.5 6928.5,-311.5 6764.5,-311.5"/>
+<polygon fill="none" stroke="#666666" points="6749,-268.5 6749,-388.5 6928,-388.5 6928,-268.5 6749,-268.5"/>
 </a>
 </g>
 </g>
@@ -1435,7 +1315,7 @@
 <g id="edge69_Node000001_Node000070" class="edge">
 <title>Node1&#45;&gt;Node70</title>
 <g id="a_edge69_Node000001_Node000070"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4628.73,-536.23C5015.04,-536.69 6546.72,-532.69 6739.5,-441 6757.73,-432.33 6774.05,-418.59 6787.92,-403.68"/>
+<path fill="none" stroke="#63b8ff" d="M4628.73,-536.23C5015.04,-536.69 6546.72,-532.69 6739.5,-441 6763.81,-429.44 6784.71,-408.87 6800.95,-388.52"/>
 <polygon fill="none" stroke="#63b8ff" points="4628.73,-532.73 4618.73,-536.22 4628.72,-539.73 4628.73,-532.73"/>
 </a>
 </g>
@@ -1444,27 +1324,23 @@
 <g id="Node000071" class="node">
 <title>Node71</title>
 <g id="a_Node000071"><a xlink:href="classtvm_1_1prim_1_1LetNode.html" target="_top" xlink:title="Let binding. Bind var to value then evaluate body.">
-<polygon fill="white" stroke="transparent" points="7102.5,-396 6946.5,-396 6946.5,-261 7102.5,-261 7102.5,-396"/>
-<text text-anchor="start" x="6977" y="-383.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::LetNode</text>
-<text text-anchor="start" x="6950.5" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6963.5" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00">var</text>
+<polygon fill="white" stroke="transparent" points="7102.5,-381 6946.5,-381 6946.5,-276 7102.5,-276 7102.5,-381"/>
+<text text-anchor="start" x="6977" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::LetNode</text>
 <text text-anchor="start" x="6950.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6963.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">value</text>
+<text text-anchor="start" x="6963.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">var</text>
 <text text-anchor="start" x="6950.5" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6963.5" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">body</text>
+<text text-anchor="start" x="6963.5" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">value</text>
 <text text-anchor="start" x="6950.5" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6963.5" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00">LetNode()</text>
+<text text-anchor="start" x="6963.5" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00">body</text>
 <text text-anchor="start" x="6950.5" y="-308.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6963.5" y="-308.5" font-family="Helvetica,sans-Serif" font-size="10.00">LetNode()</text>
-<text text-anchor="start" x="6950.5" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6963.5" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="6963.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="6950.5" y="-267.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6963.5" y="-267.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="6946.5,-378.5 6946.5,-378.5 7102.5,-378.5 7102.5,-378.5 6946.5,-378.5"/>
-<polygon fill="#666666" stroke="#666666" points="6946.5,-333.5 6946.5,-333.5 6961.5,-333.5 6961.5,-333.5 6946.5,-333.5"/>
-<polygon fill="#666666" stroke="#666666" points="6961.5,-333.5 6961.5,-333.5 7102.5,-333.5 7102.5,-333.5 6961.5,-333.5"/>
-<polygon fill="none" stroke="#666666" points="6946.5,-261 6946.5,-396 7102.5,-396 7102.5,-261 6946.5,-261"/>
+<text text-anchor="start" x="6963.5" y="-308.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="6963.5" y="-297.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="6950.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="6963.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="6946.5,-363.5 6946.5,-363.5 7102.5,-363.5 7102.5,-363.5 6946.5,-363.5"/>
+<polygon fill="#666666" stroke="#666666" points="6946.5,-318.5 6946.5,-318.5 6961.5,-318.5 6961.5,-318.5 6946.5,-318.5"/>
+<polygon fill="#666666" stroke="#666666" points="6961.5,-318.5 6961.5,-318.5 7102.5,-318.5 7102.5,-318.5 6961.5,-318.5"/>
+<polygon fill="none" stroke="#666666" points="6946.5,-276 6946.5,-381 7102.5,-381 7102.5,-276 6946.5,-276"/>
 </a>
 </g>
 </g>
@@ -1472,7 +1348,7 @@
 <g id="edge70_Node000001_Node000071" class="edge">
 <title>Node1&#45;&gt;Node71</title>
 <g id="a_edge70_Node000001_Node000071"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4629,-534.56C5049.76,-527.45 6831.86,-494.3 6936.5,-441 6956.5,-430.81 6973.4,-413.78 6986.87,-396.06"/>
+<path fill="none" stroke="#63b8ff" d="M4629,-534.56C5049.76,-527.45 6831.86,-494.3 6936.5,-441 6962.1,-427.96 6982.62,-403.7 6997.39,-381.13"/>
 <polygon fill="none" stroke="#63b8ff" points="4628.66,-531.07 4618.72,-534.73 4628.78,-538.06 4628.66,-531.07"/>
 </a>
 </g>
@@ -1481,23 +1357,19 @@
 <g id="Node000072" class="node">
 <title>Node72</title>
 <g id="a_Node000072"><a xlink:href="classtvm_1_1prim_1_1NotNode.html" target="_top" xlink:title="!a">
-<polygon fill="white" stroke="transparent" points="7276.5,-381 7120.5,-381 7120.5,-276 7276.5,-276 7276.5,-381"/>
-<text text-anchor="start" x="7150" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::NotNode</text>
-<text text-anchor="start" x="7124.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7137.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="7276.5,-366 7120.5,-366 7120.5,-291 7276.5,-291 7276.5,-366"/>
+<text text-anchor="start" x="7150" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::NotNode</text>
 <text text-anchor="start" x="7124.5" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7137.5" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">NotNode()</text>
+<text text-anchor="start" x="7137.5" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="7124.5" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7137.5" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00">NotNode()</text>
-<text text-anchor="start" x="7124.5" y="-308.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7137.5" y="-308.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="7137.5" y="-297.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="7124.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7137.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="7120.5,-363.5 7120.5,-363.5 7276.5,-363.5 7276.5,-363.5 7120.5,-363.5"/>
-<polygon fill="#666666" stroke="#666666" points="7120.5,-348.5 7120.5,-348.5 7135.5,-348.5 7135.5,-348.5 7120.5,-348.5"/>
-<polygon fill="#666666" stroke="#666666" points="7135.5,-348.5 7135.5,-348.5 7276.5,-348.5 7276.5,-348.5 7135.5,-348.5"/>
-<polygon fill="none" stroke="#666666" points="7120.5,-276 7120.5,-381 7276.5,-381 7276.5,-276 7120.5,-276"/>
+<text text-anchor="start" x="7137.5" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="7137.5" y="-312.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="7124.5" y="-297.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="7137.5" y="-297.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="7120.5,-348.5 7120.5,-348.5 7276.5,-348.5 7276.5,-348.5 7120.5,-348.5"/>
+<polygon fill="#666666" stroke="#666666" points="7120.5,-333.5 7120.5,-333.5 7135.5,-333.5 7135.5,-333.5 7120.5,-333.5"/>
+<polygon fill="#666666" stroke="#666666" points="7135.5,-333.5 7135.5,-333.5 7276.5,-333.5 7276.5,-333.5 7135.5,-333.5"/>
+<polygon fill="none" stroke="#666666" points="7120.5,-291 7120.5,-366 7276.5,-366 7276.5,-291 7120.5,-291"/>
 </a>
 </g>
 </g>
@@ -1505,7 +1377,7 @@
 <g id="edge71_Node000001_Node000072" class="edge">
 <title>Node1&#45;&gt;Node72</title>
 <g id="a_edge71_Node000001_Node000072"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4628.59,-534.83C5067.18,-528.72 6998.73,-498.65 7111.5,-441 7136.97,-427.98 7157.27,-403.72 7171.84,-381.14"/>
+<path fill="none" stroke="#63b8ff" d="M4628.59,-534.83C5067.18,-528.72 6998.73,-498.65 7111.5,-441 7142.76,-425.02 7166.25,-392.1 7180.89,-366.15"/>
 <polygon fill="none" stroke="#63b8ff" points="4628.46,-531.33 4618.51,-534.97 4628.56,-538.33 4628.46,-531.33"/>
 </a>
 </g>
@@ -1514,25 +1386,21 @@
 <g id="Node000073" class="node">
 <title>Node73</title>
 <g id="a_Node000073"><a xlink:href="classtvm_1_1prim_1_1OrNode.html" target="_top" xlink:title="a || b">
-<polygon fill="white" stroke="transparent" points="7450.5,-388.5 7294.5,-388.5 7294.5,-268.5 7450.5,-268.5 7450.5,-388.5"/>
-<text text-anchor="start" x="7327" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::OrNode</text>
-<text text-anchor="start" x="7298.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7311.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
+<polygon fill="white" stroke="transparent" points="7450.5,-373.5 7294.5,-373.5 7294.5,-283.5 7450.5,-283.5 7450.5,-373.5"/>
+<text text-anchor="start" x="7327" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::OrNode</text>
 <text text-anchor="start" x="7298.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7311.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
+<text text-anchor="start" x="7311.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">a</text>
 <text text-anchor="start" x="7298.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7311.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">OrNode()</text>
+<text text-anchor="start" x="7311.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">b</text>
 <text text-anchor="start" x="7298.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7311.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">OrNode()</text>
-<text text-anchor="start" x="7298.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7311.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="7311.5" y="-290.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="7298.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7311.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="7294.5,-371.5 7294.5,-371.5 7450.5,-371.5 7450.5,-371.5 7294.5,-371.5"/>
-<polygon fill="#666666" stroke="#666666" points="7294.5,-341.5 7294.5,-341.5 7309.5,-341.5 7309.5,-341.5 7294.5,-341.5"/>
-<polygon fill="#666666" stroke="#666666" points="7309.5,-341.5 7309.5,-341.5 7450.5,-341.5 7450.5,-341.5 7309.5,-341.5"/>
-<polygon fill="none" stroke="#666666" points="7294.5,-268.5 7294.5,-388.5 7450.5,-388.5 7450.5,-268.5 7294.5,-268.5"/>
+<text text-anchor="start" x="7311.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="7311.5" y="-305.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="7298.5" y="-290.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="7311.5" y="-290.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="7294.5,-356.5 7294.5,-356.5 7450.5,-356.5 7450.5,-356.5 7294.5,-356.5"/>
+<polygon fill="#666666" stroke="#666666" points="7294.5,-326.5 7294.5,-326.5 7309.5,-326.5 7309.5,-326.5 7294.5,-326.5"/>
+<polygon fill="#666666" stroke="#666666" points="7309.5,-326.5 7309.5,-326.5 7450.5,-326.5 7450.5,-326.5 7309.5,-326.5"/>
+<polygon fill="none" stroke="#666666" points="7294.5,-283.5 7294.5,-373.5 7450.5,-373.5 7450.5,-283.5 7294.5,-283.5"/>
 </a>
 </g>
 </g>
@@ -1540,7 +1408,7 @@
 <g id="edge72_Node000001_Node000073" class="edge">
 <title>Node1&#45;&gt;Node73</title>
 <g id="a_edge72_Node000001_Node000073"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4628.91,-535.04C5085.97,-529.8 7164.55,-502.65 7285.5,-441 7308.14,-429.46 7326.7,-409.03 7340.77,-388.77"/>
+<path fill="none" stroke="#63b8ff" d="M4628.91,-535.04C5085.97,-529.8 7164.55,-502.65 7285.5,-441 7313.83,-426.56 7335.76,-398.2 7350.52,-373.69"/>
 <polygon fill="none" stroke="#63b8ff" points="4628.69,-531.54 4618.73,-535.15 4628.77,-538.54 4628.69,-531.54"/>
 </a>
 </g>
@@ -1549,27 +1417,23 @@
 <g id="Node000074" class="node">
 <title>Node74</title>
 <g id="a_Node000074"><a xlink:href="classtvm_1_1prim_1_1RampNode.html" target="_top" xlink:title="Construct a vector with lanes elements where its i&#45;th element equals base + i * stride....">
-<polygon fill="white" stroke="transparent" points="7624.5,-396 7468.5,-396 7468.5,-261 7624.5,-261 7624.5,-396"/>
-<text text-anchor="start" x="7492" y="-383.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::RampNode</text>
-<text text-anchor="start" x="7472.5" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7485.5" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00">base</text>
+<polygon fill="white" stroke="transparent" points="7624.5,-381 7468.5,-381 7468.5,-276 7624.5,-276 7624.5,-381"/>
+<text text-anchor="start" x="7492" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::RampNode</text>
 <text text-anchor="start" x="7472.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7485.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">stride</text>
+<text text-anchor="start" x="7485.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">base</text>
 <text text-anchor="start" x="7472.5" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7485.5" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">lanes</text>
+<text text-anchor="start" x="7485.5" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">stride</text>
 <text text-anchor="start" x="7472.5" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7485.5" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00">RampNode()</text>
+<text text-anchor="start" x="7485.5" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00">lanes</text>
 <text text-anchor="start" x="7472.5" y="-308.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7485.5" y="-308.5" font-family="Helvetica,sans-Serif" font-size="10.00">RampNode()</text>
-<text text-anchor="start" x="7472.5" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7485.5" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="7485.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="7472.5" y="-267.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7485.5" y="-267.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="7468.5,-378.5 7468.5,-378.5 7624.5,-378.5 7624.5,-378.5 7468.5,-378.5"/>
-<polygon fill="#666666" stroke="#666666" points="7468.5,-333.5 7468.5,-333.5 7483.5,-333.5 7483.5,-333.5 7468.5,-333.5"/>
-<polygon fill="#666666" stroke="#666666" points="7483.5,-333.5 7483.5,-333.5 7624.5,-333.5 7624.5,-333.5 7483.5,-333.5"/>
-<polygon fill="none" stroke="#666666" points="7468.5,-261 7468.5,-396 7624.5,-396 7624.5,-261 7468.5,-261"/>
+<text text-anchor="start" x="7485.5" y="-308.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="7485.5" y="-297.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="7472.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="7485.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="7468.5,-363.5 7468.5,-363.5 7624.5,-363.5 7624.5,-363.5 7468.5,-363.5"/>
+<polygon fill="#666666" stroke="#666666" points="7468.5,-318.5 7468.5,-318.5 7483.5,-318.5 7483.5,-318.5 7468.5,-318.5"/>
+<polygon fill="#666666" stroke="#666666" points="7483.5,-318.5 7483.5,-318.5 7624.5,-318.5 7624.5,-318.5 7483.5,-318.5"/>
+<polygon fill="none" stroke="#666666" points="7468.5,-276 7468.5,-381 7624.5,-381 7624.5,-276 7468.5,-276"/>
 </a>
 </g>
 </g>
@@ -1577,7 +1441,7 @@
 <g id="edge73_Node000001_Node000074" class="edge">
 <title>Node1&#45;&gt;Node74</title>
 <g id="a_edge73_Node000001_Node000074"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4629.06,-535.23C5103.76,-530.81 7330.33,-506.67 7459.5,-441 7479.42,-430.87 7496.17,-413.86 7509.49,-396.13"/>
+<path fill="none" stroke="#63b8ff" d="M4629.06,-535.23C5103.76,-530.81 7330.33,-506.67 7459.5,-441 7485,-428.04 7505.31,-403.78 7519.87,-381.19"/>
 <polygon fill="none" stroke="#63b8ff" points="4628.81,-531.73 4618.84,-535.32 4628.87,-538.73 4628.81,-531.73"/>
 </a>
 </g>
@@ -1586,27 +1450,23 @@
 <g id="Node000075" class="node">
 <title>Node75</title>
 <g id="a_Node000075"><a xlink:href="classtvm_1_1prim_1_1SelectNode.html" target="_top" xlink:title="return true_value if condition is true, otherwise return false_value.">
-<polygon fill="white" stroke="transparent" points="7798.5,-396 7642.5,-396 7642.5,-261 7798.5,-261 7798.5,-396"/>
-<text text-anchor="start" x="7665.5" y="-383.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::SelectNode</text>
-<text text-anchor="start" x="7646.5" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7659.5" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00">condition</text>
+<polygon fill="white" stroke="transparent" points="7798.5,-381 7642.5,-381 7642.5,-276 7798.5,-276 7798.5,-381"/>
+<text text-anchor="start" x="7665.5" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::SelectNode</text>
 <text text-anchor="start" x="7646.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7659.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">true_value</text>
+<text text-anchor="start" x="7659.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">condition</text>
 <text text-anchor="start" x="7646.5" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7659.5" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">false_value</text>
+<text text-anchor="start" x="7659.5" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">true_value</text>
 <text text-anchor="start" x="7646.5" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7659.5" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00">SelectNode()</text>
+<text text-anchor="start" x="7659.5" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00">false_value</text>
 <text text-anchor="start" x="7646.5" y="-308.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7659.5" y="-308.5" font-family="Helvetica,sans-Serif" font-size="10.00">SelectNode()</text>
-<text text-anchor="start" x="7646.5" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7659.5" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="7659.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="7646.5" y="-267.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="7659.5" y="-267.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="7642.5,-378.5 7642.5,-378.5 7798.5,-378.5 7798.5,-378.5 7642.5,-378.5"/>
-<polygon fill="#666666" stroke="#666666" points="7642.5,-333.5 7642.5,-333.5 7657.5,-333.5 7657.5,-333.5 7642.5,-333.5"/>
-<polygon fill="#666666" stroke="#666666" points="7657.5,-333.5 7657.5,-333.5 7798.5,-333.5 7798.5,-333.5 7657.5,-333.5"/>
-<polygon fill="none" stroke="#666666" points="7642.5,-261 7642.5,-396 7798.5,-396 7798.5,-261 7642.5,-261"/>
+<text text-anchor="start" x="7659.5" y="-308.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="7659.5" y="-297.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="7646.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="7659.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="7642.5,-363.5 7642.5,-363.5 7798.5,-363.5 7798.5,-363.5 7642.5,-363.5"/>
+<polygon fill="#666666" stroke="#666666" points="7642.5,-318.5 7642.5,-318.5 7657.5,-318.5 7657.5,-318.5 7642.5,-318.5"/>
+<polygon fill="#666666" stroke="#666666" points="7657.5,-318.5 7657.5,-318.5 7798.5,-318.5 7798.5,-318.5 7657.5,-318.5"/>
+<polygon fill="none" stroke="#666666" points="7642.5,-276 7642.5,-381 7798.5,-381 7798.5,-276 7642.5,-276"/>
 </a>
 </g>
 </g>
@@ -1614,7 +1474,7 @@
 <g id="edge74_Node000001_Node000075" class="edge">
 <title>Node1&#45;&gt;Node75</title>
 <g id="a_edge74_Node000001_Node000075"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4628.72,-535.4C5119.48,-531.78 7496.06,-510.72 7633.5,-441 7653.43,-430.89 7670.18,-413.88 7683.5,-396.15"/>
+<path fill="none" stroke="#63b8ff" d="M4628.72,-535.4C5119.48,-531.78 7496.06,-510.72 7633.5,-441 7659.01,-428.06 7679.32,-403.81 7693.88,-381.22"/>
 <polygon fill="none" stroke="#63b8ff" points="4628.49,-531.9 4618.51,-535.47 4628.54,-538.9 4628.49,-531.9"/>
 </a>
 </g>
@@ -1654,29 +1514,25 @@
 <g id="Node000077" class="node">
 <title>Node77</title>
 <g id="a_Node000077"><a xlink:href="classtvm_1_1relax_1_1IfNode.html" target="_top" xlink:title="Condition expression.">
-<polygon fill="white" stroke="transparent" points="8146.5,-403.5 7990.5,-403.5 7990.5,-253.5 8146.5,-253.5 8146.5,-403.5"/>
-<text text-anchor="start" x="8024" y="-391.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::IfNode</text>
-<text text-anchor="start" x="7994.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8007.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">cond</text>
+<polygon fill="white" stroke="transparent" points="8146.5,-388.5 7990.5,-388.5 7990.5,-268.5 8146.5,-268.5 8146.5,-388.5"/>
+<text text-anchor="start" x="8024" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::IfNode</text>
 <text text-anchor="start" x="7994.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8007.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">true_branch</text>
+<text text-anchor="start" x="8007.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">cond</text>
 <text text-anchor="start" x="7994.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8007.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">false_branch</text>
+<text text-anchor="start" x="8007.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">true_branch</text>
 <text text-anchor="start" x="7994.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8007.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="8007.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">false_branch</text>
 <text text-anchor="start" x="7994.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8007.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">IfNode()</text>
+<text text-anchor="start" x="8007.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
 <text text-anchor="start" x="7994.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8007.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">IfNode()</text>
-<text text-anchor="start" x="7994.5" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8007.5" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="8007.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="7994.5" y="-260.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8007.5" y="-260.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="7990.5,-386.5 7990.5,-386.5 8146.5,-386.5 8146.5,-386.5 7990.5,-386.5"/>
-<polygon fill="#666666" stroke="#666666" points="7990.5,-326.5 7990.5,-326.5 8005.5,-326.5 8005.5,-326.5 7990.5,-326.5"/>
-<polygon fill="#666666" stroke="#666666" points="8005.5,-326.5 8005.5,-326.5 8146.5,-326.5 8146.5,-326.5 8005.5,-326.5"/>
-<polygon fill="none" stroke="#666666" points="7990.5,-253.5 7990.5,-403.5 8146.5,-403.5 8146.5,-253.5 7990.5,-253.5"/>
+<text text-anchor="start" x="8007.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="8007.5" y="-290.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="7994.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="8007.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="7990.5,-371.5 7990.5,-371.5 8146.5,-371.5 8146.5,-371.5 7990.5,-371.5"/>
+<polygon fill="#666666" stroke="#666666" points="7990.5,-311.5 7990.5,-311.5 8005.5,-311.5 8005.5,-311.5 7990.5,-311.5"/>
+<polygon fill="#666666" stroke="#666666" points="8005.5,-311.5 8005.5,-311.5 8146.5,-311.5 8146.5,-311.5 8005.5,-311.5"/>
+<polygon fill="none" stroke="#666666" points="7990.5,-268.5 7990.5,-388.5 8146.5,-388.5 8146.5,-268.5 7990.5,-268.5"/>
 </a>
 </g>
 </g>
@@ -1684,7 +1540,7 @@
 <g id="edge76_Node000001_Node000077" class="edge">
 <title>Node1&#45;&gt;Node77</title>
 <g id="a_edge76_Node000001_Node000077"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4628.77,-535.68C5151.87,-533.54 7827.55,-518.8 7981.5,-441 7998.59,-432.36 8013.35,-418.64 8025.6,-403.73"/>
+<path fill="none" stroke="#63b8ff" d="M4628.77,-535.68C5151.87,-533.54 7827.55,-518.8 7981.5,-441 8004.29,-429.48 8022.92,-408.92 8037.01,-388.57"/>
 <polygon fill="none" stroke="#63b8ff" points="4628.63,-532.18 4618.65,-535.72 4628.66,-539.18 4628.63,-532.18"/>
 </a>
 </g>
@@ -1693,29 +1549,25 @@
 <g id="Node000078" class="node">
 <title>Node78</title>
 <g id="a_Node000078"><a xlink:href="classtvm_1_1relax_1_1SeqExprNode.html" target="_top" xlink:title="A sequence of blocks followed by an expression.">
-<polygon fill="white" stroke="transparent" points="8320.5,-403.5 8164.5,-403.5 8164.5,-253.5 8320.5,-253.5 8320.5,-403.5"/>
-<text text-anchor="start" x="8181.5" y="-391.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::SeqExprNode</text>
-<text text-anchor="start" x="8168.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8181.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">blocks</text>
+<polygon fill="white" stroke="transparent" points="8320.5,-388.5 8164.5,-388.5 8164.5,-268.5 8320.5,-268.5 8320.5,-388.5"/>
+<text text-anchor="start" x="8181.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::SeqExprNode</text>
 <text text-anchor="start" x="8168.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8181.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">body</text>
+<text text-anchor="start" x="8181.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">blocks</text>
 <text text-anchor="start" x="8168.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8181.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">SeqExprNode()</text>
+<text text-anchor="start" x="8181.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">body</text>
 <text text-anchor="start" x="8168.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8181.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">SeqExprNode()</text>
+<text text-anchor="start" x="8181.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">SEqual()</text>
 <text text-anchor="start" x="8168.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8181.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">SEqual()</text>
+<text text-anchor="start" x="8181.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">SHash()</text>
 <text text-anchor="start" x="8168.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8181.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">SHash()</text>
-<text text-anchor="start" x="8168.5" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8181.5" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="8181.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="8168.5" y="-260.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8181.5" y="-260.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="8164.5,-386.5 8164.5,-386.5 8320.5,-386.5 8320.5,-386.5 8164.5,-386.5"/>
-<polygon fill="#666666" stroke="#666666" points="8164.5,-356.5 8164.5,-356.5 8179.5,-356.5 8179.5,-356.5 8164.5,-356.5"/>
-<polygon fill="#666666" stroke="#666666" points="8179.5,-356.5 8179.5,-356.5 8320.5,-356.5 8320.5,-356.5 8179.5,-356.5"/>
-<polygon fill="none" stroke="#666666" points="8164.5,-253.5 8164.5,-403.5 8320.5,-403.5 8320.5,-253.5 8164.5,-253.5"/>
+<text text-anchor="start" x="8181.5" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="8181.5" y="-290.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="8168.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="8181.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="8164.5,-371.5 8164.5,-371.5 8320.5,-371.5 8320.5,-371.5 8164.5,-371.5"/>
+<polygon fill="#666666" stroke="#666666" points="8164.5,-341.5 8164.5,-341.5 8179.5,-341.5 8179.5,-341.5 8164.5,-341.5"/>
+<polygon fill="#666666" stroke="#666666" points="8179.5,-341.5 8179.5,-341.5 8320.5,-341.5 8320.5,-341.5 8179.5,-341.5"/>
+<polygon fill="none" stroke="#666666" points="8164.5,-268.5 8164.5,-388.5 8320.5,-388.5 8320.5,-268.5 8164.5,-268.5"/>
 </a>
 </g>
 </g>
@@ -1723,7 +1575,7 @@
 <g id="edge77_Node000001_Node000078" class="edge">
 <title>Node1&#45;&gt;Node78</title>
 <g id="a_edge77_Node000001_Node000078"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4628.89,-535.81C5167.76,-534.35 7993.28,-522.84 8155.5,-441 8172.6,-432.37 8187.35,-418.65 8199.61,-403.74"/>
+<path fill="none" stroke="#63b8ff" d="M4628.89,-535.81C5167.76,-534.35 7993.28,-522.84 8155.5,-441 8178.3,-429.5 8196.93,-408.94 8211.02,-388.58"/>
 <polygon fill="none" stroke="#63b8ff" points="4628.83,-532.31 4618.84,-535.83 4628.85,-539.31 4628.83,-532.31"/>
 </a>
 </g>
@@ -1827,8 +1679,8 @@
 <g id="edge3_Node000003_Node000004" class="edge">
 <title>Node3&#45;&gt;Node4</title>
 <g id="a_edge3_Node000003_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M89.5,-237.52C89.5,-193.18 89.5,-143.22 89.5,-114.58"/>
-<polygon fill="none" stroke="#63b8ff" points="86,-237.76 89.5,-247.76 93,-237.76 86,-237.76"/>
+<path fill="none" stroke="#63b8ff" d="M89.5,-252.6C89.5,-205.07 89.5,-146.68 89.5,-114.72"/>
+<polygon fill="none" stroke="#63b8ff" points="86,-252.88 89.5,-262.88 93,-252.88 86,-252.88"/>
 </a>
 </g>
 </g>
@@ -1852,8 +1704,8 @@
 <g id="edge5_Node000005_Node000006" class="edge">
 <title>Node5&#45;&gt;Node6</title>
 <g id="a_edge5_Node000005_Node000006"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M286.5,-237.52C286.5,-193.18 286.5,-143.22 286.5,-114.58"/>
-<polygon fill="none" stroke="#63b8ff" points="283,-237.76 286.5,-247.76 290,-237.76 283,-237.76"/>
+<path fill="none" stroke="#63b8ff" d="M286.5,-252.6C286.5,-205.07 286.5,-146.68 286.5,-114.72"/>
+<polygon fill="none" stroke="#63b8ff" points="283,-252.88 286.5,-262.88 290,-252.88 283,-252.88"/>
 </a>
 </g>
 </g>
@@ -1877,8 +1729,8 @@
 <g id="edge7_Node000007_Node000008" class="edge">
 <title>Node7&#45;&gt;Node8</title>
 <g id="a_edge7_Node000007_Node000008"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M483.5,-237.52C483.5,-193.18 483.5,-143.22 483.5,-114.58"/>
-<polygon fill="none" stroke="#63b8ff" points="480,-237.76 483.5,-247.76 487,-237.76 480,-237.76"/>
+<path fill="none" stroke="#63b8ff" d="M483.5,-252.6C483.5,-205.07 483.5,-146.68 483.5,-114.72"/>
+<polygon fill="none" stroke="#63b8ff" points="480,-252.88 483.5,-262.88 487,-252.88 480,-252.88"/>
 </a>
 </g>
 </g>
@@ -1902,8 +1754,8 @@
 <g id="edge9_Node000009_Node000010" class="edge">
 <title>Node9&#45;&gt;Node10</title>
 <g id="a_edge9_Node000009_Node000010"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M680.5,-237.52C680.5,-193.18 680.5,-143.22 680.5,-114.58"/>
-<polygon fill="none" stroke="#63b8ff" points="677,-237.76 680.5,-247.76 684,-237.76 677,-237.76"/>
+<path fill="none" stroke="#63b8ff" d="M680.5,-252.6C680.5,-205.07 680.5,-146.68 680.5,-114.72"/>
+<polygon fill="none" stroke="#63b8ff" points="677,-252.88 680.5,-262.88 684,-252.88 677,-252.88"/>
 </a>
 </g>
 </g>
@@ -1927,8 +1779,8 @@
 <g id="edge11_Node000011_Node000012" class="edge">
 <title>Node11&#45;&gt;Node12</title>
 <g id="a_edge11_Node000011_Node000012"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M877.5,-237.52C877.5,-193.18 877.5,-143.22 877.5,-114.58"/>
-<polygon fill="none" stroke="#63b8ff" points="874,-237.76 877.5,-247.76 881,-237.76 874,-237.76"/>
+<path fill="none" stroke="#63b8ff" d="M877.5,-252.6C877.5,-205.07 877.5,-146.68 877.5,-114.72"/>
+<polygon fill="none" stroke="#63b8ff" points="874,-252.88 877.5,-262.88 881,-252.88 874,-252.88"/>
 </a>
 </g>
 </g>
@@ -1952,8 +1804,8 @@
 <g id="edge13_Node000013_Node000014" class="edge">
 <title>Node13&#45;&gt;Node14</title>
 <g id="a_edge13_Node000013_Node000014"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1074.5,-237.52C1074.5,-193.18 1074.5,-143.22 1074.5,-114.58"/>
-<polygon fill="none" stroke="#63b8ff" points="1071,-237.76 1074.5,-247.76 1078,-237.76 1071,-237.76"/>
+<path fill="none" stroke="#63b8ff" d="M1074.5,-252.6C1074.5,-205.07 1074.5,-146.68 1074.5,-114.72"/>
+<polygon fill="none" stroke="#63b8ff" points="1071,-252.88 1074.5,-262.88 1078,-252.88 1071,-252.88"/>
 </a>
 </g>
 </g>
@@ -1977,8 +1829,8 @@
 <g id="edge15_Node000015_Node000016" class="edge">
 <title>Node15&#45;&gt;Node16</title>
 <g id="a_edge15_Node000015_Node000016"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1271.5,-237.52C1271.5,-193.18 1271.5,-143.22 1271.5,-114.58"/>
-<polygon fill="none" stroke="#63b8ff" points="1268,-237.76 1271.5,-247.76 1275,-237.76 1268,-237.76"/>
+<path fill="none" stroke="#63b8ff" d="M1271.5,-252.6C1271.5,-205.07 1271.5,-146.68 1271.5,-114.72"/>
+<polygon fill="none" stroke="#63b8ff" points="1268,-252.88 1271.5,-262.88 1275,-252.88 1268,-252.88"/>
 </a>
 </g>
 </g>
@@ -2002,8 +1854,8 @@
 <g id="edge17_Node000017_Node000018" class="edge">
 <title>Node17&#45;&gt;Node18</title>
 <g id="a_edge17_Node000017_Node000018"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1468.5,-237.52C1468.5,-193.18 1468.5,-143.22 1468.5,-114.58"/>
-<polygon fill="none" stroke="#63b8ff" points="1465,-237.76 1468.5,-247.76 1472,-237.76 1465,-237.76"/>
+<path fill="none" stroke="#63b8ff" d="M1468.5,-252.6C1468.5,-205.07 1468.5,-146.68 1468.5,-114.72"/>
+<polygon fill="none" stroke="#63b8ff" points="1465,-252.88 1468.5,-262.88 1472,-252.88 1465,-252.88"/>
 </a>
 </g>
 </g>
@@ -2027,8 +1879,8 @@
 <g id="edge19_Node000019_Node000020" class="edge">
 <title>Node19&#45;&gt;Node20</title>
 <g id="a_edge19_Node000019_Node000020"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1665.5,-237.52C1665.5,-193.18 1665.5,-143.22 1665.5,-114.58"/>
-<polygon fill="none" stroke="#63b8ff" points="1662,-237.76 1665.5,-247.76 1669,-237.76 1662,-237.76"/>
+<path fill="none" stroke="#63b8ff" d="M1665.5,-252.6C1665.5,-205.07 1665.5,-146.68 1665.5,-114.72"/>
+<polygon fill="none" stroke="#63b8ff" points="1662,-252.88 1665.5,-262.88 1669,-252.88 1662,-252.88"/>
 </a>
 </g>
 </g>
@@ -2052,8 +1904,8 @@
 <g id="edge21_Node000021_Node000022" class="edge">
 <title>Node21&#45;&gt;Node22</title>
 <g id="a_edge21_Node000021_Node000022"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1862.5,-237.52C1862.5,-193.18 1862.5,-143.22 1862.5,-114.58"/>
-<polygon fill="none" stroke="#63b8ff" points="1859,-237.76 1862.5,-247.76 1866,-237.76 1859,-237.76"/>
+<path fill="none" stroke="#63b8ff" d="M1862.5,-252.6C1862.5,-205.07 1862.5,-146.68 1862.5,-114.72"/>
+<polygon fill="none" stroke="#63b8ff" points="1859,-252.88 1862.5,-262.88 1866,-252.88 1859,-252.88"/>
 </a>
 </g>
 </g>
@@ -2077,8 +1929,8 @@
 <g id="edge23_Node000023_Node000024" class="edge">
 <title>Node23&#45;&gt;Node24</title>
 <g id="a_edge23_Node000023_Node000024"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2059.5,-237.52C2059.5,-193.18 2059.5,-143.22 2059.5,-114.58"/>
-<polygon fill="none" stroke="#63b8ff" points="2056,-237.76 2059.5,-247.76 2063,-237.76 2056,-237.76"/>
+<path fill="none" stroke="#63b8ff" d="M2059.5,-252.6C2059.5,-205.07 2059.5,-146.68 2059.5,-114.72"/>
+<polygon fill="none" stroke="#63b8ff" points="2056,-252.88 2059.5,-262.88 2063,-252.88 2056,-252.88"/>
 </a>
 </g>
 </g>
@@ -2102,8 +1954,8 @@
 <g id="edge25_Node000025_Node000026" class="edge">
 <title>Node25&#45;&gt;Node26</title>
 <g id="a_edge25_Node000025_Node000026"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2256.5,-237.52C2256.5,-193.18 2256.5,-143.22 2256.5,-114.58"/>
-<polygon fill="none" stroke="#63b8ff" points="2253,-237.76 2256.5,-247.76 2260,-237.76 2253,-237.76"/>
+<path fill="none" stroke="#63b8ff" d="M2256.5,-252.6C2256.5,-205.07 2256.5,-146.68 2256.5,-114.72"/>
+<polygon fill="none" stroke="#63b8ff" points="2253,-252.88 2256.5,-262.88 2260,-252.88 2253,-252.88"/>
 </a>
 </g>
 </g>
@@ -2127,8 +1979,8 @@
 <g id="edge27_Node000027_Node000028" class="edge">
 <title>Node27&#45;&gt;Node28</title>
 <g id="a_edge27_Node000027_Node000028"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2453.5,-237.52C2453.5,-193.18 2453.5,-143.22 2453.5,-114.58"/>
-<polygon fill="none" stroke="#63b8ff" points="2450,-237.76 2453.5,-247.76 2457,-237.76 2450,-237.76"/>
+<path fill="none" stroke="#63b8ff" d="M2453.5,-252.6C2453.5,-205.07 2453.5,-146.68 2453.5,-114.72"/>
+<polygon fill="none" stroke="#63b8ff" points="2450,-252.88 2453.5,-262.88 2457,-252.88 2450,-252.88"/>
 </a>
 </g>
 </g>
@@ -2152,8 +2004,8 @@
 <g id="edge29_Node000029_Node000030" class="edge">
 <title>Node29&#45;&gt;Node30</title>
 <g id="a_edge29_Node000029_Node000030"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2650.5,-237.52C2650.5,-193.18 2650.5,-143.22 2650.5,-114.58"/>
-<polygon fill="none" stroke="#63b8ff" points="2647,-237.76 2650.5,-247.76 2654,-237.76 2647,-237.76"/>
+<path fill="none" stroke="#63b8ff" d="M2650.5,-252.6C2650.5,-205.07 2650.5,-146.68 2650.5,-114.72"/>
+<polygon fill="none" stroke="#63b8ff" points="2647,-252.88 2650.5,-262.88 2654,-252.88 2647,-252.88"/>
 </a>
 </g>
 </g>
@@ -2177,8 +2029,8 @@
 <g id="edge31_Node000031_Node000032" class="edge">
 <title>Node31&#45;&gt;Node32</title>
 <g id="a_edge31_Node000031_Node000032"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2847.5,-237.52C2847.5,-193.18 2847.5,-143.22 2847.5,-114.58"/>
-<polygon fill="none" stroke="#63b8ff" points="2844,-237.76 2847.5,-247.76 2851,-237.76 2844,-237.76"/>
+<path fill="none" stroke="#63b8ff" d="M2847.5,-252.6C2847.5,-205.07 2847.5,-146.68 2847.5,-114.72"/>
+<polygon fill="none" stroke="#63b8ff" points="2844,-252.88 2847.5,-262.88 2851,-252.88 2844,-252.88"/>
 </a>
 </g>
 </g>
@@ -2202,8 +2054,8 @@
 <g id="edge33_Node000033_Node000034" class="edge">
 <title>Node33&#45;&gt;Node34</title>
 <g id="a_edge33_Node000033_Node000034"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3044.5,-237.52C3044.5,-193.18 3044.5,-143.22 3044.5,-114.58"/>
-<polygon fill="none" stroke="#63b8ff" points="3041,-237.76 3044.5,-247.76 3048,-237.76 3041,-237.76"/>
+<path fill="none" stroke="#63b8ff" d="M3044.5,-252.6C3044.5,-205.07 3044.5,-146.68 3044.5,-114.72"/>
+<polygon fill="none" stroke="#63b8ff" points="3041,-252.88 3044.5,-262.88 3048,-252.88 3041,-252.88"/>
 </a>
 </g>
 </g>
@@ -2227,8 +2079,8 @@
 <g id="edge35_Node000035_Node000036" class="edge">
 <title>Node35&#45;&gt;Node36</title>
 <g id="a_edge35_Node000035_Node000036"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3227.09,-237.8C3219.95,-193.39 3211.9,-143.28 3207.29,-114.58"/>
-<polygon fill="none" stroke="#63b8ff" points="3223.65,-238.44 3228.69,-247.76 3230.56,-237.33 3223.65,-238.44"/>
+<path fill="none" stroke="#63b8ff" d="M3229.51,-252.9C3221.87,-205.31 3212.46,-146.75 3207.31,-114.72"/>
+<polygon fill="none" stroke="#63b8ff" points="3226.07,-253.56 3231.12,-262.88 3232.99,-252.45 3226.07,-253.56"/>
 </a>
 </g>
 </g>
@@ -2252,8 +2104,8 @@
 <g id="edge37_Node000037_Node000038" class="edge">
 <title>Node37&#45;&gt;Node38</title>
 <g id="a_edge37_Node000037_Node000038"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3395.66,-238.64C3374.16,-194.02 3349.79,-143.46 3335.87,-114.58"/>
-<polygon fill="none" stroke="#63b8ff" points="3392.57,-240.27 3400.06,-247.76 3398.87,-237.23 3392.57,-240.27"/>
+<path fill="none" stroke="#63b8ff" d="M3402.97,-253.8C3379.96,-206.05 3351.47,-146.95 3335.93,-114.72"/>
+<polygon fill="none" stroke="#63b8ff" points="3399.85,-255.39 3407.35,-262.88 3406.16,-252.35 3399.85,-255.39"/>
 </a>
 </g>
 </g>
@@ -2277,8 +2129,8 @@
 <g id="edge39_Node000039_Node000040" class="edge">
 <title>Node39&#45;&gt;Node40</title>
 <g id="a_edge39_Node000039_Node000040"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3558.33,-240.32C3550.97,-232.08 3543.6,-223.87 3536.5,-216 3521.96,-199.88 3516.94,-197.05 3503.5,-180 3486.77,-158.78 3469.75,-133.05 3458.12,-114.72"/>
-<polygon fill="none" stroke="#63b8ff" points="3555.81,-242.75 3565.08,-247.88 3561.03,-238.09 3555.81,-242.75"/>
+<path fill="none" stroke="#63b8ff" d="M3571.56,-255.15C3559.93,-242.09 3547.88,-228.61 3536.5,-216 3521.96,-199.88 3516.94,-197.05 3503.5,-180 3486.77,-158.78 3469.75,-133.05 3458.12,-114.72"/>
+<polygon fill="none" stroke="#63b8ff" points="3569.09,-257.64 3578.35,-262.78 3574.32,-252.99 3569.09,-257.64"/>
 </a>
 </g>
 </g>
@@ -2302,8 +2154,8 @@
 <g id="edge41_Node000041_Node000042" class="edge">
 <title>Node41&#45;&gt;Node42</title>
 <g id="a_edge41_Node000041_Node000042"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3764.23,-240.84C3754.58,-231.66 3744.26,-223.1 3733.5,-216 3691.27,-188.14 3665.91,-210.45 3625.5,-180 3602.76,-162.86 3585.52,-134.7 3575.26,-114.65"/>
-<polygon fill="none" stroke="#63b8ff" points="3761.89,-243.44 3771.47,-247.96 3766.8,-238.46 3761.89,-243.44"/>
+<path fill="none" stroke="#63b8ff" d="M3778.51,-255.35C3765.06,-240.83 3749.78,-226.74 3733.5,-216 3691.27,-188.14 3665.91,-210.45 3625.5,-180 3602.76,-162.86 3585.52,-134.7 3575.26,-114.65"/>
+<polygon fill="none" stroke="#63b8ff" points="3776.08,-257.88 3785.37,-262.97 3781.28,-253.19 3776.08,-257.88"/>
 </a>
 </g>
 </g>
@@ -2340,31 +2192,27 @@
 <g id="Node000045" class="node">
 <title>Node45</title>
 <g id="a_Node000045"><a xlink:href="classtvm_1_1relax_1_1FunctionNode.html" target="_top" xlink:title="A Relax function.">
-<polygon fill="white" stroke="transparent" points="3964.5,-172.5 3808.5,-172.5 3808.5,-7.5 3964.5,-7.5 3964.5,-172.5"/>
-<text text-anchor="start" x="3824.5" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::FunctionNode</text>
-<text text-anchor="start" x="3812.5" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3825.5" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">params</text>
+<polygon fill="white" stroke="transparent" points="3964.5,-157.5 3808.5,-157.5 3808.5,-22.5 3964.5,-22.5 3964.5,-157.5"/>
+<text text-anchor="start" x="3824.5" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::FunctionNode</text>
 <text text-anchor="start" x="3812.5" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3825.5" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">body</text>
+<text text-anchor="start" x="3825.5" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">params</text>
 <text text-anchor="start" x="3812.5" y="-115" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3825.5" y="-115" font-family="Helvetica,sans-Serif" font-size="10.00">ret_ty</text>
+<text text-anchor="start" x="3825.5" y="-115" font-family="Helvetica,sans-Serif" font-size="10.00">body</text>
 <text text-anchor="start" x="3812.5" y="-100" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3825.5" y="-100" font-family="Helvetica,sans-Serif" font-size="10.00">is_pure</text>
+<text text-anchor="start" x="3825.5" y="-100" font-family="Helvetica,sans-Serif" font-size="10.00">ret_ty</text>
 <text text-anchor="start" x="3812.5" y="-85" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3825.5" y="-85" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="3825.5" y="-85" font-family="Helvetica,sans-Serif" font-size="10.00">is_pure</text>
 <text text-anchor="start" x="3812.5" y="-70" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3825.5" y="-70" font-family="Helvetica,sans-Serif" font-size="10.00">FunctionNode()</text>
+<text text-anchor="start" x="3825.5" y="-70" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
 <text text-anchor="start" x="3812.5" y="-55" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3825.5" y="-55" font-family="Helvetica,sans-Serif" font-size="10.00">FunctionNode()</text>
-<text text-anchor="start" x="3812.5" y="-40" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3825.5" y="-40" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="3825.5" y="-29" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="3812.5" y="-14" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3825.5" y="-14" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="3808.5,-155 3808.5,-155 3964.5,-155 3964.5,-155 3808.5,-155"/>
-<polygon fill="#666666" stroke="#666666" points="3808.5,-80 3808.5,-80 3823.5,-80 3823.5,-80 3808.5,-80"/>
-<polygon fill="#666666" stroke="#666666" points="3823.5,-80 3823.5,-80 3964.5,-80 3964.5,-80 3823.5,-80"/>
-<polygon fill="none" stroke="#666666" points="3808.5,-7.5 3808.5,-172.5 3964.5,-172.5 3964.5,-7.5 3808.5,-7.5"/>
+<text text-anchor="start" x="3825.5" y="-55" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="3825.5" y="-44" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="3812.5" y="-29" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3825.5" y="-29" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="3808.5,-140 3808.5,-140 3964.5,-140 3964.5,-140 3808.5,-140"/>
+<polygon fill="#666666" stroke="#666666" points="3808.5,-65 3808.5,-65 3823.5,-65 3823.5,-65 3808.5,-65"/>
+<polygon fill="#666666" stroke="#666666" points="3823.5,-65 3823.5,-65 3964.5,-65 3964.5,-65 3823.5,-65"/>
+<polygon fill="none" stroke="#666666" points="3808.5,-22.5 3808.5,-157.5 3964.5,-157.5 3964.5,-22.5 3808.5,-22.5"/>
 </a>
 </g>
 </g>
@@ -2372,7 +2220,7 @@
 <g id="edge44_Node000043_Node000045" class="edge">
 <title>Node43&#45;&gt;Node45</title>
 <g id="a_edge44_Node000043_Node000045"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3972.18,-244.5C3959.18,-221.22 3945.07,-195.93 3932.11,-172.72"/>
+<path fill="none" stroke="#63b8ff" d="M3972.02,-244.23C3956.2,-215.88 3938.73,-184.58 3923.73,-157.7"/>
 <polygon fill="none" stroke="#63b8ff" points="3969.17,-246.29 3977.1,-253.32 3975.28,-242.88 3969.17,-246.29"/>
 </a>
 </g>
@@ -2565,33 +2413,29 @@
 <g id="Node000057" class="node">
 <title>Node57</title>
 <g id="a_Node000057"><a xlink:href="classtvm_1_1te_1_1ReduceNode.html" target="_top" xlink:title="Reduction operator.">
-<polygon fill="white" stroke="transparent" points="5182.5,-180 5026.5,-180 5026.5,0 5182.5,0 5182.5,-180"/>
-<text text-anchor="start" x="5053" y="-168" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::te::ReduceNode</text>
-<text text-anchor="start" x="5030.5" y="-153" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5043.5" y="-153" font-family="Helvetica,sans-Serif" font-size="10.00">combiner</text>
+<polygon fill="white" stroke="transparent" points="5182.5,-165 5026.5,-165 5026.5,-15 5182.5,-15 5182.5,-165"/>
+<text text-anchor="start" x="5053" y="-153" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::te::ReduceNode</text>
 <text text-anchor="start" x="5030.5" y="-138" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5043.5" y="-138" font-family="Helvetica,sans-Serif" font-size="10.00">source</text>
+<text text-anchor="start" x="5043.5" y="-138" font-family="Helvetica,sans-Serif" font-size="10.00">combiner</text>
 <text text-anchor="start" x="5030.5" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5043.5" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00">init</text>
+<text text-anchor="start" x="5043.5" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00">source</text>
 <text text-anchor="start" x="5030.5" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5043.5" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00">axis</text>
+<text text-anchor="start" x="5043.5" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00">init</text>
 <text text-anchor="start" x="5030.5" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5043.5" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">condition</text>
+<text text-anchor="start" x="5043.5" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">axis</text>
 <text text-anchor="start" x="5030.5" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5043.5" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">value_index</text>
+<text text-anchor="start" x="5043.5" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">condition</text>
 <text text-anchor="start" x="5030.5" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5043.5" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">ReduceNode()</text>
+<text text-anchor="start" x="5043.5" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">value_index</text>
 <text text-anchor="start" x="5030.5" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5043.5" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">ReduceNode()</text>
-<text text-anchor="start" x="5030.5" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5043.5" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="5043.5" y="-22" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="5030.5" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5043.5" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="5026.5,-163 5026.5,-163 5182.5,-163 5182.5,-163 5026.5,-163"/>
-<polygon fill="#666666" stroke="#666666" points="5026.5,-73 5026.5,-73 5041.5,-73 5041.5,-73 5026.5,-73"/>
-<polygon fill="#666666" stroke="#666666" points="5041.5,-73 5041.5,-73 5182.5,-73 5182.5,-73 5041.5,-73"/>
-<polygon fill="none" stroke="#666666" points="5026.5,0 5026.5,-180 5182.5,-180 5182.5,0 5026.5,0"/>
+<text text-anchor="start" x="5043.5" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="5043.5" y="-37" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="5030.5" y="-22" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5043.5" y="-22" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="5026.5,-148 5026.5,-148 5182.5,-148 5182.5,-148 5026.5,-148"/>
+<polygon fill="#666666" stroke="#666666" points="5026.5,-58 5026.5,-58 5041.5,-58 5041.5,-58 5026.5,-58"/>
+<polygon fill="#666666" stroke="#666666" points="5041.5,-58 5041.5,-58 5182.5,-58 5182.5,-58 5041.5,-58"/>
+<polygon fill="none" stroke="#666666" points="5026.5,-15 5026.5,-165 5182.5,-165 5182.5,-15 5026.5,-15"/>
 </a>
 </g>
 </g>
@@ -2599,7 +2443,7 @@
 <g id="edge56_Node000056_Node000057" class="edge">
 <title>Node56&#45;&gt;Node57</title>
 <g id="a_edge56_Node000056_Node000057"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4920.24,-282.7C4935.94,-261.65 4955.74,-236.69 4975.5,-216 4992.48,-198.22 4999.56,-196.81 5017.5,-180 5020.34,-177.34 5023.21,-174.62 5026.09,-171.85"/>
+<path fill="none" stroke="#63b8ff" d="M4920.24,-282.7C4935.94,-261.65 4955.74,-236.69 4975.5,-216 4992.48,-198.22 4999.56,-196.81 5017.5,-180 5022.55,-175.27 5027.69,-170.34 5032.83,-165.32"/>
 <polygon fill="none" stroke="#63b8ff" points="4917.33,-280.74 4914.21,-290.86 4922.96,-284.9 4917.33,-280.74"/>
 </a>
 </g>
@@ -2680,31 +2524,27 @@
 <g id="Node000081" class="node">
 <title>Node81</title>
 <g id="a_Node000081"><a xlink:href="classtvm_1_1sym_1_1IterSplitExprNode.html" target="_top" xlink:title="Split of an iterator.">
-<polygon fill="white" stroke="transparent" points="8581.5,-172.5 8425.5,-172.5 8425.5,-7.5 8581.5,-7.5 8581.5,-172.5"/>
-<text text-anchor="start" x="8434" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::sym::IterSplitExprNode</text>
-<text text-anchor="start" x="8429.5" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8442.5" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">source</text>
+<polygon fill="white" stroke="transparent" points="8581.5,-157.5 8425.5,-157.5 8425.5,-22.5 8581.5,-22.5 8581.5,-157.5"/>
+<text text-anchor="start" x="8434" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::sym::IterSplitExprNode</text>
 <text text-anchor="start" x="8429.5" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8442.5" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">lower_factor</text>
+<text text-anchor="start" x="8442.5" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">source</text>
 <text text-anchor="start" x="8429.5" y="-115" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8442.5" y="-115" font-family="Helvetica,sans-Serif" font-size="10.00">extent</text>
+<text text-anchor="start" x="8442.5" y="-115" font-family="Helvetica,sans-Serif" font-size="10.00">lower_factor</text>
 <text text-anchor="start" x="8429.5" y="-100" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8442.5" y="-100" font-family="Helvetica,sans-Serif" font-size="10.00">scale</text>
+<text text-anchor="start" x="8442.5" y="-100" font-family="Helvetica,sans-Serif" font-size="10.00">extent</text>
 <text text-anchor="start" x="8429.5" y="-85" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8442.5" y="-85" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="8442.5" y="-85" font-family="Helvetica,sans-Serif" font-size="10.00">scale</text>
 <text text-anchor="start" x="8429.5" y="-70" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8442.5" y="-70" font-family="Helvetica,sans-Serif" font-size="10.00">IterSplitExprNode()</text>
+<text text-anchor="start" x="8442.5" y="-70" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
 <text text-anchor="start" x="8429.5" y="-55" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8442.5" y="-55" font-family="Helvetica,sans-Serif" font-size="10.00">IterSplitExprNode()</text>
-<text text-anchor="start" x="8429.5" y="-40" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8442.5" y="-40" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="8442.5" y="-29" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="8429.5" y="-14" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8442.5" y="-14" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="8425.5,-155 8425.5,-155 8581.5,-155 8581.5,-155 8425.5,-155"/>
-<polygon fill="#666666" stroke="#666666" points="8425.5,-80 8425.5,-80 8440.5,-80 8440.5,-80 8425.5,-80"/>
-<polygon fill="#666666" stroke="#666666" points="8440.5,-80 8440.5,-80 8581.5,-80 8581.5,-80 8440.5,-80"/>
-<polygon fill="none" stroke="#666666" points="8425.5,-7.5 8425.5,-172.5 8581.5,-172.5 8581.5,-7.5 8425.5,-7.5"/>
+<text text-anchor="start" x="8442.5" y="-55" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="8442.5" y="-44" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="8429.5" y="-29" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="8442.5" y="-29" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="8425.5,-140 8425.5,-140 8581.5,-140 8581.5,-140 8425.5,-140"/>
+<polygon fill="#666666" stroke="#666666" points="8425.5,-65 8425.5,-65 8440.5,-65 8440.5,-65 8425.5,-65"/>
+<polygon fill="#666666" stroke="#666666" points="8440.5,-65 8440.5,-65 8581.5,-65 8581.5,-65 8440.5,-65"/>
+<polygon fill="none" stroke="#666666" points="8425.5,-22.5 8425.5,-157.5 8581.5,-157.5 8581.5,-22.5 8425.5,-22.5"/>
 </a>
 </g>
 </g>
@@ -2712,7 +2552,7 @@
 <g id="edge80_Node000080_Node000081" class="edge">
 <title>Node80&#45;&gt;Node81</title>
 <g id="a_edge80_Node000080_Node000081"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M8576.09,-288.33C8564.53,-256.91 8547.92,-211.74 8533.5,-172.54"/>
+<path fill="none" stroke="#63b8ff" d="M8576.16,-288.51C8563.1,-253.02 8543.55,-199.88 8528.02,-157.66"/>
 <polygon fill="none" stroke="#63b8ff" points="8572.92,-289.85 8579.66,-298.03 8579.49,-287.43 8572.92,-289.85"/>
 </a>
 </g>
@@ -2721,27 +2561,23 @@
 <g id="Node000082" class="node">
 <title>Node82</title>
 <g id="a_Node000082"><a xlink:href="classtvm_1_1sym_1_1IterSumExprNode.html" target="_top" xlink:title="Fuse multiple iterators by summing them with scaling.">
-<polygon fill="white" stroke="transparent" points="8755.5,-157.5 8599.5,-157.5 8599.5,-22.5 8755.5,-22.5 8755.5,-157.5"/>
-<text text-anchor="start" x="8608" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::sym::IterSumExprNode</text>
-<text text-anchor="start" x="8603.5" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8616.5" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">args</text>
+<polygon fill="white" stroke="transparent" points="8755.5,-142.5 8599.5,-142.5 8599.5,-37.5 8755.5,-37.5 8755.5,-142.5"/>
+<text text-anchor="start" x="8608" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::sym::IterSumExprNode</text>
 <text text-anchor="start" x="8603.5" y="-115" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8616.5" y="-115" font-family="Helvetica,sans-Serif" font-size="10.00">base</text>
+<text text-anchor="start" x="8616.5" y="-115" font-family="Helvetica,sans-Serif" font-size="10.00">args</text>
 <text text-anchor="start" x="8603.5" y="-100" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8616.5" y="-100" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="8616.5" y="-100" font-family="Helvetica,sans-Serif" font-size="10.00">base</text>
 <text text-anchor="start" x="8603.5" y="-85" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8616.5" y="-85" font-family="Helvetica,sans-Serif" font-size="10.00">IterSumExprNode()</text>
+<text text-anchor="start" x="8616.5" y="-85" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
 <text text-anchor="start" x="8603.5" y="-70" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8616.5" y="-70" font-family="Helvetica,sans-Serif" font-size="10.00">IterSumExprNode()</text>
-<text text-anchor="start" x="8603.5" y="-55" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8616.5" y="-55" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="8616.5" y="-44" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="8603.5" y="-29" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="8616.5" y="-29" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="8599.5,-140 8599.5,-140 8755.5,-140 8755.5,-140 8599.5,-140"/>
-<polygon fill="#666666" stroke="#666666" points="8599.5,-95 8599.5,-95 8614.5,-95 8614.5,-95 8599.5,-95"/>
-<polygon fill="#666666" stroke="#666666" points="8614.5,-95 8614.5,-95 8755.5,-95 8755.5,-95 8614.5,-95"/>
-<polygon fill="none" stroke="#666666" points="8599.5,-22.5 8599.5,-157.5 8755.5,-157.5 8755.5,-22.5 8599.5,-22.5"/>
+<text text-anchor="start" x="8616.5" y="-70" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="8616.5" y="-59" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="8603.5" y="-44" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="8616.5" y="-44" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="8599.5,-125 8599.5,-125 8755.5,-125 8755.5,-125 8599.5,-125"/>
+<polygon fill="#666666" stroke="#666666" points="8599.5,-80 8599.5,-80 8614.5,-80 8614.5,-80 8599.5,-80"/>
+<polygon fill="#666666" stroke="#666666" points="8614.5,-80 8614.5,-80 8755.5,-80 8755.5,-80 8614.5,-80"/>
+<polygon fill="none" stroke="#666666" points="8599.5,-37.5 8599.5,-142.5 8755.5,-142.5 8755.5,-37.5 8599.5,-37.5"/>
 </a>
 </g>
 </g>
@@ -2749,7 +2585,7 @@
 <g id="edge81_Node000080_Node000082" class="edge">
 <title>Node80&#45;&gt;Node82</title>
 <g id="a_edge81_Node000080_Node000082"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M8604.84,-288.51C8617.9,-253.02 8637.45,-199.88 8652.98,-157.66"/>
+<path fill="none" stroke="#63b8ff" d="M8604.88,-288.42C8619.5,-248.66 8642.25,-186.81 8658.39,-142.95"/>
 <polygon fill="none" stroke="#63b8ff" points="8601.51,-287.43 8601.34,-298.03 8608.08,-289.85 8601.51,-287.43"/>
 </a>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1Expr__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1Expr__coll__graph.svg
index 3f077dd1aca..d6ca29bf303 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Expr__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1Expr__coll__graph.svg
@@ -4,31 +4,29 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::Expr Pages: 1 -->
-<svg width="193pt" height="213pt"
- viewBox="0.00 0.00 193.00 213.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 209)">
+<svg width="172pt" height="198pt"
+ viewBox="0.00 0.00 172.00 198.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 194)">
 <title>tvm::Expr</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="Managed reference to ExprNode.">
-<polygon fill="#999999" stroke="transparent" points="185,-120 0,-120 0,0 185,0 185,-120"/>
-<text text-anchor="start" x="69" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
-<text text-anchor="start" x="91" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
-<text text-anchor="start" x="4.5" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
-<text text-anchor="start" x="4.5" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
-<text text-anchor="start" x="4.5" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">Expr()</text>
-<text text-anchor="start" x="4.5" y="-18" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-18" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-103 0.5,-103 185.5,-103 185.5,-103 0.5,-103"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-88 0.5,-88 185.5,-88 185.5,-88 0.5,-88"/>
-<polygon fill="none" stroke="#666666" points="0,0 0,-120 185,-120 185,0 0,0"/>
+<polygon fill="#999999" stroke="transparent" points="164,-105 0,-105 0,0 164,0 164,-105"/>
+<text text-anchor="start" x="58" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
+<text text-anchor="start" x="80" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
+<text text-anchor="start" x="4" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
+<text text-anchor="start" x="4" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
+<text text-anchor="start" x="4" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="17" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-87.5 0,-87.5 164,-87.5 164,-87.5 0,-87.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-72.5 0,-72.5 164,-72.5 164,-72.5 0,-72.5"/>
+<polygon fill="none" stroke="#666666" points="0,0 0,-105 164,-105 164,0 0,0"/>
 </a>
 </g>
 </g>
@@ -36,13 +34,13 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="129.5,-205 55.5,-205 55.5,-156 129.5,-156 129.5,-205"/>
-<text text-anchor="start" x="60.5" y="-192.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="90.5" y="-177.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="90.5" y="-162.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="55.5,-187.5 55.5,-187.5 129.5,-187.5 129.5,-187.5 55.5,-187.5"/>
-<polygon fill="#666666" stroke="#666666" points="55.5,-172.5 55.5,-172.5 129.5,-172.5 129.5,-172.5 55.5,-172.5"/>
-<polygon fill="none" stroke="#666666" points="55.5,-156 55.5,-205 129.5,-205 129.5,-156 55.5,-156"/>
+<polygon fill="white" stroke="transparent" points="119,-190 45,-190 45,-141 119,-141 119,-190"/>
+<text text-anchor="start" x="50" y="-177.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="80" y="-162.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="80" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="45,-172.5 45,-172.5 119,-172.5 119,-172.5 45,-172.5"/>
+<polygon fill="#666666" stroke="#666666" points="45,-157.5 45,-157.5 119,-157.5 119,-157.5 45,-157.5"/>
+<polygon fill="none" stroke="#666666" points="45,-141 45,-190 119,-190 119,-141 45,-141"/>
 </a>
 </g>
 </g>
@@ -50,8 +48,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M92.5,-145.59C92.5,-137.71 92.5,-129.09 92.5,-120.47"/>
-<polygon fill="none" stroke="#63b8ff" points="89,-145.8 92.5,-155.8 96,-145.8 89,-145.8"/>
+<path fill="none" stroke="#63b8ff" d="M82,-130.85C82,-122.79 82,-114 82,-105.32"/>
+<polygon fill="none" stroke="#63b8ff" points="78.5,-130.96 82,-140.96 85.5,-130.96 78.5,-130.96"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1Expr__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1Expr__inherit__graph.svg
index 17bb14a5710..ac1039eff55 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Expr__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1Expr__inherit__graph.svg
@@ -4,31 +4,29 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::Expr Pages: 1 -->
-<svg width="7501pt" height="1110pt"
- viewBox="0.00 0.00 7501.00 1110.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1106)">
+<svg width="6724pt" height="1050pt"
+ viewBox="0.00 0.00 6724.00 1050.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1046)">
 <title>tvm::Expr</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="Managed reference to ExprNode.">
-<polygon fill="#999999" stroke="transparent" points="5463,-1017 5278,-1017 5278,-897 5463,-897 5463,-1017"/>
-<text text-anchor="start" x="5347" y="-1005" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
-<text text-anchor="start" x="5369" y="-990" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="5282.5" y="-975" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5295.5" y="-975" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
-<text text-anchor="start" x="5282.5" y="-960" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5295.5" y="-960" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
-<text text-anchor="start" x="5282.5" y="-945" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5295.5" y="-945" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
-<text text-anchor="start" x="5282.5" y="-930" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5295.5" y="-930" font-family="Helvetica,sans-Serif" font-size="10.00">Expr()</text>
-<text text-anchor="start" x="5282.5" y="-915" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5295.5" y="-915" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="5295.5" y="-904" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="5278.5,-1000 5278.5,-1000 5463.5,-1000 5463.5,-1000 5278.5,-1000"/>
-<polygon fill="#666666" stroke="#666666" points="5278.5,-985 5278.5,-985 5463.5,-985 5463.5,-985 5278.5,-985"/>
-<polygon fill="none" stroke="#666666" points="5278,-897 5278,-1017 5463,-1017 5463,-897 5278,-897"/>
+<polygon fill="#999999" stroke="transparent" points="4918,-957 4754,-957 4754,-852 4918,-852 4918,-957"/>
+<text text-anchor="start" x="4812" y="-944.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
+<text text-anchor="start" x="4834" y="-929.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4758" y="-914.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4771" y="-914.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
+<text text-anchor="start" x="4758" y="-899.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4771" y="-899.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
+<text text-anchor="start" x="4758" y="-884.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4771" y="-884.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
+<text text-anchor="start" x="4758" y="-869.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4771" y="-869.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="4771" y="-858.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="4754,-939.5 4754,-939.5 4918,-939.5 4918,-939.5 4754,-939.5"/>
+<polygon fill="#666666" stroke="#666666" points="4754,-924.5 4754,-924.5 4918,-924.5 4918,-924.5 4754,-924.5"/>
+<polygon fill="none" stroke="#666666" points="4754,-852 4754,-957 4918,-957 4918,-852 4754,-852"/>
 </a>
 </g>
 </g>
@@ -36,22 +34,20 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:href="classtvm_1_1TypedExpr.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="3941,-836.5 3756,-836.5 3756,-735.5 3941,-735.5 3941,-836.5"/>
-<text text-anchor="start" x="3777" y="-824" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypedExpr&lt; PrimType &gt;</text>
-<text text-anchor="start" x="3760.5" y="-809" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3773.5" y="-809" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="3773.5" y="-798" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="3760.5" y="-783" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3773.5" y="-783" font-family="Helvetica,sans-Serif" font-size="10.00">ty()</text>
-<text text-anchor="start" x="3760.5" y="-768" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3773.5" y="-768" font-family="Helvetica,sans-Serif" font-size="10.00">TypedExpr()</text>
-<text text-anchor="start" x="3760.5" y="-753" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3773.5" y="-753" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="3773.5" y="-742" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="3756.5,-819 3756.5,-819 3941.5,-819 3941.5,-819 3756.5,-819"/>
-<polygon fill="#666666" stroke="#666666" points="3756.5,-793 3756.5,-793 3771.5,-793 3771.5,-793 3756.5,-793"/>
-<polygon fill="#666666" stroke="#666666" points="3771.5,-793 3771.5,-793 3941.5,-793 3941.5,-793 3771.5,-793"/>
-<polygon fill="none" stroke="#666666" points="3756,-735.5 3756,-836.5 3941,-836.5 3941,-735.5 3756,-735.5"/>
+<polygon fill="white" stroke="transparent" points="3531,-784 3367,-784 3367,-698 3531,-698 3531,-784"/>
+<text text-anchor="start" x="3377" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypedExpr&lt; PrimType &gt;</text>
+<text text-anchor="start" x="3371" y="-757" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3384" y="-757" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="3384" y="-746" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="3371" y="-731" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3384" y="-731" font-family="Helvetica,sans-Serif" font-size="10.00">ty()</text>
+<text text-anchor="start" x="3371" y="-716" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3384" y="-716" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="3384" y="-705" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="3367,-767 3367,-767 3531,-767 3531,-767 3367,-767"/>
+<polygon fill="#666666" stroke="#666666" points="3367,-741 3367,-741 3382,-741 3382,-741 3367,-741"/>
+<polygon fill="#666666" stroke="#666666" points="3382,-741 3382,-741 3531,-741 3531,-741 3382,-741"/>
+<polygon fill="none" stroke="#666666" points="3367,-698 3367,-784 3531,-784 3531,-698 3367,-698"/>
 </a>
 </g>
 </g>
@@ -59,8 +55,8 @@
 <g id="edge2_Node000001_Node000003" class="edge">
 <title>Node1&#45;&gt;Node3</title>
 <g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M5267.43,-952.3C4998.87,-942.06 4282.41,-910.79 4050.5,-861 4013.89,-853.14 3974.98,-840.09 3941.18,-827.12"/>
-<polygon fill="none" stroke="#63b8ff" points="5267.44,-955.8 5277.56,-952.68 5267.7,-948.81 5267.44,-955.8"/>
+<path fill="none" stroke="#63b8ff" d="M4743.35,-900.52C4499.17,-892.08 3842.31,-865.33 3631,-816 3597.29,-808.13 3561.7,-794.87 3531.02,-781.73"/>
+<polygon fill="none" stroke="#63b8ff" points="4743.5,-904.03 4753.62,-900.88 4743.74,-897.03 4743.5,-904.03"/>
 </a>
 </g>
 </g>
@@ -68,17 +64,15 @@
 <g id="Node000044" class="node">
 <title>Node44</title>
 <g id="a_Node000044"><a xlink:href="classtvm_1_1BaseFunc.html" target="_top" xlink:title="Managed reference to BaseFuncNode.">
-<polygon fill="white" stroke="transparent" points="4245,-823.5 4060,-823.5 4060,-748.5 4245,-748.5 4245,-823.5"/>
-<text text-anchor="start" x="4116.5" y="-811" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseFunc</text>
-<text text-anchor="start" x="4151" y="-796" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4064.5" y="-781" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4077.5" y="-781" font-family="Helvetica,sans-Serif" font-size="10.00">BaseFunc()</text>
-<text text-anchor="start" x="4064.5" y="-766" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4077.5" y="-766" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="4077.5" y="-755" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="4060.5,-806 4060.5,-806 4245.5,-806 4245.5,-806 4060.5,-806"/>
-<polygon fill="#666666" stroke="#666666" points="4060.5,-791 4060.5,-791 4245.5,-791 4245.5,-791 4060.5,-791"/>
-<polygon fill="none" stroke="#666666" points="4060,-748.5 4060,-823.5 4245,-823.5 4245,-748.5 4060,-748.5"/>
+<polygon fill="white" stroke="transparent" points="3804,-771 3640,-771 3640,-711 3804,-711 3804,-771"/>
+<text text-anchor="start" x="3685.5" y="-759" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseFunc</text>
+<text text-anchor="start" x="3720" y="-744" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="3644" y="-729" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3657" y="-729" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="3657" y="-718" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="3640,-754 3640,-754 3804,-754 3804,-754 3640,-754"/>
+<polygon fill="#666666" stroke="#666666" points="3640,-739 3640,-739 3804,-739 3804,-739 3640,-739"/>
+<polygon fill="none" stroke="#666666" points="3640,-711 3640,-771 3804,-771 3804,-711 3640,-711"/>
 </a>
 </g>
 </g>
@@ -86,8 +80,8 @@
 <g id="edge43_Node000001_Node000044" class="edge">
 <title>Node1&#45;&gt;Node44</title>
 <g id="a_edge43_Node000001_Node000044"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M5267.72,-954.33C5027.91,-949.29 4437.77,-930.06 4253.5,-861 4231.11,-852.61 4209.31,-837.77 4191.73,-823.57"/>
-<polygon fill="none" stroke="#63b8ff" points="5267.77,-957.83 5277.84,-954.54 5267.91,-950.83 5267.77,-957.83"/>
+<path fill="none" stroke="#63b8ff" d="M4743.48,-902.51C4524.55,-899.05 3980.57,-883.71 3813,-816 3788.65,-806.16 3765.73,-787.45 3748.98,-771.3"/>
+<polygon fill="none" stroke="#63b8ff" points="4743.6,-906.01 4753.65,-902.66 4743.71,-899.01 4743.6,-906.01"/>
 </a>
 </g>
 </g>
@@ -95,26 +89,24 @@
 <g id="Node000048" class="node">
 <title>Node48</title>
 <g id="a_Node000048"><a xlink:href="classtvm_1_1Call.html" target="_top" xlink:title="Managed reference to CallNode.">
-<polygon fill="white" stroke="transparent" points="4448,-859 4263,-859 4263,-713 4448,-713 4448,-859"/>
-<text text-anchor="start" x="4333.5" y="-847" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Call</text>
-<text text-anchor="start" x="4354" y="-832" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4267.5" y="-817" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4280.5" y="-817" font-family="Helvetica,sans-Serif" font-size="10.00">Call()</text>
-<text text-anchor="start" x="4267.5" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4280.5" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00">Call()</text>
-<text text-anchor="start" x="4267.5" y="-787" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4280.5" y="-787" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="4280.5" y="-776" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="4267.5" y="-761" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4280.5" y="-761" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="4280.5" y="-750" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<text text-anchor="start" x="4267.5" y="-735" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4280.5" y="-735" font-family="Helvetica,sans-Serif" font-size="10.00">Unchecked()</text>
-<text text-anchor="start" x="4267.5" y="-720" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4280.5" y="-720" font-family="Helvetica,sans-Serif" font-size="10.00">ReinferType()</text>
-<polygon fill="#666666" stroke="#666666" points="4263.5,-842 4263.5,-842 4448.5,-842 4448.5,-842 4263.5,-842"/>
-<polygon fill="#666666" stroke="#666666" points="4263.5,-827 4263.5,-827 4448.5,-827 4448.5,-827 4263.5,-827"/>
-<polygon fill="none" stroke="#666666" points="4263,-713 4263,-859 4448,-859 4448,-713 4263,-713"/>
+<polygon fill="white" stroke="transparent" points="3986,-806.5 3822,-806.5 3822,-675.5 3986,-675.5 3986,-806.5"/>
+<text text-anchor="start" x="3881.5" y="-794" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Call</text>
+<text text-anchor="start" x="3902" y="-779" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="3826" y="-764" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3839" y="-764" font-family="Helvetica,sans-Serif" font-size="10.00">Call()</text>
+<text text-anchor="start" x="3826" y="-749" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3839" y="-749" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="3839" y="-738" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="3826" y="-723" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3839" y="-723" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="3839" y="-712" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<text text-anchor="start" x="3826" y="-697" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3839" y="-697" font-family="Helvetica,sans-Serif" font-size="10.00">Unchecked()</text>
+<text text-anchor="start" x="3826" y="-682" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3839" y="-682" font-family="Helvetica,sans-Serif" font-size="10.00">ReinferType()</text>
+<polygon fill="#666666" stroke="#666666" points="3822,-789 3822,-789 3986,-789 3986,-789 3822,-789"/>
+<polygon fill="#666666" stroke="#666666" points="3822,-774 3822,-774 3986,-774 3986,-774 3822,-774"/>
+<polygon fill="none" stroke="#666666" points="3822,-675.5 3822,-806.5 3986,-806.5 3986,-675.5 3822,-675.5"/>
 </a>
 </g>
 </g>
@@ -122,8 +114,8 @@
 <g id="edge47_Node000001_Node000048" class="edge">
 <title>Node1&#45;&gt;Node48</title>
 <g id="a_edge47_Node000001_Node000048"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M5267.66,-952.07C5060.96,-943.07 4602.43,-917.26 4456.5,-861 4453.66,-859.91 4450.83,-858.71 4448.01,-857.43"/>
-<polygon fill="none" stroke="#63b8ff" points="5267.77,-955.58 5277.91,-952.51 5268.07,-948.58 5267.77,-955.58"/>
+<path fill="none" stroke="#63b8ff" d="M4743.51,-900.51C4554.06,-893.32 4128.48,-871.37 3995,-816 3988.7,-813.39 3982.49,-810.19 3976.45,-806.61"/>
+<polygon fill="none" stroke="#63b8ff" points="4743.6,-904.02 4753.72,-900.9 4743.86,-897.02 4743.6,-904.02"/>
 </a>
 </g>
 </g>
@@ -131,17 +123,15 @@
 <g id="Node000049" class="node">
 <title>Node49</title>
 <g id="a_Node000049"><a xlink:href="classtvm_1_1Constant.html" target="_top" xlink:title="Managed reference to a literal constant.">
-<polygon fill="white" stroke="transparent" points="4651,-823.5 4466,-823.5 4466,-748.5 4651,-748.5 4651,-823.5"/>
-<text text-anchor="start" x="4524" y="-811" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Constant</text>
-<text text-anchor="start" x="4557" y="-796" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4470.5" y="-781" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4483.5" y="-781" font-family="Helvetica,sans-Serif" font-size="10.00">Constant()</text>
-<text text-anchor="start" x="4470.5" y="-766" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4483.5" y="-766" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="4483.5" y="-755" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="4466.5,-806 4466.5,-806 4651.5,-806 4651.5,-806 4466.5,-806"/>
-<polygon fill="#666666" stroke="#666666" points="4466.5,-791 4466.5,-791 4651.5,-791 4651.5,-791 4466.5,-791"/>
-<polygon fill="none" stroke="#666666" points="4466,-748.5 4466,-823.5 4651,-823.5 4651,-748.5 4466,-748.5"/>
+<polygon fill="white" stroke="transparent" points="4168,-771 4004,-771 4004,-711 4168,-711 4168,-771"/>
+<text text-anchor="start" x="4051" y="-759" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Constant</text>
+<text text-anchor="start" x="4084" y="-744" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4008" y="-729" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4021" y="-729" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="4021" y="-718" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="4004,-754 4004,-754 4168,-754 4168,-754 4004,-754"/>
+<polygon fill="#666666" stroke="#666666" points="4004,-739 4004,-739 4168,-739 4168,-739 4004,-739"/>
+<polygon fill="none" stroke="#666666" points="4004,-711 4004,-771 4168,-771 4168,-711 4004,-711"/>
 </a>
 </g>
 </g>
@@ -149,8 +139,8 @@
 <g id="edge48_Node000001_Node000049" class="edge">
 <title>Node1&#45;&gt;Node49</title>
 <g id="a_edge48_Node000001_Node000049"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M5267.74,-948.55C5098.16,-935.22 4767.69,-904.54 4659.5,-861 4637.72,-852.24 4616.34,-837.7 4598.9,-823.81"/>
-<polygon fill="none" stroke="#63b8ff" points="5267.69,-952.06 5277.93,-949.35 5268.23,-945.08 5267.69,-952.06"/>
+<path fill="none" stroke="#63b8ff" d="M4743.82,-897.47C4587.32,-886.2 4276.93,-859.12 4177,-816 4153.07,-805.67 4130.32,-787.17 4113.55,-771.26"/>
+<polygon fill="none" stroke="#63b8ff" points="4743.67,-900.97 4753.9,-898.19 4744.17,-893.98 4743.67,-900.97"/>
 </a>
 </g>
 </g>
@@ -158,22 +148,20 @@
 <g id="Node000053" class="node">
 <title>Node53</title>
 <g id="a_Node000053"><a xlink:href="classtvm_1_1GlobalVar.html" target="_top" xlink:title="Managed reference to GlobalVarNode.">
-<polygon fill="white" stroke="transparent" points="4854,-844 4669,-844 4669,-728 4854,-728 4854,-844"/>
-<text text-anchor="start" x="4725.5" y="-832" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::GlobalVar</text>
-<text text-anchor="start" x="4760" y="-817" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4673.5" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4686.5" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00">GlobalVar()</text>
-<text text-anchor="start" x="4673.5" y="-787" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4686.5" y="-787" font-family="Helvetica,sans-Serif" font-size="10.00">GlobalVar()</text>
-<text text-anchor="start" x="4673.5" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4686.5" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="4686.5" y="-761" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="4673.5" y="-746" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4686.5" y="-746" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="4686.5" y="-735" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="4669.5,-827 4669.5,-827 4854.5,-827 4854.5,-827 4669.5,-827"/>
-<polygon fill="#666666" stroke="#666666" points="4669.5,-812 4669.5,-812 4854.5,-812 4854.5,-812 4669.5,-812"/>
-<polygon fill="none" stroke="#666666" points="4669,-728 4669,-844 4854,-844 4854,-728 4669,-728"/>
+<polygon fill="white" stroke="transparent" points="4350,-791.5 4186,-791.5 4186,-690.5 4350,-690.5 4350,-791.5"/>
+<text text-anchor="start" x="4231.5" y="-779" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::GlobalVar</text>
+<text text-anchor="start" x="4266" y="-764" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4190" y="-749" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4203" y="-749" font-family="Helvetica,sans-Serif" font-size="10.00">GlobalVar()</text>
+<text text-anchor="start" x="4190" y="-734" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4203" y="-734" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="4203" y="-723" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="4190" y="-708" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4203" y="-708" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="4203" y="-697" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="4186,-774 4186,-774 4350,-774 4350,-774 4186,-774"/>
+<polygon fill="#666666" stroke="#666666" points="4186,-759 4186,-759 4350,-759 4350,-759 4186,-759"/>
+<polygon fill="none" stroke="#666666" points="4186,-690.5 4186,-791.5 4350,-791.5 4350,-690.5 4186,-690.5"/>
 </a>
 </g>
 </g>
@@ -181,8 +169,8 @@
 <g id="edge52_Node000001_Node000053" class="edge">
 <title>Node1&#45;&gt;Node53</title>
 <g id="a_edge52_Node000001_Node000053"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M5267.9,-950.22C5162.43,-941.26 4995.31,-918.5 4862.5,-861 4851.93,-856.42 4841.4,-850.57 4831.36,-844.16"/>
-<polygon fill="none" stroke="#63b8ff" points="5267.66,-953.72 5277.91,-951.05 5268.23,-946.74 5267.66,-953.72"/>
+<path fill="none" stroke="#63b8ff" d="M4743.81,-900.11C4644.63,-893.44 4484.29,-873.78 4359,-816 4345.5,-809.78 4332.3,-801.08 4320.33,-791.84"/>
+<polygon fill="none" stroke="#63b8ff" points="4743.61,-903.6 4753.81,-900.75 4744.06,-896.62 4743.61,-903.6"/>
 </a>
 </g>
 </g>
@@ -190,27 +178,27 @@
 <g id="Node000054" class="node">
 <title>Node54</title>
 <g id="a_Node000054"><a xlink:href="classtvm_1_1Op.html" target="_top" xlink:title="Reference&#45;counted handle to a canonical named operator.">
-<polygon fill="white" stroke="transparent" points="5057,-861 4872,-861 4872,-711 5057,-711 5057,-861"/>
-<text text-anchor="start" x="4945" y="-849" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Op</text>
-<text text-anchor="start" x="4963" y="-834" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4876.5" y="-819" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4889.5" y="-819" font-family="Helvetica,sans-Serif" font-size="10.00">Op()</text>
-<text text-anchor="start" x="4876.5" y="-804" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4889.5" y="-804" font-family="Helvetica,sans-Serif" font-size="10.00">Validate()</text>
-<text text-anchor="start" x="4876.5" y="-789" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4889.5" y="-789" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="4889.5" y="-778" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="4876.5" y="-763" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4889.5" y="-763" font-family="Helvetica,sans-Serif" font-size="10.00">GetAttrMap()</text>
-<text text-anchor="start" x="4876.5" y="-748" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4889.5" y="-748" font-family="Helvetica,sans-Serif" font-size="10.00">HasAttrMap()</text>
-<text text-anchor="start" x="4876.5" y="-733" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4889.5" y="-733" font-family="Helvetica,sans-Serif" font-size="10.00">Get()</text>
-<text text-anchor="start" x="4876.5" y="-718" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4889.5" y="-718" font-family="Helvetica,sans-Serif" font-size="10.00">ListNames()</text>
-<polygon fill="#666666" stroke="#666666" points="4872.5,-844 4872.5,-844 5057.5,-844 5057.5,-844 4872.5,-844"/>
-<polygon fill="#666666" stroke="#666666" points="4872.5,-829 4872.5,-829 5057.5,-829 5057.5,-829 4872.5,-829"/>
-<polygon fill="none" stroke="#666666" points="4872,-711 4872,-861 5057,-861 5057,-711 4872,-711"/>
+<polygon fill="white" stroke="transparent" points="4553.5,-816 4368.5,-816 4368.5,-666 4553.5,-666 4553.5,-816"/>
+<text text-anchor="start" x="4441.5" y="-804" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Op</text>
+<text text-anchor="start" x="4459.5" y="-789" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4373" y="-774" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4386" y="-774" font-family="Helvetica,sans-Serif" font-size="10.00">Op()</text>
+<text text-anchor="start" x="4373" y="-759" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4386" y="-759" font-family="Helvetica,sans-Serif" font-size="10.00">Validate()</text>
+<text text-anchor="start" x="4373" y="-744" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4386" y="-744" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="4386" y="-733" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
+<text text-anchor="start" x="4373" y="-718" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4386" y="-718" font-family="Helvetica,sans-Serif" font-size="10.00">GetAttrMap()</text>
+<text text-anchor="start" x="4373" y="-703" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4386" y="-703" font-family="Helvetica,sans-Serif" font-size="10.00">HasAttrMap()</text>
+<text text-anchor="start" x="4373" y="-688" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4386" y="-688" font-family="Helvetica,sans-Serif" font-size="10.00">Get()</text>
+<text text-anchor="start" x="4373" y="-673" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4386" y="-673" font-family="Helvetica,sans-Serif" font-size="10.00">ListNames()</text>
+<polygon fill="#666666" stroke="#666666" points="4369,-799 4369,-799 4554,-799 4554,-799 4369,-799"/>
+<polygon fill="#666666" stroke="#666666" points="4369,-784 4369,-784 4554,-784 4554,-784 4369,-784"/>
+<polygon fill="none" stroke="#666666" points="4368.5,-666 4368.5,-816 4553.5,-816 4553.5,-666 4368.5,-666"/>
 </a>
 </g>
 </g>
@@ -218,8 +206,8 @@
 <g id="edge53_Node000001_Node000054" class="edge">
 <title>Node1&#45;&gt;Node54</title>
 <g id="a_edge53_Node000001_Node000054"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M5267.71,-933.04C5206.97,-917.29 5129.65,-893.35 5065.5,-861 5062.69,-859.58 5059.87,-858.08 5057.05,-856.53"/>
-<polygon fill="none" stroke="#63b8ff" points="5267.14,-936.51 5277.69,-935.6 5268.87,-929.73 5267.14,-936.51"/>
+<path fill="none" stroke="#63b8ff" d="M4743.95,-881.84C4689.62,-867.16 4620.47,-845.11 4563,-816 4559.88,-814.42 4556.75,-812.74 4553.62,-811"/>
+<polygon fill="none" stroke="#63b8ff" points="4743.35,-885.3 4753.91,-884.49 4745.15,-878.53 4743.35,-885.3"/>
 </a>
 </g>
 </g>
@@ -227,17 +215,15 @@
 <g id="Node000055" class="node">
 <title>Node55</title>
 <g id="a_Node000055"><a xlink:href="classtvm_1_1OpaqueExpr.html" target="_top" xlink:title="Managed reference to OpaqueExprNode.">
-<polygon fill="white" stroke="transparent" points="5260,-823.5 5075,-823.5 5075,-748.5 5260,-748.5 5260,-823.5"/>
-<text text-anchor="start" x="5125.5" y="-811" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::OpaqueExpr</text>
-<text text-anchor="start" x="5166" y="-796" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="5079.5" y="-781" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5092.5" y="-781" font-family="Helvetica,sans-Serif" font-size="10.00">OpaqueExpr()</text>
-<text text-anchor="start" x="5079.5" y="-766" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5092.5" y="-766" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="5092.5" y="-755" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="5075.5,-806 5075.5,-806 5260.5,-806 5260.5,-806 5075.5,-806"/>
-<polygon fill="#666666" stroke="#666666" points="5075.5,-791 5075.5,-791 5260.5,-791 5260.5,-791 5075.5,-791"/>
-<polygon fill="none" stroke="#666666" points="5075,-748.5 5075,-823.5 5260,-823.5 5260,-748.5 5075,-748.5"/>
+<polygon fill="white" stroke="transparent" points="4736,-771 4572,-771 4572,-711 4736,-711 4736,-771"/>
+<text text-anchor="start" x="4611.5" y="-759" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::OpaqueExpr</text>
+<text text-anchor="start" x="4652" y="-744" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4576" y="-729" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4589" y="-729" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="4589" y="-718" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="4572,-754 4572,-754 4736,-754 4736,-754 4572,-754"/>
+<polygon fill="#666666" stroke="#666666" points="4572,-739 4572,-739 4736,-739 4736,-739 4572,-739"/>
+<polygon fill="none" stroke="#666666" points="4572,-711 4572,-771 4736,-771 4736,-711 4572,-711"/>
 </a>
 </g>
 </g>
@@ -245,8 +231,8 @@
 <g id="edge54_Node000001_Node000055" class="edge">
 <title>Node1&#45;&gt;Node55</title>
 <g id="a_edge54_Node000001_Node000055"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M5291.53,-890.26C5264.36,-867.64 5234.92,-843.13 5211.55,-823.67"/>
-<polygon fill="none" stroke="#63b8ff" points="5289.58,-893.18 5299.5,-896.89 5294.05,-887.8 5289.58,-893.18"/>
+<path fill="none" stroke="#63b8ff" d="M4770.41,-845.3C4742.08,-820.16 4710.17,-791.84 4686.93,-771.22"/>
+<polygon fill="none" stroke="#63b8ff" points="4768.11,-847.94 4777.91,-851.96 4772.76,-842.7 4768.11,-847.94"/>
 </a>
 </g>
 </g>
@@ -254,22 +240,20 @@
 <g id="Node000057" class="node">
 <title>Node57</title>
 <g id="a_Node000057"><a xlink:href="classtvm_1_1TensorRegion.html" target="_top" xlink:title="Managed reference to TensorRegionNode.">
-<polygon fill="white" stroke="transparent" points="5463,-844 5278,-844 5278,-728 5463,-728 5463,-844"/>
-<text text-anchor="start" x="5325.5" y="-832" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TensorRegion</text>
-<text text-anchor="start" x="5369" y="-817" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="5282.5" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5295.5" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00">TensorRegion()</text>
-<text text-anchor="start" x="5282.5" y="-787" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5295.5" y="-787" font-family="Helvetica,sans-Serif" font-size="10.00">TensorRegion()</text>
-<text text-anchor="start" x="5282.5" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5295.5" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="5295.5" y="-761" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="5282.5" y="-746" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5295.5" y="-746" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="5295.5" y="-735" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="5278.5,-827 5278.5,-827 5463.5,-827 5463.5,-827 5278.5,-827"/>
-<polygon fill="#666666" stroke="#666666" points="5278.5,-812 5278.5,-812 5463.5,-812 5463.5,-812 5278.5,-812"/>
-<polygon fill="none" stroke="#666666" points="5278,-728 5278,-844 5463,-844 5463,-728 5278,-728"/>
+<polygon fill="white" stroke="transparent" points="4918,-791.5 4754,-791.5 4754,-690.5 4918,-690.5 4918,-791.5"/>
+<text text-anchor="start" x="4790.5" y="-779" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TensorRegion</text>
+<text text-anchor="start" x="4834" y="-764" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4758" y="-749" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4771" y="-749" font-family="Helvetica,sans-Serif" font-size="10.00">TensorRegion()</text>
+<text text-anchor="start" x="4758" y="-734" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4771" y="-734" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="4771" y="-723" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="4758" y="-708" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4771" y="-708" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="4771" y="-697" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="4754,-774 4754,-774 4918,-774 4918,-774 4754,-774"/>
+<polygon fill="#666666" stroke="#666666" points="4754,-759 4754,-759 4918,-759 4918,-759 4754,-759"/>
+<polygon fill="none" stroke="#666666" points="4754,-690.5 4754,-791.5 4918,-791.5 4918,-690.5 4754,-690.5"/>
 </a>
 </g>
 </g>
@@ -277,8 +261,8 @@
 <g id="edge56_Node000001_Node000057" class="edge">
 <title>Node1&#45;&gt;Node57</title>
 <g id="a_edge56_Node000001_Node000057"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M5370.5,-886.7C5370.5,-872.53 5370.5,-857.77 5370.5,-844.08"/>
-<polygon fill="none" stroke="#63b8ff" points="5367,-886.89 5370.5,-896.89 5374,-886.89 5367,-886.89"/>
+<path fill="none" stroke="#63b8ff" d="M4836,-841.81C4836,-825.23 4836,-807.51 4836,-791.68"/>
+<polygon fill="none" stroke="#63b8ff" points="4832.5,-841.96 4836,-851.96 4839.5,-841.96 4832.5,-841.96"/>
 </a>
 </g>
 </g>
@@ -286,22 +270,20 @@
 <g id="Node000058" class="node">
 <title>Node58</title>
 <g id="a_Node000058"><a xlink:href="classtvm_1_1Tuple.html" target="_top" xlink:title="Managed reference to TupleNode.">
-<polygon fill="white" stroke="transparent" points="5666,-844 5481,-844 5481,-728 5666,-728 5666,-844"/>
-<text text-anchor="start" x="5548" y="-832" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Tuple</text>
-<text text-anchor="start" x="5572" y="-817" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="5485.5" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5498.5" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00">Tuple()</text>
-<text text-anchor="start" x="5485.5" y="-787" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5498.5" y="-787" font-family="Helvetica,sans-Serif" font-size="10.00">Tuple()</text>
-<text text-anchor="start" x="5485.5" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5498.5" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="5498.5" y="-761" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="5485.5" y="-746" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5498.5" y="-746" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="5498.5" y="-735" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="5481.5,-827 5481.5,-827 5666.5,-827 5666.5,-827 5481.5,-827"/>
-<polygon fill="#666666" stroke="#666666" points="5481.5,-812 5481.5,-812 5666.5,-812 5666.5,-812 5481.5,-812"/>
-<polygon fill="none" stroke="#666666" points="5481,-728 5481,-844 5666,-844 5666,-728 5481,-728"/>
+<polygon fill="white" stroke="transparent" points="5100,-791.5 4936,-791.5 4936,-690.5 5100,-690.5 5100,-791.5"/>
+<text text-anchor="start" x="4992" y="-779" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Tuple</text>
+<text text-anchor="start" x="5016" y="-764" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4940" y="-749" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4953" y="-749" font-family="Helvetica,sans-Serif" font-size="10.00">Tuple()</text>
+<text text-anchor="start" x="4940" y="-734" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4953" y="-734" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="4953" y="-723" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="4940" y="-708" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4953" y="-708" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="4953" y="-697" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="4936,-774 4936,-774 5100,-774 5100,-774 4936,-774"/>
+<polygon fill="#666666" stroke="#666666" points="4936,-759 4936,-759 5100,-759 5100,-759 4936,-759"/>
+<polygon fill="none" stroke="#666666" points="4936,-690.5 4936,-791.5 5100,-791.5 5100,-690.5 4936,-690.5"/>
 </a>
 </g>
 </g>
@@ -309,8 +291,8 @@
 <g id="edge57_Node000001_Node000058" class="edge">
 <title>Node1&#45;&gt;Node58</title>
 <g id="a_edge57_Node000001_Node000058"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M5449.3,-890.4C5467.65,-875.12 5487.06,-858.96 5504.93,-844.08"/>
-<polygon fill="none" stroke="#63b8ff" points="5446.95,-887.8 5441.5,-896.89 5451.42,-893.18 5446.95,-887.8"/>
+<path fill="none" stroke="#63b8ff" d="M4901.58,-845.31C4921.37,-827.74 4942.91,-808.63 4962.02,-791.68"/>
+<polygon fill="none" stroke="#63b8ff" points="4899.24,-842.7 4894.09,-851.96 4903.89,-847.94 4899.24,-842.7"/>
 </a>
 </g>
 </g>
@@ -318,22 +300,20 @@
 <g id="Node000059" class="node">
 <title>Node59</title>
 <g id="a_Node000059"><a xlink:href="classtvm_1_1TupleGetItem.html" target="_top" xlink:title="Managed reference to TupleGetItemNode.">
-<polygon fill="white" stroke="transparent" points="5869,-844 5684,-844 5684,-728 5869,-728 5869,-844"/>
-<text text-anchor="start" x="5731.5" y="-832" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TupleGetItem</text>
-<text text-anchor="start" x="5775" y="-817" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="5688.5" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5701.5" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00">TupleGetItem()</text>
-<text text-anchor="start" x="5688.5" y="-787" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5701.5" y="-787" font-family="Helvetica,sans-Serif" font-size="10.00">TupleGetItem()</text>
-<text text-anchor="start" x="5688.5" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5701.5" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="5701.5" y="-761" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="5688.5" y="-746" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5701.5" y="-746" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="5701.5" y="-735" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="5684.5,-827 5684.5,-827 5869.5,-827 5869.5,-827 5684.5,-827"/>
-<polygon fill="#666666" stroke="#666666" points="5684.5,-812 5684.5,-812 5869.5,-812 5869.5,-812 5684.5,-812"/>
-<polygon fill="none" stroke="#666666" points="5684,-728 5684,-844 5869,-844 5869,-728 5684,-728"/>
+<polygon fill="white" stroke="transparent" points="5282,-791.5 5118,-791.5 5118,-690.5 5282,-690.5 5282,-791.5"/>
+<text text-anchor="start" x="5154.5" y="-779" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TupleGetItem</text>
+<text text-anchor="start" x="5198" y="-764" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="5122" y="-749" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5135" y="-749" font-family="Helvetica,sans-Serif" font-size="10.00">TupleGetItem()</text>
+<text text-anchor="start" x="5122" y="-734" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5135" y="-734" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="5135" y="-723" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="5122" y="-708" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5135" y="-708" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="5135" y="-697" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="5118,-774 5118,-774 5282,-774 5282,-774 5118,-774"/>
+<polygon fill="#666666" stroke="#666666" points="5118,-759 5118,-759 5282,-759 5282,-759 5118,-759"/>
+<polygon fill="none" stroke="#666666" points="5118,-690.5 5118,-791.5 5282,-791.5 5282,-690.5 5118,-690.5"/>
 </a>
 </g>
 </g>
@@ -341,8 +321,8 @@
 <g id="edge58_Node000001_Node000059" class="edge">
 <title>Node1&#45;&gt;Node59</title>
 <g id="a_edge58_Node000001_Node000059"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M5473.23,-932.8C5533.7,-916.99 5610.6,-893.08 5674.5,-861 5684.28,-856.09 5694.12,-850.28 5703.64,-844.1"/>
-<polygon fill="none" stroke="#63b8ff" points="5472.1,-929.47 5463.29,-935.36 5473.84,-936.25 5472.1,-929.47"/>
+<path fill="none" stroke="#63b8ff" d="M4928.06,-883.14C4982.69,-868.87 5052.15,-846.8 5109,-816 5121.53,-809.21 5134.02,-800.6 5145.54,-791.68"/>
+<polygon fill="none" stroke="#63b8ff" points="4926.86,-879.84 4918.04,-885.72 4928.6,-886.62 4926.86,-879.84"/>
 </a>
 </g>
 </g>
@@ -350,23 +330,21 @@
 <g id="Node000060" class="node">
 <title>Node60</title>
 <g id="a_Node000060"><a xlink:href="classtvm_1_1TypedExpr.html" target="_top" xlink:title="Typed reference/view over an expression whose result type is a specific Type subtype.">
-<polygon fill="white" stroke="transparent" points="6072,-842 5887,-842 5887,-730 6072,-730 6072,-842"/>
-<text text-anchor="start" x="5913.5" y="-830" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypedExpr&lt; Expected</text>
-<text text-anchor="start" x="5963" y="-819" font-family="Helvetica,sans-Serif" font-size="10.00">Type &gt;</text>
-<text text-anchor="start" x="5891.5" y="-804" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5904.5" y="-804" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="5904.5" y="-793" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="5891.5" y="-778" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5904.5" y="-778" font-family="Helvetica,sans-Serif" font-size="10.00">ty()</text>
-<text text-anchor="start" x="5891.5" y="-763" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5904.5" y="-763" font-family="Helvetica,sans-Serif" font-size="10.00">TypedExpr()</text>
-<text text-anchor="start" x="5891.5" y="-748" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5904.5" y="-748" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="5904.5" y="-737" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="5887.5,-814 5887.5,-814 6072.5,-814 6072.5,-814 5887.5,-814"/>
-<polygon fill="#666666" stroke="#666666" points="5887.5,-788 5887.5,-788 5902.5,-788 5902.5,-788 5887.5,-788"/>
-<polygon fill="#666666" stroke="#666666" points="5902.5,-788 5902.5,-788 6072.5,-788 6072.5,-788 5902.5,-788"/>
-<polygon fill="none" stroke="#666666" points="5887,-730 5887,-842 6072,-842 6072,-730 5887,-730"/>
+<polygon fill="white" stroke="transparent" points="5464,-789.5 5300,-789.5 5300,-692.5 5464,-692.5 5464,-789.5"/>
+<text text-anchor="start" x="5315.5" y="-777" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypedExpr&lt; Expected</text>
+<text text-anchor="start" x="5365" y="-766" font-family="Helvetica,sans-Serif" font-size="10.00">Type &gt;</text>
+<text text-anchor="start" x="5304" y="-751" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5317" y="-751" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="5317" y="-740" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="5304" y="-725" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5317" y="-725" font-family="Helvetica,sans-Serif" font-size="10.00">ty()</text>
+<text text-anchor="start" x="5304" y="-710" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5317" y="-710" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="5317" y="-699" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="5300,-761 5300,-761 5464,-761 5464,-761 5300,-761"/>
+<polygon fill="#666666" stroke="#666666" points="5300,-735 5300,-735 5315,-735 5315,-735 5300,-735"/>
+<polygon fill="#666666" stroke="#666666" points="5315,-735 5315,-735 5464,-735 5464,-735 5315,-735"/>
+<polygon fill="none" stroke="#666666" points="5300,-692.5 5300,-789.5 5464,-789.5 5464,-692.5 5300,-692.5"/>
 </a>
 </g>
 </g>
@@ -374,8 +352,8 @@
 <g id="edge59_Node000001_Node000060" class="edge">
 <title>Node1&#45;&gt;Node60</title>
 <g id="a_edge59_Node000001_Node000060"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M5473.32,-950.02C5578.57,-940.89 5745.02,-918.02 5877.5,-861 5889.26,-855.94 5900.97,-849.33 5912.04,-842.14"/>
-<polygon fill="none" stroke="#63b8ff" points="5473,-946.53 5463.33,-950.86 5473.59,-953.51 5473,-946.53"/>
+<path fill="none" stroke="#63b8ff" d="M4928.33,-898.96C5023.24,-891.33 5173.36,-870.86 5291,-816 5305.39,-809.29 5319.47,-799.8 5332.07,-789.84"/>
+<polygon fill="none" stroke="#63b8ff" points="4927.88,-895.48 4918.18,-899.74 4928.42,-902.46 4927.88,-895.48"/>
 </a>
 </g>
 </g>
@@ -383,27 +361,25 @@
 <g id="Node000061" class="node">
 <title>Node61</title>
 <g id="a_Node000061"><a xlink:href="classtvm_1_1Var.html" target="_top" xlink:title="Managed reference to VarNode.">
-<polygon fill="white" stroke="transparent" points="6275,-861 6090,-861 6090,-711 6275,-711 6275,-861"/>
-<text text-anchor="start" x="6162" y="-849" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Var</text>
-<text text-anchor="start" x="6181" y="-834" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="6094.5" y="-819" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6107.5" y="-819" font-family="Helvetica,sans-Serif" font-size="10.00">Var()</text>
-<text text-anchor="start" x="6094.5" y="-804" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6107.5" y="-804" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithName()</text>
-<text text-anchor="start" x="6094.5" y="-789" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6107.5" y="-789" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithSuffix()</text>
-<text text-anchor="start" x="6094.5" y="-774" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6107.5" y="-774" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithDType()</text>
-<text text-anchor="start" x="6094.5" y="-759" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6107.5" y="-759" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithType()</text>
-<text text-anchor="start" x="6094.5" y="-744" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6107.5" y="-744" font-family="Helvetica,sans-Serif" font-size="10.00">Var()</text>
-<text text-anchor="start" x="6094.5" y="-729" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6107.5" y="-729" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="6107.5" y="-718" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="6090.5,-844 6090.5,-844 6275.5,-844 6275.5,-844 6090.5,-844"/>
-<polygon fill="#666666" stroke="#666666" points="6090.5,-829 6090.5,-829 6275.5,-829 6275.5,-829 6090.5,-829"/>
-<polygon fill="none" stroke="#666666" points="6090,-711 6090,-861 6275,-861 6275,-711 6090,-711"/>
+<polygon fill="white" stroke="transparent" points="5646,-808.5 5482,-808.5 5482,-673.5 5646,-673.5 5646,-808.5"/>
+<text text-anchor="start" x="5543" y="-796" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Var</text>
+<text text-anchor="start" x="5562" y="-781" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="5486" y="-766" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5499" y="-766" font-family="Helvetica,sans-Serif" font-size="10.00">Var()</text>
+<text text-anchor="start" x="5486" y="-751" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5499" y="-751" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithName()</text>
+<text text-anchor="start" x="5486" y="-736" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5499" y="-736" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithSuffix()</text>
+<text text-anchor="start" x="5486" y="-721" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5499" y="-721" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithDType()</text>
+<text text-anchor="start" x="5486" y="-706" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5499" y="-706" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithType()</text>
+<text text-anchor="start" x="5486" y="-691" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5499" y="-691" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="5499" y="-680" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="5482,-791 5482,-791 5646,-791 5646,-791 5482,-791"/>
+<polygon fill="#666666" stroke="#666666" points="5482,-776 5482,-776 5646,-776 5646,-776 5482,-776"/>
+<polygon fill="none" stroke="#666666" points="5482,-673.5 5482,-808.5 5646,-808.5 5646,-673.5 5482,-673.5"/>
 </a>
 </g>
 </g>
@@ -411,8 +387,8 @@
 <g id="edge60_Node000001_Node000061" class="edge">
 <title>Node1&#45;&gt;Node61</title>
 <g id="a_edge60_Node000001_Node000061"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M5473.42,-948.46C5642.83,-935.02 5972.43,-904.21 6080.5,-861 6083.65,-859.74 6086.79,-858.36 6089.91,-856.89"/>
-<polygon fill="none" stroke="#63b8ff" points="5472.94,-944.99 5463.25,-949.26 5473.49,-951.97 5472.94,-944.99"/>
+<path fill="none" stroke="#63b8ff" d="M4928.53,-896.95C5080.87,-885.15 5377.16,-857.61 5473,-816 5477.95,-813.85 5482.85,-811.35 5487.66,-808.6"/>
+<polygon fill="none" stroke="#63b8ff" points="4927.97,-893.49 4918.26,-897.74 4928.5,-900.47 4927.97,-893.49"/>
 </a>
 </g>
 </g>
@@ -420,22 +396,20 @@
 <g id="Node000064" class="node">
 <title>Node64</title>
 <g id="a_Node000064"><a xlink:href="classtvm_1_1relax_1_1If.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="6478,-844 6293,-844 6293,-728 6478,-728 6478,-844"/>
-<text text-anchor="start" x="6354" y="-832" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::If</text>
-<text text-anchor="start" x="6384" y="-817" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="6297.5" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6310.5" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00">If()</text>
-<text text-anchor="start" x="6297.5" y="-787" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6310.5" y="-787" font-family="Helvetica,sans-Serif" font-size="10.00">If()</text>
-<text text-anchor="start" x="6297.5" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6310.5" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="6310.5" y="-761" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="6297.5" y="-746" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6310.5" y="-746" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="6310.5" y="-735" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="6293.5,-827 6293.5,-827 6478.5,-827 6478.5,-827 6293.5,-827"/>
-<polygon fill="#666666" stroke="#666666" points="6293.5,-812 6293.5,-812 6478.5,-812 6478.5,-812 6293.5,-812"/>
-<polygon fill="none" stroke="#666666" points="6293,-728 6293,-844 6478,-844 6478,-728 6293,-728"/>
+<polygon fill="white" stroke="transparent" points="5828,-791.5 5664,-791.5 5664,-690.5 5828,-690.5 5828,-791.5"/>
+<text text-anchor="start" x="5714" y="-779" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::If</text>
+<text text-anchor="start" x="5744" y="-764" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="5668" y="-749" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5681" y="-749" font-family="Helvetica,sans-Serif" font-size="10.00">If()</text>
+<text text-anchor="start" x="5668" y="-734" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5681" y="-734" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="5681" y="-723" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="5668" y="-708" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5681" y="-708" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="5681" y="-697" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="5664,-774 5664,-774 5828,-774 5828,-774 5664,-774"/>
+<polygon fill="#666666" stroke="#666666" points="5664,-759 5664,-759 5828,-759 5828,-759 5664,-759"/>
+<polygon fill="none" stroke="#666666" points="5664,-690.5 5664,-791.5 5828,-791.5 5828,-690.5 5664,-690.5"/>
 </a>
 </g>
 </g>
@@ -443,8 +417,8 @@
 <g id="edge63_Node000001_Node000064" class="edge">
 <title>Node1&#45;&gt;Node64</title>
 <g id="a_edge63_Node000001_Node000064"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M5473.6,-951.99C5680.22,-942.85 6137.69,-916.83 6283.5,-861 6294.84,-856.66 6306.06,-850.72 6316.67,-844.08"/>
-<polygon fill="none" stroke="#63b8ff" points="5473.19,-948.5 5463.35,-952.43 5473.49,-955.49 5473.19,-948.5"/>
+<path fill="none" stroke="#63b8ff" d="M4928.16,-900.23C5113.68,-892.58 5525.54,-869.91 5655,-816 5669.1,-810.13 5682.75,-801.35 5695,-791.86"/>
+<polygon fill="none" stroke="#63b8ff" points="4928,-896.73 4918.15,-900.64 4928.28,-903.73 4928,-896.73"/>
 </a>
 </g>
 </g>
@@ -452,24 +426,22 @@
 <g id="Node000065" class="node">
 <title>Node65</title>
 <g id="a_Node000065"><a xlink:href="classtvm_1_1relax_1_1SeqExpr.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="6681,-851.5 6496,-851.5 6496,-720.5 6681,-720.5 6681,-851.5"/>
-<text text-anchor="start" x="6540.5" y="-839" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::SeqExpr</text>
-<text text-anchor="start" x="6587" y="-824" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="6500.5" y="-809" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6513.5" y="-809" font-family="Helvetica,sans-Serif" font-size="10.00">SeqExpr()</text>
-<text text-anchor="start" x="6500.5" y="-794" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6513.5" y="-794" font-family="Helvetica,sans-Serif" font-size="10.00">SeqExpr()</text>
-<text text-anchor="start" x="6500.5" y="-779" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6513.5" y="-779" font-family="Helvetica,sans-Serif" font-size="10.00">SeqExpr()</text>
-<text text-anchor="start" x="6500.5" y="-764" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6513.5" y="-764" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="6513.5" y="-753" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="6500.5" y="-738" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6513.5" y="-738" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="6513.5" y="-727" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="6496.5,-834 6496.5,-834 6681.5,-834 6681.5,-834 6496.5,-834"/>
-<polygon fill="#666666" stroke="#666666" points="6496.5,-819 6496.5,-819 6681.5,-819 6681.5,-819 6496.5,-819"/>
-<polygon fill="none" stroke="#666666" points="6496,-720.5 6496,-851.5 6681,-851.5 6681,-720.5 6496,-720.5"/>
+<polygon fill="white" stroke="transparent" points="6010,-799 5846,-799 5846,-683 6010,-683 6010,-799"/>
+<text text-anchor="start" x="5879.5" y="-787" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::SeqExpr</text>
+<text text-anchor="start" x="5926" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="5850" y="-757" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5863" y="-757" font-family="Helvetica,sans-Serif" font-size="10.00">SeqExpr()</text>
+<text text-anchor="start" x="5850" y="-742" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5863" y="-742" font-family="Helvetica,sans-Serif" font-size="10.00">SeqExpr()</text>
+<text text-anchor="start" x="5850" y="-727" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5863" y="-727" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="5863" y="-716" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="5850" y="-701" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5863" y="-701" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="5863" y="-690" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="5846,-782 5846,-782 6010,-782 6010,-782 5846,-782"/>
+<polygon fill="#666666" stroke="#666666" points="5846,-767 5846,-767 6010,-767 6010,-767 5846,-767"/>
+<polygon fill="none" stroke="#666666" points="5846,-683 5846,-799 6010,-799 6010,-683 5846,-683"/>
 </a>
 </g>
 </g>
@@ -477,8 +449,8 @@
 <g id="edge64_Node000001_Node000065" class="edge">
 <title>Node1&#45;&gt;Node65</title>
 <g id="a_edge64_Node000001_Node000065"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M5473.17,-954.26C5712.72,-949.09 6302.24,-929.57 6486.5,-861 6493.47,-858.41 6500.39,-855.2 6507.15,-851.58"/>
-<polygon fill="none" stroke="#63b8ff" points="5472.99,-950.77 5463.06,-954.48 5473.13,-957.76 5472.99,-950.77"/>
+<path fill="none" stroke="#63b8ff" d="M4928.11,-902.31C5143.35,-898.44 5673.47,-882.26 5837,-816 5847.57,-811.72 5857.87,-805.77 5867.51,-799.09"/>
+<polygon fill="none" stroke="#63b8ff" points="4928.03,-898.81 4918.1,-902.49 4928.16,-905.81 4928.03,-898.81"/>
 </a>
 </g>
 </g>
@@ -486,22 +458,20 @@
 <g id="Node000066" class="node">
 <title>Node66</title>
 <g id="a_Node000066"><a xlink:href="classtvm_1_1relax_1_1ShapeExpr.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="6884,-844 6699,-844 6699,-728 6884,-728 6884,-844"/>
-<text text-anchor="start" x="6737.5" y="-832" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ShapeExpr</text>
-<text text-anchor="start" x="6790" y="-817" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="6703.5" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6716.5" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00">ShapeExpr()</text>
-<text text-anchor="start" x="6703.5" y="-787" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6716.5" y="-787" font-family="Helvetica,sans-Serif" font-size="10.00">ShapeExpr()</text>
-<text text-anchor="start" x="6703.5" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6716.5" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="6716.5" y="-761" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="6703.5" y="-746" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="6716.5" y="-746" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="6716.5" y="-735" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="6699.5,-827 6699.5,-827 6884.5,-827 6884.5,-827 6699.5,-827"/>
-<polygon fill="#666666" stroke="#666666" points="6699.5,-812 6699.5,-812 6884.5,-812 6884.5,-812 6699.5,-812"/>
-<polygon fill="none" stroke="#666666" points="6699,-728 6699,-844 6884,-844 6884,-728 6699,-728"/>
+<polygon fill="white" stroke="transparent" points="6192,-791.5 6028,-791.5 6028,-690.5 6192,-690.5 6192,-791.5"/>
+<text text-anchor="start" x="6055.5" y="-779" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ShapeExpr</text>
+<text text-anchor="start" x="6108" y="-764" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="6032" y="-749" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="6045" y="-749" font-family="Helvetica,sans-Serif" font-size="10.00">ShapeExpr()</text>
+<text text-anchor="start" x="6032" y="-734" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="6045" y="-734" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="6045" y="-723" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="6032" y="-708" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="6045" y="-708" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="6045" y="-697" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="6028,-774 6028,-774 6192,-774 6192,-774 6028,-774"/>
+<polygon fill="#666666" stroke="#666666" points="6028,-759 6028,-759 6192,-759 6192,-759 6028,-759"/>
+<polygon fill="none" stroke="#666666" points="6028,-690.5 6028,-791.5 6192,-791.5 6192,-690.5 6028,-690.5"/>
 </a>
 </g>
 </g>
@@ -509,8 +479,8 @@
 <g id="edge65_Node000001_Node000066" class="edge">
 <title>Node1&#45;&gt;Node66</title>
 <g id="a_edge65_Node000001_Node000066"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M5473.54,-955.83C5743.63,-954.25 6466.57,-942.32 6689.5,-861 6701.11,-856.76 6712.57,-850.79 6723.37,-844.06"/>
-<polygon fill="none" stroke="#63b8ff" points="5473.33,-952.34 5463.35,-955.89 5473.37,-959.34 5473.33,-952.34"/>
+<path fill="none" stroke="#63b8ff" d="M4928.43,-903.76C5171.08,-903.33 5821.13,-894.64 6019,-816 6033.38,-810.28 6047.24,-801.44 6059.63,-791.83"/>
+<polygon fill="none" stroke="#63b8ff" points="4928.23,-900.26 4918.23,-903.77 4928.24,-907.26 4928.23,-900.26"/>
 </a>
 </g>
 </g>
@@ -518,13 +488,13 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="5407.5,-1102 5333.5,-1102 5333.5,-1053 5407.5,-1053 5407.5,-1102"/>
-<text text-anchor="start" x="5338.5" y="-1089.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="5368.5" y="-1074.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="5368.5" y="-1059.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="5333.5,-1084.5 5333.5,-1084.5 5407.5,-1084.5 5407.5,-1084.5 5333.5,-1084.5"/>
-<polygon fill="#666666" stroke="#666666" points="5333.5,-1069.5 5333.5,-1069.5 5407.5,-1069.5 5407.5,-1069.5 5333.5,-1069.5"/>
-<polygon fill="none" stroke="#666666" points="5333.5,-1053 5333.5,-1102 5407.5,-1102 5407.5,-1053 5333.5,-1053"/>
+<polygon fill="white" stroke="transparent" points="4873,-1042 4799,-1042 4799,-993 4873,-993 4873,-1042"/>
+<text text-anchor="start" x="4804" y="-1029.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="4834" y="-1014.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4834" y="-999.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="4799,-1024.5 4799,-1024.5 4873,-1024.5 4873,-1024.5 4799,-1024.5"/>
+<polygon fill="#666666" stroke="#666666" points="4799,-1009.5 4799,-1009.5 4873,-1009.5 4873,-1009.5 4799,-1009.5"/>
+<polygon fill="none" stroke="#666666" points="4799,-993 4799,-1042 4873,-1042 4873,-993 4799,-993"/>
 </a>
 </g>
 </g>
@@ -532,8 +502,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M5370.5,-1042.59C5370.5,-1034.71 5370.5,-1026.09 5370.5,-1017.47"/>
-<polygon fill="none" stroke="#63b8ff" points="5367,-1042.8 5370.5,-1052.8 5374,-1042.8 5367,-1042.8"/>
+<path fill="none" stroke="#63b8ff" d="M4836,-982.85C4836,-974.79 4836,-966 4836,-957.32"/>
+<polygon fill="none" stroke="#63b8ff" points="4832.5,-982.96 4836,-992.96 4839.5,-982.96 4832.5,-982.96"/>
 </a>
 </g>
 </g>
@@ -541,26 +511,24 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1PrimExpr.html" target="_top" xlink:title="Typed reference/view over any Expr whose ExprNode::ty is PrimType.">
-<polygon fill="white" stroke="transparent" points="3839,-620.5 3654,-620.5 3654,-489.5 3839,-489.5 3839,-620.5"/>
-<text text-anchor="start" x="3712" y="-608" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::PrimExpr</text>
-<text text-anchor="start" x="3658.5" y="-593" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3671.5" y="-593" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="3671.5" y="-582" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="3658.5" y="-567" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3671.5" y="-567" font-family="Helvetica,sans-Serif" font-size="10.00">PrimExpr()</text>
-<text text-anchor="start" x="3658.5" y="-552" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3671.5" y="-552" font-family="Helvetica,sans-Serif" font-size="10.00">PrimExpr()</text>
-<text text-anchor="start" x="3658.5" y="-537" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3671.5" y="-537" font-family="Helvetica,sans-Serif" font-size="10.00">PrimExpr()</text>
-<text text-anchor="start" x="3658.5" y="-522" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3671.5" y="-522" font-family="Helvetica,sans-Serif" font-size="10.00">PrimExpr()</text>
-<text text-anchor="start" x="3658.5" y="-507" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3671.5" y="-507" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="3671.5" y="-496" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="3654.5,-603 3654.5,-603 3839.5,-603 3839.5,-603 3654.5,-603"/>
-<polygon fill="#666666" stroke="#666666" points="3654.5,-577 3654.5,-577 3669.5,-577 3669.5,-577 3654.5,-577"/>
-<polygon fill="#666666" stroke="#666666" points="3669.5,-577 3669.5,-577 3839.5,-577 3839.5,-577 3669.5,-577"/>
-<polygon fill="none" stroke="#666666" points="3654,-489.5 3654,-620.5 3839,-620.5 3839,-489.5 3654,-489.5"/>
+<polygon fill="white" stroke="transparent" points="3440,-575.5 3276,-575.5 3276,-459.5 3440,-459.5 3440,-575.5"/>
+<text text-anchor="start" x="3323" y="-563.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::PrimExpr</text>
+<text text-anchor="start" x="3280" y="-548.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3293" y="-548.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="3293" y="-537.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="3280" y="-522.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3293" y="-522.5" font-family="Helvetica,sans-Serif" font-size="10.00">PrimExpr()</text>
+<text text-anchor="start" x="3280" y="-507.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3293" y="-507.5" font-family="Helvetica,sans-Serif" font-size="10.00">PrimExpr()</text>
+<text text-anchor="start" x="3280" y="-492.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3293" y="-492.5" font-family="Helvetica,sans-Serif" font-size="10.00">PrimExpr()</text>
+<text text-anchor="start" x="3280" y="-477.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3293" y="-477.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="3293" y="-466.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="3276,-558.5 3276,-558.5 3440,-558.5 3440,-558.5 3276,-558.5"/>
+<polygon fill="#666666" stroke="#666666" points="3276,-532.5 3276,-532.5 3291,-532.5 3291,-532.5 3276,-532.5"/>
+<polygon fill="#666666" stroke="#666666" points="3291,-532.5 3291,-532.5 3440,-532.5 3440,-532.5 3291,-532.5"/>
+<polygon fill="none" stroke="#666666" points="3276,-459.5 3276,-575.5 3440,-575.5 3440,-459.5 3276,-459.5"/>
 </a>
 </g>
 </g>
@@ -568,8 +536,8 @@
 <g id="edge3_Node000003_Node000004" class="edge">
 <title>Node3&#45;&gt;Node4</title>
 <g id="a_edge3_Node000003_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3822.23,-726.02C3807.89,-693.82 3790.1,-653.89 3775.37,-620.83"/>
-<polygon fill="none" stroke="#63b8ff" points="3819.1,-727.6 3826.37,-735.31 3825.5,-724.75 3819.1,-727.6"/>
+<path fill="none" stroke="#63b8ff" d="M3427.69,-688.14C3413.83,-654.39 3395.73,-610.34 3381.46,-575.59"/>
+<polygon fill="none" stroke="#63b8ff" points="3424.63,-689.9 3431.67,-697.82 3431.11,-687.24 3424.63,-689.9"/>
 </a>
 </g>
 </g>
@@ -577,25 +545,23 @@
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:href="classtvm_1_1FloatImm.html" target="_top" xlink:title="Managed reference class to FloatImmNode.">
-<polygon fill="white" stroke="transparent" points="185,-354 0,-354 0,-227 185,-227 185,-354"/>
-<text text-anchor="start" x="56.5" y="-341.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::FloatImm</text>
-<text text-anchor="start" x="4.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="17.5" y="-315.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="4.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">FloatImm()</text>
-<text text-anchor="start" x="4.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">FloatImm()</text>
-<text text-anchor="start" x="4.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="4.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="17.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-336.5 0.5,-336.5 185.5,-336.5 185.5,-336.5 0.5,-336.5"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-310.5 0.5,-310.5 15.5,-310.5 15.5,-310.5 0.5,-310.5"/>
-<polygon fill="#666666" stroke="#666666" points="15.5,-310.5 15.5,-310.5 185.5,-310.5 185.5,-310.5 15.5,-310.5"/>
-<polygon fill="none" stroke="#666666" points="0,-227 0,-354 185,-354 185,-227 0,-227"/>
+<polygon fill="white" stroke="transparent" points="164,-324 0,-324 0,-212 164,-212 164,-324"/>
+<text text-anchor="start" x="45.5" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::FloatImm</text>
+<text text-anchor="start" x="4" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="17" y="-286" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="4" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">FloatImm()</text>
+<text text-anchor="start" x="4" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="17" y="-245" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="4" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="17" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-307 0,-307 164,-307 164,-307 0,-307"/>
+<polygon fill="#666666" stroke="#666666" points="0,-281 0,-281 15,-281 15,-281 0,-281"/>
+<polygon fill="#666666" stroke="#666666" points="15,-281 15,-281 164,-281 164,-281 15,-281"/>
+<polygon fill="none" stroke="#666666" points="0,-212 0,-324 164,-324 164,-212 0,-212"/>
 </a>
 </g>
 </g>
@@ -603,8 +569,8 @@
 <g id="edge4_Node000004_Node000005" class="edge">
 <title>Node4&#45;&gt;Node5</title>
 <g id="a_edge4_Node000004_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3643.7,-554.11C3093.94,-554.09 514.14,-546.08 193.5,-399 171.62,-388.96 152.19,-371.8 136.36,-354.1"/>
-<polygon fill="none" stroke="#63b8ff" points="3643.98,-557.61 3653.98,-554.11 3643.98,-550.61 3643.98,-557.61"/>
+<path fill="none" stroke="#63b8ff" d="M3265.52,-516.42C2771.87,-515.41 459.17,-503.51 173,-369 151.76,-359.01 133.22,-341.57 118.53,-324.02"/>
+<polygon fill="none" stroke="#63b8ff" points="3265.79,-519.92 3275.8,-516.44 3265.8,-512.92 3265.79,-519.92"/>
 </a>
 </g>
 </g>
@@ -612,18 +578,18 @@
 <g id="Node000006" class="node">
 <title>Node6</title>
 <g id="a_Node000006"><a xlink:href="classtvm_1_1IntExpr.html" target="_top" xlink:title="View over a scalar signed or unsigned integer expression of any bit width.">
-<polygon fill="white" stroke="transparent" points="388,-326 203,-326 203,-255 388,-255 388,-326"/>
-<text text-anchor="start" x="265.5" y="-313.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::IntExpr</text>
-<text text-anchor="start" x="207.5" y="-298.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-298.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="220.5" y="-287.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="207.5" y="-272.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="220.5" y="-272.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="220.5" y="-261.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="203.5,-308.5 203.5,-308.5 388.5,-308.5 388.5,-308.5 203.5,-308.5"/>
-<polygon fill="#666666" stroke="#666666" points="203.5,-282.5 203.5,-282.5 218.5,-282.5 218.5,-282.5 203.5,-282.5"/>
-<polygon fill="#666666" stroke="#666666" points="218.5,-282.5 218.5,-282.5 388.5,-282.5 388.5,-282.5 218.5,-282.5"/>
-<polygon fill="none" stroke="#666666" points="203,-255 203,-326 388,-326 388,-255 203,-255"/>
+<polygon fill="white" stroke="transparent" points="346,-303.5 182,-303.5 182,-232.5 346,-232.5 346,-303.5"/>
+<text text-anchor="start" x="233.5" y="-291" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::IntExpr</text>
+<text text-anchor="start" x="186" y="-276" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="199" y="-276" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="199" y="-265" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="186" y="-250" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="199" y="-250" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="199" y="-239" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="182,-286 182,-286 346,-286 346,-286 182,-286"/>
+<polygon fill="#666666" stroke="#666666" points="182,-260 182,-260 197,-260 197,-260 182,-260"/>
+<polygon fill="#666666" stroke="#666666" points="197,-260 197,-260 346,-260 346,-260 197,-260"/>
+<polygon fill="none" stroke="#666666" points="182,-232.5 182,-303.5 346,-303.5 346,-232.5 182,-232.5"/>
 </a>
 </g>
 </g>
@@ -631,8 +597,8 @@
 <g id="edge5_Node000004_Node000006" class="edge">
 <title>Node4&#45;&gt;Node6</title>
 <g id="a_edge5_Node000004_Node000006"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3643.61,-553.82C3112.84,-552.26 697.53,-537.57 396.5,-399 362.89,-383.53 335.04,-351.27 317.16,-326.11"/>
-<polygon fill="none" stroke="#63b8ff" points="3643.91,-557.32 3653.92,-553.85 3643.93,-550.32 3643.91,-557.32"/>
+<path fill="none" stroke="#63b8ff" d="M3265.45,-516.14C2788.89,-513.71 623.66,-495.74 355,-369 325.49,-355.08 301.2,-326.79 285.16,-303.85"/>
+<polygon fill="none" stroke="#63b8ff" points="3265.7,-519.64 3275.72,-516.19 3265.74,-512.64 3265.7,-519.64"/>
 </a>
 </g>
 </g>
@@ -640,37 +606,35 @@
 <g id="Node000007" class="node">
 <title>Node7</title>
 <g id="a_Node000007"><a xlink:href="classtvm_1_1IntImm.html" target="_top" xlink:title="Managed reference class to IntImmNode.">
-<polygon fill="white" stroke="transparent" points="591,-399 406,-399 406,-182 591,-182 591,-399"/>
-<text text-anchor="start" x="468.5" y="-386.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::IntImm</text>
-<text text-anchor="start" x="410.5" y="-371.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="423.5" y="-371.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="423.5" y="-360.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="410.5" y="-345.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="423.5" y="-345.5" font-family="Helvetica,sans-Serif" font-size="10.00">IntImm()</text>
-<text text-anchor="start" x="410.5" y="-330.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="423.5" y="-330.5" font-family="Helvetica,sans-Serif" font-size="10.00">IntImm()</text>
-<text text-anchor="start" x="410.5" y="-315.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="423.5" y="-315.5" font-family="Helvetica,sans-Serif" font-size="10.00">IntImm()</text>
-<text text-anchor="start" x="410.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="423.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="423.5" y="-289.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="410.5" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="423.5" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="423.5" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<text text-anchor="start" x="410.5" y="-248.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="423.5" y="-248.5" font-family="Helvetica,sans-Serif" font-size="10.00">Bool()</text>
-<text text-anchor="start" x="410.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="423.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">Int32()</text>
-<text text-anchor="start" x="410.5" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="423.5" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">Int32()</text>
-<text text-anchor="start" x="410.5" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="423.5" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">Int64()</text>
-<text text-anchor="start" x="410.5" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="423.5" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">Int64()</text>
-<polygon fill="#666666" stroke="#666666" points="406.5,-381.5 406.5,-381.5 591.5,-381.5 591.5,-381.5 406.5,-381.5"/>
-<polygon fill="#666666" stroke="#666666" points="406.5,-355.5 406.5,-355.5 421.5,-355.5 421.5,-355.5 406.5,-355.5"/>
-<polygon fill="#666666" stroke="#666666" points="421.5,-355.5 421.5,-355.5 591.5,-355.5 591.5,-355.5 421.5,-355.5"/>
-<polygon fill="none" stroke="#666666" points="406,-182 406,-399 591,-399 591,-182 406,-182"/>
+<polygon fill="white" stroke="transparent" points="528,-369 364,-369 364,-167 528,-167 528,-369"/>
+<text text-anchor="start" x="415.5" y="-357" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::IntImm</text>
+<text text-anchor="start" x="368" y="-342" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="381" y="-342" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="381" y="-331" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="368" y="-316" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="381" y="-316" font-family="Helvetica,sans-Serif" font-size="10.00">IntImm()</text>
+<text text-anchor="start" x="368" y="-301" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="381" y="-301" font-family="Helvetica,sans-Serif" font-size="10.00">IntImm()</text>
+<text text-anchor="start" x="368" y="-286" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="381" y="-286" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="381" y="-275" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="368" y="-260" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="381" y="-260" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="381" y="-249" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<text text-anchor="start" x="368" y="-234" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="381" y="-234" font-family="Helvetica,sans-Serif" font-size="10.00">Bool()</text>
+<text text-anchor="start" x="368" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="381" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">Int32()</text>
+<text text-anchor="start" x="368" y="-204" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="381" y="-204" font-family="Helvetica,sans-Serif" font-size="10.00">Int32()</text>
+<text text-anchor="start" x="368" y="-189" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="381" y="-189" font-family="Helvetica,sans-Serif" font-size="10.00">Int64()</text>
+<text text-anchor="start" x="368" y="-174" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="381" y="-174" font-family="Helvetica,sans-Serif" font-size="10.00">Int64()</text>
+<polygon fill="#666666" stroke="#666666" points="364,-352 364,-352 528,-352 528,-352 364,-352"/>
+<polygon fill="#666666" stroke="#666666" points="364,-326 364,-326 379,-326 379,-326 364,-326"/>
+<polygon fill="#666666" stroke="#666666" points="379,-326 379,-326 528,-326 528,-326 379,-326"/>
+<polygon fill="none" stroke="#666666" points="364,-167 364,-369 528,-369 528,-167 364,-167"/>
 </a>
 </g>
 </g>
@@ -678,8 +642,8 @@
 <g id="edge6_Node000004_Node000007" class="edge">
 <title>Node4&#45;&gt;Node7</title>
 <g id="a_edge6_Node000004_Node000007"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3643.67,-553.49C3132.8,-550.33 880.99,-529.08 599.5,-399 596.71,-397.71 593.96,-396.31 591.25,-394.8"/>
-<polygon fill="none" stroke="#63b8ff" points="3643.95,-556.99 3653.97,-553.55 3644,-549.99 3643.95,-556.99"/>
+<path fill="none" stroke="#63b8ff" d="M3265.52,-515.82C2806.86,-511.91 788.2,-487.99 537,-369 534.03,-367.59 531.11,-366.04 528.25,-364.36"/>
+<polygon fill="none" stroke="#63b8ff" points="3265.71,-519.32 3275.74,-515.91 3265.77,-512.32 3265.71,-519.32"/>
 </a>
 </g>
 </g>
@@ -687,30 +651,28 @@
 <g id="Node000008" class="node">
 <title>Node8</title>
 <g id="a_Node000008"><a xlink:href="classtvm_1_1PrimVar.html" target="_top" xlink:title="Checked scalar view over a VarNode.">
-<polygon fill="white" stroke="transparent" points="794,-371 609,-371 609,-210 794,-210 794,-371"/>
-<text text-anchor="start" x="670" y="-358.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::PrimVar</text>
-<text text-anchor="start" x="613.5" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="626.5" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="626.5" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="613.5" y="-317.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="626.5" y="-317.5" font-family="Helvetica,sans-Serif" font-size="10.00">PrimVar()</text>
-<text text-anchor="start" x="613.5" y="-302.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="626.5" y="-302.5" font-family="Helvetica,sans-Serif" font-size="10.00">PrimVar()</text>
-<text text-anchor="start" x="613.5" y="-287.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="626.5" y="-287.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator Var()</text>
-<text text-anchor="start" x="613.5" y="-272.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="626.5" y="-272.5" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithSuffix()</text>
-<text text-anchor="start" x="613.5" y="-257.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="626.5" y="-257.5" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithDType()</text>
-<text text-anchor="start" x="613.5" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="626.5" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">PrimVar()</text>
-<text text-anchor="start" x="613.5" y="-227.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="626.5" y="-227.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="626.5" y="-216.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="609.5,-353.5 609.5,-353.5 794.5,-353.5 794.5,-353.5 609.5,-353.5"/>
-<polygon fill="#666666" stroke="#666666" points="609.5,-327.5 609.5,-327.5 624.5,-327.5 624.5,-327.5 609.5,-327.5"/>
-<polygon fill="#666666" stroke="#666666" points="624.5,-327.5 624.5,-327.5 794.5,-327.5 794.5,-327.5 624.5,-327.5"/>
-<polygon fill="none" stroke="#666666" points="609,-210 609,-371 794,-371 794,-210 609,-210"/>
+<polygon fill="white" stroke="transparent" points="710,-341 546,-341 546,-195 710,-195 710,-341"/>
+<text text-anchor="start" x="596" y="-329" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::PrimVar</text>
+<text text-anchor="start" x="550" y="-314" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="563" y="-314" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="563" y="-303" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="550" y="-288" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="563" y="-288" font-family="Helvetica,sans-Serif" font-size="10.00">PrimVar()</text>
+<text text-anchor="start" x="550" y="-273" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="563" y="-273" font-family="Helvetica,sans-Serif" font-size="10.00">PrimVar()</text>
+<text text-anchor="start" x="550" y="-258" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="563" y="-258" font-family="Helvetica,sans-Serif" font-size="10.00">operator Var()</text>
+<text text-anchor="start" x="550" y="-243" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="563" y="-243" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithSuffix()</text>
+<text text-anchor="start" x="550" y="-228" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="563" y="-228" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithDType()</text>
+<text text-anchor="start" x="550" y="-213" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="563" y="-213" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="563" y="-202" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="546,-324 546,-324 710,-324 710,-324 546,-324"/>
+<polygon fill="#666666" stroke="#666666" points="546,-298 546,-298 561,-298 561,-298 546,-298"/>
+<polygon fill="#666666" stroke="#666666" points="561,-298 561,-298 710,-298 710,-298 561,-298"/>
+<polygon fill="none" stroke="#666666" points="546,-195 546,-341 710,-341 710,-195 546,-195"/>
 </a>
 </g>
 </g>
@@ -718,8 +680,8 @@
 <g id="edge7_Node000004_Node000008" class="edge">
 <title>Node4&#45;&gt;Node8</title>
 <g id="a_edge7_Node000004_Node000008"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3643.57,-553.11C3152.91,-548.26 1064.45,-520.59 802.5,-399 787.87,-392.21 774.32,-382.25 762.21,-371.09"/>
-<polygon fill="none" stroke="#63b8ff" points="3643.78,-556.61 3653.82,-553.21 3643.85,-549.61 3643.78,-556.61"/>
+<path fill="none" stroke="#63b8ff" d="M3265.8,-515.47C2825.99,-509.99 952.82,-480.27 719,-369 704.9,-362.29 691.99,-352.32 680.6,-341.24"/>
+<polygon fill="none" stroke="#63b8ff" points="3265.88,-518.97 3275.92,-515.59 3265.97,-511.97 3265.88,-518.97"/>
 </a>
 </g>
 </g>
@@ -727,23 +689,21 @@
 <g id="Node000009" class="node">
 <title>Node9</title>
 <g id="a_Node000009"><a xlink:href="classtvm_1_1TensorLoad.html" target="_top" xlink:title="Managed reference to TensorLoadNode.">
-<polygon fill="white" stroke="transparent" points="997,-346.5 812,-346.5 812,-234.5 997,-234.5 997,-346.5"/>
-<text text-anchor="start" x="864.5" y="-334.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TensorLoad</text>
-<text text-anchor="start" x="816.5" y="-319.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="829.5" y="-319.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="829.5" y="-308.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="816.5" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="829.5" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00">TensorLoad()</text>
-<text text-anchor="start" x="816.5" y="-278.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="829.5" y="-278.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="829.5" y="-267.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="816.5" y="-252.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="829.5" y="-252.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="829.5" y="-241.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="812.5,-329.5 812.5,-329.5 997.5,-329.5 997.5,-329.5 812.5,-329.5"/>
-<polygon fill="#666666" stroke="#666666" points="812.5,-303.5 812.5,-303.5 827.5,-303.5 827.5,-303.5 812.5,-303.5"/>
-<polygon fill="#666666" stroke="#666666" points="827.5,-303.5 827.5,-303.5 997.5,-303.5 997.5,-303.5 827.5,-303.5"/>
-<polygon fill="none" stroke="#666666" points="812,-234.5 812,-346.5 997,-346.5 997,-234.5 812,-234.5"/>
+<polygon fill="white" stroke="transparent" points="892,-316.5 728,-316.5 728,-219.5 892,-219.5 892,-316.5"/>
+<text text-anchor="start" x="769.5" y="-304" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TensorLoad</text>
+<text text-anchor="start" x="732" y="-289" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="745" y="-289" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="745" y="-278" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="732" y="-263" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="745" y="-263" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="745" y="-252" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="732" y="-237" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="745" y="-237" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="745" y="-226" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="728,-299 728,-299 892,-299 892,-299 728,-299"/>
+<polygon fill="#666666" stroke="#666666" points="728,-273 728,-273 743,-273 743,-273 728,-273"/>
+<polygon fill="#666666" stroke="#666666" points="743,-273 743,-273 892,-273 892,-273 743,-273"/>
+<polygon fill="none" stroke="#666666" points="728,-219.5 728,-316.5 892,-316.5 892,-219.5 728,-219.5"/>
 </a>
 </g>
 </g>
@@ -751,8 +711,8 @@
 <g id="edge8_Node000004_Node000009" class="edge">
 <title>Node4&#45;&gt;Node9</title>
 <g id="a_edge8_Node000004_Node000009"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3643.81,-552.68C3174.71,-546.06 1248.02,-512.15 1005.5,-399 980.67,-387.42 958.95,-366.73 942.08,-346.59"/>
-<polygon fill="none" stroke="#63b8ff" points="3643.9,-556.18 3653.95,-552.82 3644,-549.18 3643.9,-556.18"/>
+<path fill="none" stroke="#63b8ff" d="M3265.67,-515.06C2844.58,-507.92 1117.4,-472.53 901,-369 876.86,-357.45 856.17,-336.36 840.65,-316.51"/>
+<polygon fill="none" stroke="#63b8ff" points="3265.61,-518.56 3275.67,-515.22 3265.73,-511.56 3265.61,-518.56"/>
 </a>
 </g>
 </g>
@@ -760,25 +720,23 @@
 <g id="Node000010" class="node">
 <title>Node10</title>
 <g id="a_Node000010"><a xlink:href="classtvm_1_1prim_1_1Add.html" target="_top" xlink:title="Managed reference to AddNode.">
-<polygon fill="white" stroke="transparent" points="1200,-354 1015,-354 1015,-227 1200,-227 1200,-354"/>
-<text text-anchor="start" x="1071.5" y="-341.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::Add</text>
-<text text-anchor="start" x="1019.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1032.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="1032.5" y="-315.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="1019.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1032.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">Add()</text>
-<text text-anchor="start" x="1019.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1032.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">Add()</text>
-<text text-anchor="start" x="1019.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1032.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="1032.5" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="1019.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1032.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="1032.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="1015.5,-336.5 1015.5,-336.5 1200.5,-336.5 1200.5,-336.5 1015.5,-336.5"/>
-<polygon fill="#666666" stroke="#666666" points="1015.5,-310.5 1015.5,-310.5 1030.5,-310.5 1030.5,-310.5 1015.5,-310.5"/>
-<polygon fill="#666666" stroke="#666666" points="1030.5,-310.5 1030.5,-310.5 1200.5,-310.5 1200.5,-310.5 1030.5,-310.5"/>
-<polygon fill="none" stroke="#666666" points="1015,-227 1015,-354 1200,-354 1200,-227 1015,-227"/>
+<polygon fill="white" stroke="transparent" points="1074,-324 910,-324 910,-212 1074,-212 1074,-324"/>
+<text text-anchor="start" x="955.5" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::Add</text>
+<text text-anchor="start" x="914" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="927" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="927" y="-286" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="914" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="927" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">Add()</text>
+<text text-anchor="start" x="914" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="927" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="927" y="-245" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="914" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="927" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="927" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="910,-307 910,-307 1074,-307 1074,-307 910,-307"/>
+<polygon fill="#666666" stroke="#666666" points="910,-281 910,-281 925,-281 925,-281 910,-281"/>
+<polygon fill="#666666" stroke="#666666" points="925,-281 925,-281 1074,-281 1074,-281 925,-281"/>
+<polygon fill="none" stroke="#666666" points="910,-212 910,-324 1074,-324 1074,-212 910,-212"/>
 </a>
 </g>
 </g>
@@ -786,8 +744,8 @@
 <g id="edge9_Node000004_Node000010" class="edge">
 <title>Node4&#45;&gt;Node10</title>
 <g id="a_edge9_Node000004_Node000010"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3643.75,-552.18C3196.48,-543.68 1431.59,-503.69 1208.5,-399 1186.82,-388.83 1167.51,-371.75 1151.72,-354.16"/>
-<polygon fill="none" stroke="#63b8ff" points="3643.69,-555.68 3653.75,-552.37 3643.82,-548.68 3643.69,-555.68"/>
+<path fill="none" stroke="#63b8ff" d="M3265.67,-514.58C2864.27,-505.69 1282.06,-464.82 1083,-369 1061.95,-358.87 1043.52,-341.51 1028.85,-324.07"/>
+<polygon fill="none" stroke="#63b8ff" points="3265.71,-518.08 3275.79,-514.8 3265.87,-511.08 3265.71,-518.08"/>
 </a>
 </g>
 </g>
@@ -795,25 +753,23 @@
 <g id="Node000011" class="node">
 <title>Node11</title>
 <g id="a_Node000011"><a xlink:href="classtvm_1_1prim_1_1And.html" target="_top" xlink:title="Managed reference to AndNode.">
-<polygon fill="white" stroke="transparent" points="1403,-354 1218,-354 1218,-227 1403,-227 1403,-354"/>
-<text text-anchor="start" x="1274.5" y="-341.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::And</text>
-<text text-anchor="start" x="1222.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1235.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="1235.5" y="-315.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="1222.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1235.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">And()</text>
-<text text-anchor="start" x="1222.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1235.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">And()</text>
-<text text-anchor="start" x="1222.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1235.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="1235.5" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="1222.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1235.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="1235.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="1218.5,-336.5 1218.5,-336.5 1403.5,-336.5 1403.5,-336.5 1218.5,-336.5"/>
-<polygon fill="#666666" stroke="#666666" points="1218.5,-310.5 1218.5,-310.5 1233.5,-310.5 1233.5,-310.5 1218.5,-310.5"/>
-<polygon fill="#666666" stroke="#666666" points="1233.5,-310.5 1233.5,-310.5 1403.5,-310.5 1403.5,-310.5 1233.5,-310.5"/>
-<polygon fill="none" stroke="#666666" points="1218,-227 1218,-354 1403,-354 1403,-227 1218,-227"/>
+<polygon fill="white" stroke="transparent" points="1256,-324 1092,-324 1092,-212 1256,-212 1256,-324"/>
+<text text-anchor="start" x="1137.5" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::And</text>
+<text text-anchor="start" x="1096" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1109" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="1109" y="-286" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="1096" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1109" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">And()</text>
+<text text-anchor="start" x="1096" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1109" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="1109" y="-245" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="1096" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1109" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="1109" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="1092,-307 1092,-307 1256,-307 1256,-307 1092,-307"/>
+<polygon fill="#666666" stroke="#666666" points="1092,-281 1092,-281 1107,-281 1107,-281 1092,-281"/>
+<polygon fill="#666666" stroke="#666666" points="1107,-281 1107,-281 1256,-281 1256,-281 1107,-281"/>
+<polygon fill="none" stroke="#666666" points="1092,-212 1092,-324 1256,-324 1256,-212 1092,-212"/>
 </a>
 </g>
 </g>
@@ -821,8 +777,8 @@
 <g id="edge10_Node000004_Node000011" class="edge">
 <title>Node4&#45;&gt;Node11</title>
 <g id="a_edge10_Node000004_Node000011"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3643.65,-551.6C3219.05,-541.08 1615.21,-495.26 1411.5,-399 1389.85,-388.77 1370.54,-371.67 1354.75,-354.09"/>
-<polygon fill="none" stroke="#63b8ff" points="3643.68,-555.1 3653.77,-551.85 3643.85,-548.1 3643.68,-555.1"/>
+<path fill="none" stroke="#63b8ff" d="M3265.6,-514.02C2884.57,-503.26 1446.75,-457.11 1265,-369 1244.09,-358.86 1225.74,-341.61 1211.1,-324.26"/>
+<polygon fill="none" stroke="#63b8ff" points="3265.66,-517.53 3275.76,-514.31 3265.86,-510.53 3265.66,-517.53"/>
 </a>
 </g>
 </g>
@@ -830,25 +786,23 @@
 <g id="Node000012" class="node">
 <title>Node12</title>
 <g id="a_Node000012"><a xlink:href="classtvm_1_1prim_1_1BitwiseAnd.html" target="_top" xlink:title="Managed reference to BitwiseAndNode.">
-<polygon fill="white" stroke="transparent" points="1606,-354 1421,-354 1421,-227 1606,-227 1606,-354"/>
-<text text-anchor="start" x="1459.5" y="-341.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BitwiseAnd</text>
-<text text-anchor="start" x="1425.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1438.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="1438.5" y="-315.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="1425.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1438.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">BitwiseAnd()</text>
-<text text-anchor="start" x="1425.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1438.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">BitwiseAnd()</text>
-<text text-anchor="start" x="1425.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1438.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="1438.5" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="1425.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1438.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="1438.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="1421.5,-336.5 1421.5,-336.5 1606.5,-336.5 1606.5,-336.5 1421.5,-336.5"/>
-<polygon fill="#666666" stroke="#666666" points="1421.5,-310.5 1421.5,-310.5 1436.5,-310.5 1436.5,-310.5 1421.5,-310.5"/>
-<polygon fill="#666666" stroke="#666666" points="1436.5,-310.5 1436.5,-310.5 1606.5,-310.5 1606.5,-310.5 1436.5,-310.5"/>
-<polygon fill="none" stroke="#666666" points="1421,-227 1421,-354 1606,-354 1606,-227 1421,-227"/>
+<polygon fill="white" stroke="transparent" points="1438,-324 1274,-324 1274,-212 1438,-212 1438,-324"/>
+<text text-anchor="start" x="1301.5" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BitwiseAnd</text>
+<text text-anchor="start" x="1278" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1291" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="1291" y="-286" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="1278" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1291" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">BitwiseAnd()</text>
+<text text-anchor="start" x="1278" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1291" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="1291" y="-245" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="1278" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1291" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="1291" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="1274,-307 1274,-307 1438,-307 1438,-307 1274,-307"/>
+<polygon fill="#666666" stroke="#666666" points="1274,-281 1274,-281 1289,-281 1289,-281 1274,-281"/>
+<polygon fill="#666666" stroke="#666666" points="1289,-281 1289,-281 1438,-281 1438,-281 1289,-281"/>
+<polygon fill="none" stroke="#666666" points="1274,-212 1274,-324 1438,-324 1438,-212 1274,-212"/>
 </a>
 </g>
 </g>
@@ -856,8 +810,8 @@
 <g id="edge11_Node000004_Node000012" class="edge">
 <title>Node4&#45;&gt;Node12</title>
 <g id="a_edge11_Node000004_Node000012"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3643.71,-550.9C3243.03,-538.24 1798.91,-486.85 1614.5,-399 1592.88,-388.7 1573.58,-371.59 1557.79,-354.01"/>
-<polygon fill="none" stroke="#63b8ff" points="3643.73,-554.41 3653.84,-551.22 3643.95,-547.41 3643.73,-554.41"/>
+<path fill="none" stroke="#63b8ff" d="M3265.67,-513.36C2906.14,-500.6 1611.52,-449.44 1447,-369 1426.12,-358.79 1407.78,-341.52 1393.14,-324.18"/>
+<polygon fill="none" stroke="#63b8ff" points="3265.66,-516.86 3275.77,-513.72 3265.9,-509.87 3265.66,-516.86"/>
 </a>
 </g>
 </g>
@@ -865,25 +819,23 @@
 <g id="Node000013" class="node">
 <title>Node13</title>
 <g id="a_Node000013"><a xlink:href="classtvm_1_1prim_1_1BitwiseNot.html" target="_top" xlink:title="Managed reference to BitwiseNotNode.">
-<polygon fill="white" stroke="transparent" points="1809,-354 1624,-354 1624,-227 1809,-227 1809,-354"/>
-<text text-anchor="start" x="1663" y="-341.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BitwiseNot</text>
-<text text-anchor="start" x="1628.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1641.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="1641.5" y="-315.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="1628.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1641.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">BitwiseNot()</text>
-<text text-anchor="start" x="1628.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1641.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">BitwiseNot()</text>
-<text text-anchor="start" x="1628.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1641.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="1641.5" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="1628.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1641.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="1641.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="1624.5,-336.5 1624.5,-336.5 1809.5,-336.5 1809.5,-336.5 1624.5,-336.5"/>
-<polygon fill="#666666" stroke="#666666" points="1624.5,-310.5 1624.5,-310.5 1639.5,-310.5 1639.5,-310.5 1624.5,-310.5"/>
-<polygon fill="#666666" stroke="#666666" points="1639.5,-310.5 1639.5,-310.5 1809.5,-310.5 1809.5,-310.5 1639.5,-310.5"/>
-<polygon fill="none" stroke="#666666" points="1624,-227 1624,-354 1809,-354 1809,-227 1624,-227"/>
+<polygon fill="white" stroke="transparent" points="1620,-324 1456,-324 1456,-212 1620,-212 1620,-324"/>
+<text text-anchor="start" x="1484" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BitwiseNot</text>
+<text text-anchor="start" x="1460" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1473" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="1473" y="-286" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="1460" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1473" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">BitwiseNot()</text>
+<text text-anchor="start" x="1460" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1473" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="1473" y="-245" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="1460" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1473" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="1473" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="1456,-307 1456,-307 1620,-307 1620,-307 1456,-307"/>
+<polygon fill="#666666" stroke="#666666" points="1456,-281 1456,-281 1471,-281 1471,-281 1456,-281"/>
+<polygon fill="#666666" stroke="#666666" points="1471,-281 1471,-281 1620,-281 1620,-281 1471,-281"/>
+<polygon fill="none" stroke="#666666" points="1456,-212 1456,-324 1620,-324 1620,-212 1456,-212"/>
 </a>
 </g>
 </g>
@@ -891,8 +843,8 @@
 <g id="edge12_Node000004_Node000013" class="edge">
 <title>Node4&#45;&gt;Node13</title>
 <g id="a_edge12_Node000004_Node000013"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3643.86,-550.07C3268.38,-535.1 1982.7,-478.47 1817.5,-399 1796.04,-388.68 1776.84,-371.67 1761.09,-354.19"/>
-<polygon fill="none" stroke="#63b8ff" points="3643.77,-553.57 3653.9,-550.47 3644.05,-546.57 3643.77,-553.57"/>
+<path fill="none" stroke="#63b8ff" d="M3265.57,-512.56C2928.37,-497.64 1776.33,-441.77 1629,-369 1608.16,-358.71 1589.83,-341.42 1575.19,-324.09"/>
+<polygon fill="none" stroke="#63b8ff" points="3265.65,-516.06 3275.79,-513.01 3265.95,-509.07 3265.65,-516.06"/>
 </a>
 </g>
 </g>
@@ -900,25 +852,23 @@
 <g id="Node000014" class="node">
 <title>Node14</title>
 <g id="a_Node000014"><a xlink:href="classtvm_1_1prim_1_1BitwiseOr.html" target="_top" xlink:title="Managed reference to BitwiseOrNode.">
-<polygon fill="white" stroke="transparent" points="2012,-354 1827,-354 1827,-227 2012,-227 2012,-354"/>
-<text text-anchor="start" x="1869" y="-341.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BitwiseOr</text>
-<text text-anchor="start" x="1831.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1844.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="1844.5" y="-315.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="1831.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1844.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">BitwiseOr()</text>
-<text text-anchor="start" x="1831.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1844.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">BitwiseOr()</text>
-<text text-anchor="start" x="1831.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1844.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="1844.5" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="1831.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1844.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="1844.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="1827.5,-336.5 1827.5,-336.5 2012.5,-336.5 2012.5,-336.5 1827.5,-336.5"/>
-<polygon fill="#666666" stroke="#666666" points="1827.5,-310.5 1827.5,-310.5 1842.5,-310.5 1842.5,-310.5 1827.5,-310.5"/>
-<polygon fill="#666666" stroke="#666666" points="1842.5,-310.5 1842.5,-310.5 2012.5,-310.5 2012.5,-310.5 1842.5,-310.5"/>
-<polygon fill="none" stroke="#666666" points="1827,-227 1827,-354 2012,-354 2012,-227 1827,-227"/>
+<polygon fill="white" stroke="transparent" points="1802,-324 1638,-324 1638,-212 1802,-212 1802,-324"/>
+<text text-anchor="start" x="1669" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BitwiseOr</text>
+<text text-anchor="start" x="1642" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1655" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="1655" y="-286" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="1642" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1655" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">BitwiseOr()</text>
+<text text-anchor="start" x="1642" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1655" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="1655" y="-245" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="1642" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1655" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="1655" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="1638,-307 1638,-307 1802,-307 1802,-307 1638,-307"/>
+<polygon fill="#666666" stroke="#666666" points="1638,-281 1638,-281 1653,-281 1653,-281 1638,-281"/>
+<polygon fill="#666666" stroke="#666666" points="1653,-281 1653,-281 1802,-281 1802,-281 1653,-281"/>
+<polygon fill="none" stroke="#666666" points="1638,-212 1638,-324 1802,-324 1802,-212 1638,-212"/>
 </a>
 </g>
 </g>
@@ -926,8 +876,8 @@
 <g id="edge13_Node000004_Node000014" class="edge">
 <title>Node4&#45;&gt;Node14</title>
 <g id="a_edge13_Node000004_Node000014"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3643.43,-554.23C3316.81,-553.48 2309.26,-539.58 2020.5,-399 1999.09,-388.58 1979.9,-371.54 1964.15,-354.07"/>
-<polygon fill="none" stroke="#63b8ff" points="3643.82,-557.73 3653.83,-554.25 3643.84,-550.73 3643.82,-557.73"/>
+<path fill="none" stroke="#63b8ff" d="M3265.41,-516.31C2972.25,-514.36 2068.55,-497.81 1811,-369 1790.32,-358.66 1772.08,-341.47 1757.47,-324.23"/>
+<polygon fill="none" stroke="#63b8ff" points="3265.56,-519.81 3275.58,-516.37 3265.61,-512.81 3265.56,-519.81"/>
 </a>
 </g>
 </g>
@@ -935,25 +885,23 @@
 <g id="Node000015" class="node">
 <title>Node15</title>
 <g id="a_Node000015"><a xlink:href="classtvm_1_1prim_1_1BitwiseXor.html" target="_top" xlink:title="Managed reference to BitwiseXorNode.">
-<polygon fill="white" stroke="transparent" points="2215,-354 2030,-354 2030,-227 2215,-227 2215,-354"/>
-<text text-anchor="start" x="2069.5" y="-341.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BitwiseXor</text>
-<text text-anchor="start" x="2034.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2047.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="2047.5" y="-315.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="2034.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2047.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">BitwiseXor()</text>
-<text text-anchor="start" x="2034.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2047.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">BitwiseXor()</text>
-<text text-anchor="start" x="2034.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2047.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="2047.5" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="2034.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2047.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="2047.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="2030.5,-336.5 2030.5,-336.5 2215.5,-336.5 2215.5,-336.5 2030.5,-336.5"/>
-<polygon fill="#666666" stroke="#666666" points="2030.5,-310.5 2030.5,-310.5 2045.5,-310.5 2045.5,-310.5 2030.5,-310.5"/>
-<polygon fill="#666666" stroke="#666666" points="2045.5,-310.5 2045.5,-310.5 2215.5,-310.5 2215.5,-310.5 2045.5,-310.5"/>
-<polygon fill="none" stroke="#666666" points="2030,-227 2030,-354 2215,-354 2215,-227 2030,-227"/>
+<polygon fill="white" stroke="transparent" points="1984,-324 1820,-324 1820,-212 1984,-212 1984,-324"/>
+<text text-anchor="start" x="1848.5" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::BitwiseXor</text>
+<text text-anchor="start" x="1824" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1837" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="1837" y="-286" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="1824" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1837" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">BitwiseXor()</text>
+<text text-anchor="start" x="1824" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1837" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="1837" y="-245" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="1824" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1837" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="1837" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="1820,-307 1820,-307 1984,-307 1984,-307 1820,-307"/>
+<polygon fill="#666666" stroke="#666666" points="1820,-281 1820,-281 1835,-281 1835,-281 1820,-281"/>
+<polygon fill="#666666" stroke="#666666" points="1835,-281 1835,-281 1984,-281 1984,-281 1835,-281"/>
+<polygon fill="none" stroke="#666666" points="1820,-212 1820,-324 1984,-324 1984,-212 1820,-212"/>
 </a>
 </g>
 </g>
@@ -961,8 +909,8 @@
 <g id="edge14_Node000004_Node000015" class="edge">
 <title>Node4&#45;&gt;Node15</title>
 <g id="a_edge14_Node000004_Node000015"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3643.76,-552.81C3343.78,-547.89 2474.48,-523.03 2223.5,-399 2202.26,-388.51 2183.19,-371.56 2167.48,-354.2"/>
-<polygon fill="none" stroke="#63b8ff" points="3643.71,-556.31 3653.76,-552.97 3643.82,-549.31 3643.71,-556.31"/>
+<path fill="none" stroke="#63b8ff" d="M3265.8,-514.96C2996.64,-509.16 2216.84,-482.72 1993,-369 1972.39,-358.53 1954.16,-341.31 1939.54,-324.09"/>
+<polygon fill="none" stroke="#63b8ff" points="3265.86,-518.46 3275.93,-515.17 3266.01,-511.46 3265.86,-518.46"/>
 </a>
 </g>
 </g>
@@ -970,25 +918,23 @@
 <g id="Node000016" class="node">
 <title>Node16</title>
 <g id="a_Node000016"><a xlink:href="classtvm_1_1prim_1_1Broadcast.html" target="_top" xlink:title="Managed reference to BroadcastNode.">
-<polygon fill="white" stroke="transparent" points="2418,-354 2233,-354 2233,-227 2418,-227 2418,-354"/>
-<text text-anchor="start" x="2274.5" y="-341.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::Broadcast</text>
-<text text-anchor="start" x="2237.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2250.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="2250.5" y="-315.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="2237.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2250.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">Broadcast()</text>
-<text text-anchor="start" x="2237.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2250.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">Broadcast()</text>
-<text text-anchor="start" x="2237.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2250.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="2250.5" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="2237.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2250.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="2250.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="2233.5,-336.5 2233.5,-336.5 2418.5,-336.5 2418.5,-336.5 2233.5,-336.5"/>
-<polygon fill="#666666" stroke="#666666" points="2233.5,-310.5 2233.5,-310.5 2248.5,-310.5 2248.5,-310.5 2233.5,-310.5"/>
-<polygon fill="#666666" stroke="#666666" points="2248.5,-310.5 2248.5,-310.5 2418.5,-310.5 2418.5,-310.5 2248.5,-310.5"/>
-<polygon fill="none" stroke="#666666" points="2233,-227 2233,-354 2418,-354 2418,-227 2233,-227"/>
+<polygon fill="white" stroke="transparent" points="2166,-324 2002,-324 2002,-212 2166,-212 2166,-324"/>
+<text text-anchor="start" x="2032.5" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::Broadcast</text>
+<text text-anchor="start" x="2006" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2019" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="2019" y="-286" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="2006" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2019" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">Broadcast()</text>
+<text text-anchor="start" x="2006" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2019" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="2019" y="-245" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="2006" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2019" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="2019" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="2002,-307 2002,-307 2166,-307 2166,-307 2002,-307"/>
+<polygon fill="#666666" stroke="#666666" points="2002,-281 2002,-281 2017,-281 2017,-281 2002,-281"/>
+<polygon fill="#666666" stroke="#666666" points="2017,-281 2017,-281 2166,-281 2166,-281 2017,-281"/>
+<polygon fill="none" stroke="#666666" points="2002,-212 2002,-324 2166,-324 2166,-212 2002,-212"/>
 </a>
 </g>
 </g>
@@ -996,8 +942,8 @@
 <g id="edge15_Node000004_Node000016" class="edge">
 <title>Node4&#45;&gt;Node16</title>
 <g id="a_edge15_Node000004_Node000016"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3643.72,-550.96C3371.81,-541.51 2639.86,-506.5 2426.5,-399 2405.46,-388.4 2386.5,-371.53 2370.84,-354.28"/>
-<polygon fill="none" stroke="#63b8ff" points="3643.86,-554.47 3653.98,-551.31 3644.1,-547.47 3643.86,-554.47"/>
+<path fill="none" stroke="#63b8ff" d="M3265.56,-513.2C3021.44,-503.19 2365.2,-467.6 2175,-369 2154.58,-358.41 2136.45,-341.28 2121.86,-324.16"/>
+<polygon fill="none" stroke="#63b8ff" points="3265.69,-516.7 3275.83,-513.61 3265.98,-509.71 3265.69,-516.7"/>
 </a>
 </g>
 </g>
@@ -1005,25 +951,23 @@
 <g id="Node000017" class="node">
 <title>Node17</title>
 <g id="a_Node000017"><a xlink:href="classtvm_1_1prim_1_1Cast.html" target="_top" xlink:title="Managed reference to CastNode.">
-<polygon fill="white" stroke="transparent" points="2621,-354 2436,-354 2436,-227 2621,-227 2621,-354"/>
-<text text-anchor="start" x="2491" y="-341.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::Cast</text>
-<text text-anchor="start" x="2440.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2453.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="2453.5" y="-315.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="2440.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2453.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">Cast()</text>
-<text text-anchor="start" x="2440.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2453.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">Cast()</text>
-<text text-anchor="start" x="2440.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2453.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="2453.5" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="2440.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2453.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="2453.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="2436.5,-336.5 2436.5,-336.5 2621.5,-336.5 2621.5,-336.5 2436.5,-336.5"/>
-<polygon fill="#666666" stroke="#666666" points="2436.5,-310.5 2436.5,-310.5 2451.5,-310.5 2451.5,-310.5 2436.5,-310.5"/>
-<polygon fill="#666666" stroke="#666666" points="2451.5,-310.5 2451.5,-310.5 2621.5,-310.5 2621.5,-310.5 2451.5,-310.5"/>
-<polygon fill="none" stroke="#666666" points="2436,-227 2436,-354 2621,-354 2621,-227 2436,-227"/>
+<polygon fill="white" stroke="transparent" points="2348,-324 2184,-324 2184,-212 2348,-212 2348,-324"/>
+<text text-anchor="start" x="2228" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::Cast</text>
+<text text-anchor="start" x="2188" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2201" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="2201" y="-286" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="2188" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2201" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">Cast()</text>
+<text text-anchor="start" x="2188" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2201" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="2201" y="-245" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="2188" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2201" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="2201" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="2184,-307 2184,-307 2348,-307 2348,-307 2184,-307"/>
+<polygon fill="#666666" stroke="#666666" points="2184,-281 2184,-281 2199,-281 2199,-281 2184,-281"/>
+<polygon fill="#666666" stroke="#666666" points="2199,-281 2199,-281 2348,-281 2348,-281 2199,-281"/>
+<polygon fill="none" stroke="#666666" points="2184,-212 2184,-324 2348,-324 2348,-212 2184,-212"/>
 </a>
 </g>
 </g>
@@ -1031,8 +975,8 @@
 <g id="edge16_Node000004_Node000017" class="edge">
 <title>Node4&#45;&gt;Node17</title>
 <g id="a_edge16_Node000004_Node000017"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3643.49,-548.44C3401.81,-534.03 2805.55,-490.03 2629.5,-399 2608.57,-388.18 2589.64,-371.25 2573.98,-354"/>
-<polygon fill="none" stroke="#63b8ff" points="3643.49,-551.95 3653.68,-549.05 3643.91,-544.96 3643.49,-551.95"/>
+<path fill="none" stroke="#63b8ff" d="M3265.8,-510.83C3049.13,-496.25 2514.01,-452.62 2357,-369 2336.8,-358.24 2318.79,-341.17 2304.22,-324.16"/>
+<polygon fill="none" stroke="#63b8ff" points="3265.66,-514.33 3275.87,-511.5 3266.13,-507.34 3265.66,-514.33"/>
 </a>
 </g>
 </g>
@@ -1040,25 +984,23 @@
 <g id="Node000018" class="node">
 <title>Node18</title>
 <g id="a_Node000018"><a xlink:href="classtvm_1_1prim_1_1Div.html" target="_top" xlink:title="Managed reference to DivNode.">
-<polygon fill="white" stroke="transparent" points="2824,-354 2639,-354 2639,-227 2824,-227 2824,-354"/>
-<text text-anchor="start" x="2696.5" y="-341.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::Div</text>
-<text text-anchor="start" x="2643.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2656.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="2656.5" y="-315.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="2643.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2656.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">Div()</text>
-<text text-anchor="start" x="2643.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2656.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">Div()</text>
-<text text-anchor="start" x="2643.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2656.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="2656.5" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="2643.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2656.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="2656.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="2639.5,-336.5 2639.5,-336.5 2824.5,-336.5 2824.5,-336.5 2639.5,-336.5"/>
-<polygon fill="#666666" stroke="#666666" points="2639.5,-310.5 2639.5,-310.5 2654.5,-310.5 2654.5,-310.5 2639.5,-310.5"/>
-<polygon fill="#666666" stroke="#666666" points="2654.5,-310.5 2654.5,-310.5 2824.5,-310.5 2824.5,-310.5 2654.5,-310.5"/>
-<polygon fill="none" stroke="#666666" points="2639,-227 2639,-354 2824,-354 2824,-227 2639,-227"/>
+<polygon fill="white" stroke="transparent" points="2530,-324 2366,-324 2366,-212 2530,-212 2530,-324"/>
+<text text-anchor="start" x="2412.5" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::Div</text>
+<text text-anchor="start" x="2370" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2383" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="2383" y="-286" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="2370" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2383" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">Div()</text>
+<text text-anchor="start" x="2370" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2383" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="2383" y="-245" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="2370" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2383" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="2383" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="2366,-307 2366,-307 2530,-307 2530,-307 2366,-307"/>
+<polygon fill="#666666" stroke="#666666" points="2366,-281 2366,-281 2381,-281 2381,-281 2366,-281"/>
+<polygon fill="#666666" stroke="#666666" points="2381,-281 2381,-281 2530,-281 2530,-281 2381,-281"/>
+<polygon fill="none" stroke="#666666" points="2366,-212 2366,-324 2530,-324 2530,-212 2366,-212"/>
 </a>
 </g>
 </g>
@@ -1066,8 +1008,8 @@
 <g id="edge17_Node000004_Node000018" class="edge">
 <title>Node4&#45;&gt;Node18</title>
 <g id="a_edge17_Node000004_Node000018"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3643.62,-544.86C3435.35,-525.02 2971.79,-473.7 2832.5,-399 2811.96,-387.99 2793.27,-371.22 2777.69,-354.18"/>
-<polygon fill="none" stroke="#63b8ff" points="3643.36,-548.35 3653.65,-545.81 3644.02,-541.38 3643.36,-548.35"/>
+<path fill="none" stroke="#63b8ff" d="M3265.64,-507.4C3078.79,-487.79 2663.13,-437.68 2539,-369 2519.08,-357.98 2501.19,-340.95 2486.65,-324.05"/>
+<polygon fill="none" stroke="#63b8ff" points="3265.41,-510.9 3275.72,-508.45 3266.14,-503.93 3265.41,-510.9"/>
 </a>
 </g>
 </g>
@@ -1075,25 +1017,23 @@
 <g id="Node000019" class="node">
 <title>Node19</title>
 <g id="a_Node000019"><a xlink:href="classtvm_1_1prim_1_1EQ.html" target="_top" xlink:title="Managed reference to EQNode.">
-<polygon fill="white" stroke="transparent" points="3027,-354 2842,-354 2842,-227 3027,-227 3027,-354"/>
-<text text-anchor="start" x="2901" y="-341.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::EQ</text>
-<text text-anchor="start" x="2846.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2859.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="2859.5" y="-315.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="2846.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2859.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">EQ()</text>
-<text text-anchor="start" x="2846.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2859.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">EQ()</text>
-<text text-anchor="start" x="2846.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2859.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="2859.5" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="2846.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2859.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="2859.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="2842.5,-336.5 2842.5,-336.5 3027.5,-336.5 3027.5,-336.5 2842.5,-336.5"/>
-<polygon fill="#666666" stroke="#666666" points="2842.5,-310.5 2842.5,-310.5 2857.5,-310.5 2857.5,-310.5 2842.5,-310.5"/>
-<polygon fill="#666666" stroke="#666666" points="2857.5,-310.5 2857.5,-310.5 3027.5,-310.5 3027.5,-310.5 2857.5,-310.5"/>
-<polygon fill="none" stroke="#666666" points="2842,-227 2842,-354 3027,-354 3027,-227 2842,-227"/>
+<polygon fill="white" stroke="transparent" points="2712,-324 2548,-324 2548,-212 2712,-212 2712,-324"/>
+<text text-anchor="start" x="2596" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::EQ</text>
+<text text-anchor="start" x="2552" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2565" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="2565" y="-286" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="2552" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2565" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">EQ()</text>
+<text text-anchor="start" x="2552" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2565" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="2565" y="-245" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="2552" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2565" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="2565" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="2548,-307 2548,-307 2712,-307 2712,-307 2548,-307"/>
+<polygon fill="#666666" stroke="#666666" points="2548,-281 2548,-281 2563,-281 2563,-281 2548,-281"/>
+<polygon fill="#666666" stroke="#666666" points="2563,-281 2563,-281 2712,-281 2712,-281 2563,-281"/>
+<polygon fill="none" stroke="#666666" points="2548,-212 2548,-324 2712,-324 2712,-212 2548,-212"/>
 </a>
 </g>
 </g>
@@ -1101,8 +1041,8 @@
 <g id="edge18_Node000004_Node000019" class="edge">
 <title>Node4&#45;&gt;Node19</title>
 <g id="a_edge18_Node000004_Node000019"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3643.74,-550.51C3499.13,-541.58 3231.39,-510.02 3035.5,-399 3015.45,-387.64 2997.01,-370.98 2981.53,-354.15"/>
-<polygon fill="none" stroke="#63b8ff" points="3643.74,-554.02 3653.93,-551.12 3644.16,-547.03 3643.74,-554.02"/>
+<path fill="none" stroke="#63b8ff" d="M3265.57,-512.24C3135.67,-502.62 2895.51,-471.25 2721,-369 2701.56,-357.61 2683.9,-340.7 2669.42,-324.01"/>
+<polygon fill="none" stroke="#63b8ff" points="3265.65,-515.76 3275.87,-512.98 3266.15,-508.77 3265.65,-515.76"/>
 </a>
 </g>
 </g>
@@ -1110,25 +1050,23 @@
 <g id="Node000020" class="node">
 <title>Node20</title>
 <g id="a_Node000020"><a xlink:href="classtvm_1_1prim_1_1FloorDiv.html" target="_top" xlink:title="Managed reference to FloorDivNode.">
-<polygon fill="white" stroke="transparent" points="3230,-354 3045,-354 3045,-227 3230,-227 3230,-354"/>
-<text text-anchor="start" x="3090" y="-341.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::FloorDiv</text>
-<text text-anchor="start" x="3049.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3062.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="3062.5" y="-315.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="3049.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3062.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">FloorDiv()</text>
-<text text-anchor="start" x="3049.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3062.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">FloorDiv()</text>
-<text text-anchor="start" x="3049.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3062.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="3062.5" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="3049.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3062.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="3062.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="3045.5,-336.5 3045.5,-336.5 3230.5,-336.5 3230.5,-336.5 3045.5,-336.5"/>
-<polygon fill="#666666" stroke="#666666" points="3045.5,-310.5 3045.5,-310.5 3060.5,-310.5 3060.5,-310.5 3045.5,-310.5"/>
-<polygon fill="#666666" stroke="#666666" points="3060.5,-310.5 3060.5,-310.5 3230.5,-310.5 3230.5,-310.5 3060.5,-310.5"/>
-<polygon fill="none" stroke="#666666" points="3045,-227 3045,-354 3230,-354 3230,-227 3045,-227"/>
+<polygon fill="white" stroke="transparent" points="2894,-324 2730,-324 2730,-212 2894,-212 2894,-324"/>
+<text text-anchor="start" x="2764" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::FloorDiv</text>
+<text text-anchor="start" x="2734" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2747" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="2747" y="-286" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="2734" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2747" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">FloorDiv()</text>
+<text text-anchor="start" x="2734" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2747" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="2747" y="-245" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="2734" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2747" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="2747" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="2730,-307 2730,-307 2894,-307 2894,-307 2730,-307"/>
+<polygon fill="#666666" stroke="#666666" points="2730,-281 2730,-281 2745,-281 2745,-281 2730,-281"/>
+<polygon fill="#666666" stroke="#666666" points="2745,-281 2745,-281 2894,-281 2894,-281 2745,-281"/>
+<polygon fill="none" stroke="#666666" points="2730,-212 2730,-324 2894,-324 2894,-212 2730,-212"/>
 </a>
 </g>
 </g>
@@ -1136,8 +1074,8 @@
 <g id="edge19_Node000004_Node000020" class="edge">
 <title>Node4&#45;&gt;Node20</title>
 <g id="a_edge19_Node000004_Node000020"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3643.97,-538.8C3536.49,-519.34 3365.88,-478.21 3238.5,-399 3219.36,-387.1 3201.45,-370.68 3186.18,-354.25"/>
-<polygon fill="none" stroke="#63b8ff" points="3643.38,-542.25 3653.84,-540.56 3644.61,-535.36 3643.38,-542.25"/>
+<path fill="none" stroke="#63b8ff" d="M3265.63,-501.12C3169.16,-481.87 3016.39,-442.16 2903,-369 2884.46,-357.04 2867.26,-340.38 2852.93,-324.08"/>
+<polygon fill="none" stroke="#63b8ff" points="3265.16,-504.6 3275.65,-503.09 3266.51,-497.73 3265.16,-504.6"/>
 </a>
 </g>
 </g>
@@ -1145,25 +1083,23 @@
 <g id="Node000021" class="node">
 <title>Node21</title>
 <g id="a_Node000021"><a xlink:href="classtvm_1_1prim_1_1FloorMod.html" target="_top" xlink:title="Managed reference to FloorModNode.">
-<polygon fill="white" stroke="transparent" points="3433,-354 3248,-354 3248,-227 3433,-227 3433,-354"/>
-<text text-anchor="start" x="3291" y="-341.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::FloorMod</text>
-<text text-anchor="start" x="3252.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3265.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="3265.5" y="-315.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="3252.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3265.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">FloorMod()</text>
-<text text-anchor="start" x="3252.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3265.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">FloorMod()</text>
-<text text-anchor="start" x="3252.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3265.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="3265.5" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="3252.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3265.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="3265.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="3248.5,-336.5 3248.5,-336.5 3433.5,-336.5 3433.5,-336.5 3248.5,-336.5"/>
-<polygon fill="#666666" stroke="#666666" points="3248.5,-310.5 3248.5,-310.5 3263.5,-310.5 3263.5,-310.5 3248.5,-310.5"/>
-<polygon fill="#666666" stroke="#666666" points="3263.5,-310.5 3263.5,-310.5 3433.5,-310.5 3433.5,-310.5 3263.5,-310.5"/>
-<polygon fill="none" stroke="#666666" points="3248,-227 3248,-354 3433,-354 3433,-227 3248,-227"/>
+<polygon fill="white" stroke="transparent" points="3076,-324 2912,-324 2912,-212 3076,-212 3076,-324"/>
+<text text-anchor="start" x="2944" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::FloorMod</text>
+<text text-anchor="start" x="2916" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2929" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="2929" y="-286" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="2916" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2929" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">FloorMod()</text>
+<text text-anchor="start" x="2916" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2929" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="2929" y="-245" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="2916" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2929" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="2929" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="2912,-307 2912,-307 3076,-307 3076,-307 2912,-307"/>
+<polygon fill="#666666" stroke="#666666" points="2912,-281 2912,-281 2927,-281 2927,-281 2912,-281"/>
+<polygon fill="#666666" stroke="#666666" points="2927,-281 2927,-281 3076,-281 3076,-281 2927,-281"/>
+<polygon fill="none" stroke="#666666" points="2912,-212 2912,-324 3076,-324 3076,-212 2912,-212"/>
 </a>
 </g>
 </g>
@@ -1171,8 +1107,8 @@
 <g id="edge20_Node000004_Node000021" class="edge">
 <title>Node4&#45;&gt;Node21</title>
 <g id="a_edge20_Node000004_Node000021"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3644.59,-512.92C3582.76,-485.47 3503.99,-445.86 3441.5,-399 3424.19,-386.02 3407.3,-369.89 3392.44,-354.12"/>
-<polygon fill="none" stroke="#63b8ff" points="3643.41,-516.23 3653.98,-517.05 3646.24,-509.82 3643.41,-516.23"/>
+<path fill="none" stroke="#63b8ff" d="M3266.6,-476.71C3211.23,-450.34 3140.76,-412.63 3085,-369 3068.36,-355.98 3052.17,-339.76 3038.18,-324.19"/>
+<polygon fill="none" stroke="#63b8ff" points="3265.17,-479.9 3275.7,-481 3268.15,-473.57 3265.17,-479.9"/>
 </a>
 </g>
 </g>
@@ -1180,25 +1116,23 @@
 <g id="Node000022" class="node">
 <title>Node22</title>
 <g id="a_Node000022"><a xlink:href="classtvm_1_1prim_1_1GE.html" target="_top" xlink:title="Managed reference to GENode.">
-<polygon fill="white" stroke="transparent" points="3636,-354 3451,-354 3451,-227 3636,-227 3636,-354"/>
-<text text-anchor="start" x="3510" y="-341.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::GE</text>
-<text text-anchor="start" x="3455.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3468.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="3468.5" y="-315.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="3455.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3468.5" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">GE()</text>
-<text text-anchor="start" x="3455.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3468.5" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">GE()</text>
-<text text-anchor="start" x="3455.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3468.5" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="3468.5" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="3455.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3468.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="3468.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="3451.5,-336.5 3451.5,-336.5 3636.5,-336.5 3636.5,-336.5 3451.5,-336.5"/>
-<polygon fill="#666666" stroke="#666666" points="3451.5,-310.5 3451.5,-310.5 3466.5,-310.5 3466.5,-310.5 3451.5,-310.5"/>
-<polygon fill="#666666" stroke="#666666" points="3466.5,-310.5 3466.5,-310.5 3636.5,-310.5 3636.5,-310.5 3466.5,-310.5"/>
-<polygon fill="none" stroke="#666666" points="3451,-227 3451,-354 3636,-354 3636,-227 3451,-227"/>
+<polygon fill="white" stroke="transparent" points="3258,-324 3094,-324 3094,-212 3258,-212 3258,-324"/>
+<text text-anchor="start" x="3142" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::prim::GE</text>
+<text text-anchor="start" x="3098" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3111" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="3111" y="-286" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
... 137145 lines suppressed ...