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 2022/08/05 22:30:39 UTC

[tvm-site] branch asf-site updated: deploying docs (apache/tvm@09732488588f331bb1a46e1e2138567035797126)

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 690f17a05 deploying docs (apache/tvm@09732488588f331bb1a46e1e2138567035797126)
690f17a05 is described below

commit 690f17a059ceb28477dd55b3498b668c791be157
Author: tvm-bot <95...@users.noreply.github.com>
AuthorDate: Fri Aug 5 22:30:32 2022 +0000

    deploying docs (apache/tvm@09732488588f331bb1a46e1e2138567035797126)
---
 .../how_to/compile_models/from_darknet.rst.txt     |    2 +-
 .../how_to/compile_models/from_mxnet.rst.txt       |    2 +-
 .../how_to/compile_models/from_oneflow.rst.txt     |    2 +-
 .../how_to/compile_models/from_pytorch.rst.txt     |    2 +-
 .../how_to/compile_models/from_tensorflow.rst.txt  |    2 +-
 .../compile_models/sg_execution_times.rst.txt      |   22 +-
 .../deploy_models/deploy_model_on_android.rst.txt  |    2 +-
 .../deploy_object_detection_pytorch.rst.txt        |    4 +-
 .../deploy_models/deploy_prequantized.rst.txt      |    6 +-
 .../deploy_prequantized_tflite.rst.txt             |    4 +-
 .../how_to/deploy_models/deploy_quantized.rst.txt  |    2 +-
 .../deploy_models/deploy_ssd_gluoncv.rst.txt       |    4 +-
 .../deploy_models/sg_execution_times.rst.txt       |   18 +-
 .../extend_tvm/bring_your_own_datatypes.rst.txt    |    2 +-
 .../how_to/extend_tvm/sg_execution_times.rst.txt   |   10 +-
 .../how_to/extend_tvm/use_pass_instrument.rst.txt  |   16 +-
 .../optimize_operators/opt_conv_cuda.rst.txt       |    2 +-
 .../optimize_operators/opt_conv_tensorcore.rst.txt |    2 +-
 .../how_to/optimize_operators/opt_gemm.rst.txt     |   16 +-
 .../optimize_operators/sg_execution_times.rst.txt  |    8 +-
 .../sg_execution_times.rst.txt                     |   14 +-
 .../tune_conv2d_layer_cuda.rst.txt                 |    4 +-
 .../tune_network_cuda.rst.txt                      |    2 +-
 .../tune_network_x86.rst.txt                       |    4 +-
 .../tune_sparse_x86.rst.txt                        |  132 +-
 .../tune_with_autotvm/sg_execution_times.rst.txt   |    8 +-
 .../tune_with_autotvm/tune_conv2d_cuda.rst.txt     |   26 +-
 .../work_with_microtvm/micro_autotune.rst.txt      |   16 +-
 .../how_to/work_with_microtvm/micro_train.rst.txt  |   16 +-
 .../work_with_microtvm/sg_execution_times.rst.txt  |   10 +-
 .../work_with_relay/sg_execution_times.rst.txt     |    8 +-
 .../how_to/work_with_schedules/intrin_math.rst.txt |    2 +-
 .../work_with_schedules/sg_execution_times.rst.txt |   12 +-
 .../how_to/work_with_schedules/tensorize.rst.txt   |    2 +-
 .../tutorials/autotvm/sg_execution_times.rst.txt   |    6 +-
 .../frontend/deploy_classification.rst.txt         |    2 +-
 .../tutorials/frontend/deploy_detection.rst.txt    |    2 +-
 .../tutorials/frontend/sg_execution_times.rst.txt  |    6 +-
 .../tutorials/optimize/sg_execution_times.rst.txt  |    6 +-
 .../topic/vta/tutorials/sg_execution_times.rst.txt |    6 +-
 .../tutorial/auto_scheduler_matmul_x86.rst.txt     |    2 +-
 docs/_sources/tutorial/autotvm_matmul_x86.rst.txt  |   20 +-
 docs/_sources/tutorial/autotvm_relay_x86.rst.txt   |   58 +-
 .../tutorial/cross_compilation_and_rpc.rst.txt     |    2 +-
 docs/_sources/tutorial/intro_topi.rst.txt          |    2 +-
 docs/_sources/tutorial/sg_execution_times.rst.txt  |   22 +-
 .../tutorial/tensor_expr_get_started.rst.txt       |   44 +-
 docs/commit_hash                                   |    2 +-
 docs/how_to/compile_models/from_darknet.html       |    2 +-
 docs/how_to/compile_models/from_mxnet.html         |    2 +-
 docs/how_to/compile_models/from_oneflow.html       |   13 +-
 docs/how_to/compile_models/from_pytorch.html       |    5 +-
 docs/how_to/compile_models/from_tensorflow.html    |    2 +-
 docs/how_to/compile_models/sg_execution_times.html |   36 +-
 .../deploy_models/deploy_model_on_android.html     |    2 +-
 .../deploy_object_detection_pytorch.html           |   20 +-
 docs/how_to/deploy_models/deploy_prequantized.html |    7 +-
 .../deploy_models/deploy_prequantized_tflite.html  |    4 +-
 docs/how_to/deploy_models/deploy_quantized.html    |    2 +-
 docs/how_to/deploy_models/deploy_ssd_gluoncv.html  |   39 +-
 docs/how_to/deploy_models/sg_execution_times.html  |   18 +-
 .../extend_tvm/bring_your_own_datatypes.html       |    2 +-
 docs/how_to/extend_tvm/sg_execution_times.html     |   10 +-
 docs/how_to/extend_tvm/use_pass_instrument.html    |   16 +-
 docs/how_to/optimize_operators/opt_conv_cuda.html  |    2 +-
 .../optimize_operators/opt_conv_tensorcore.html    |    2 +-
 docs/how_to/optimize_operators/opt_gemm.html       |   16 +-
 .../optimize_operators/sg_execution_times.html     |    8 +-
 .../sg_execution_times.html                        |   14 +-
 .../tune_conv2d_layer_cuda.html                    |    4 +-
 .../tune_with_autoscheduler/tune_network_cuda.html |    2 +-
 .../tune_with_autoscheduler/tune_network_x86.html  |    4 +-
 .../tune_with_autoscheduler/tune_sparse_x86.html   |  132 +-
 .../tune_with_autotvm/sg_execution_times.html      |    8 +-
 .../how_to/tune_with_autotvm/tune_conv2d_cuda.html |   26 +-
 docs/how_to/work_with_microtvm/micro_autotune.html |   16 +-
 docs/how_to/work_with_microtvm/micro_train.html    |   16 +-
 .../work_with_microtvm/sg_execution_times.html     |   10 +-
 .../how_to/work_with_relay/sg_execution_times.html |    8 +-
 docs/how_to/work_with_schedules/intrin_math.html   |    2 +-
 .../work_with_schedules/sg_execution_times.html    |   12 +-
 docs/how_to/work_with_schedules/tensorize.html     |    2 +-
 docs/reference/api/doxygen/classes.html            |   16 +-
 .../doxygen/classtvm_1_1runtime_1_1ObjectRef.html  |    2 +-
 ...asstvm_1_1runtime_1_1ObjectRef__coll__graph.svg |   12 +-
 ...script_1_1printer_1_1AssertDocNode-members.html |   25 +-
 ...stvm_1_1script_1_1printer_1_1AssertDocNode.html |    8 +-
 ...pt_1_1printer_1_1AssertDocNode__coll__graph.svg |  455 +-
 ...1_1printer_1_1AssertDocNode__inherit__graph.svg |   93 +-
 ...script_1_1printer_1_1AssignDocNode-members.html |   23 +-
 ...stvm_1_1script_1_1printer_1_1AssignDocNode.html |    8 +-
 ...pt_1_1printer_1_1AssignDocNode__coll__graph.svg |  457 +-
 ...1_1printer_1_1AssignDocNode__inherit__graph.svg |   93 +-
 ...pt_1_1printer_1_1AttrAccessDocNode-members.html |   25 +-
 ..._1_1script_1_1printer_1_1AttrAccessDocNode.html |    8 +-
 ..._1printer_1_1AttrAccessDocNode__coll__graph.svg |  413 +-
 ...rinter_1_1AttrAccessDocNode__inherit__graph.svg |   93 +-
 ..._1script_1_1printer_1_1CallDocNode-members.html |   23 +-
 ...asstvm_1_1script_1_1printer_1_1CallDocNode.html |    8 +-
 ...ript_1_1printer_1_1CallDocNode__coll__graph.svg |  459 +-
 ...t_1_1printer_1_1CallDocNode__inherit__graph.svg |   93 +-
 ...1script_1_1printer_1_1ClassDocNode-members.html |   23 +-
 ...sstvm_1_1script_1_1printer_1_1ClassDocNode.html |    8 +-
 ...ipt_1_1printer_1_1ClassDocNode__coll__graph.svg |  529 +-
 ..._1_1printer_1_1ClassDocNode__inherit__graph.svg |   93 +-
 ..._1script_1_1printer_1_1DictDocNode-members.html |   25 +-
 ...asstvm_1_1script_1_1printer_1_1DictDocNode.html |    8 +-
 ...ript_1_1printer_1_1DictDocNode__coll__graph.svg |  329 +-
 ...t_1_1printer_1_1DictDocNode__inherit__graph.svg |   93 +-
 ...vm_1_1script_1_1printer_1_1DocNode-members.html |   19 +-
 .../classtvm_1_1script_1_1printer_1_1DocNode.html  |   36 +-
 ..._1script_1_1printer_1_1DocNode__coll__graph.svg |  204 +-
 ...cript_1_1printer_1_1DocNode__inherit__graph.svg |  105 +-
 ..._1script_1_1printer_1_1ExprDocNode-members.html |   21 +-
 ...asstvm_1_1script_1_1printer_1_1ExprDocNode.html |    8 +-
 ...ript_1_1printer_1_1ExprDocNode__coll__graph.svg |  232 +-
 ...t_1_1printer_1_1ExprDocNode__inherit__graph.svg |   93 +-
 ...ript_1_1printer_1_1ExprStmtDocNode-members.html |   23 +-
 ...vm_1_1script_1_1printer_1_1ExprStmtDocNode.html |    8 +-
 ..._1_1printer_1_1ExprStmtDocNode__coll__graph.svg |  401 +-
 ...1printer_1_1ExprStmtDocNode__inherit__graph.svg |   93 +-
 ...1_1script_1_1printer_1_1ForDocNode-members.html |   23 +-
 ...lasstvm_1_1script_1_1printer_1_1ForDocNode.html |    8 +-
 ...cript_1_1printer_1_1ForDocNode__coll__graph.svg |  455 +-
 ...pt_1_1printer_1_1ForDocNode__inherit__graph.svg |   93 +-
 ...ript_1_1printer_1_1FunctionDocNode-members.html |   23 +-
 ...vm_1_1script_1_1printer_1_1FunctionDocNode.html |    8 +-
 ..._1_1printer_1_1FunctionDocNode__coll__graph.svg |  629 ++-
 ...1printer_1_1FunctionDocNode__inherit__graph.svg |   93 +-
 ..._1_1script_1_1printer_1_1IdDocNode-members.html |   23 +-
 ...classtvm_1_1script_1_1printer_1_1IdDocNode.html |    8 +-
 ...script_1_1printer_1_1IdDocNode__coll__graph.svg |  327 +-
 ...ipt_1_1printer_1_1IdDocNode__inherit__graph.svg |   93 +-
 ..._1_1script_1_1printer_1_1IfDocNode-members.html |   25 +-
 ...classtvm_1_1script_1_1printer_1_1IfDocNode.html |    8 +-
 ...script_1_1printer_1_1IfDocNode__coll__graph.svg |  455 +-
 ...ipt_1_1printer_1_1IfDocNode__inherit__graph.svg |   93 +-
 ...1script_1_1printer_1_1IndexDocNode-members.html |   25 +-
 ...sstvm_1_1script_1_1printer_1_1IndexDocNode.html |    8 +-
 ...ipt_1_1printer_1_1IndexDocNode__coll__graph.svg |  411 +-
 ..._1_1printer_1_1IndexDocNode__inherit__graph.svg |   93 +-
 ...script_1_1printer_1_1LambdaDocNode-members.html |   23 +-
 ...stvm_1_1script_1_1printer_1_1LambdaDocNode.html |    8 +-
 ...pt_1_1printer_1_1LambdaDocNode__coll__graph.svg |  413 +-
 ...1_1printer_1_1LambdaDocNode__inherit__graph.svg |   93 +-
 ..._1script_1_1printer_1_1ListDocNode-members.html |   23 +-
 ...asstvm_1_1script_1_1printer_1_1ListDocNode.html |    8 +-
 ...ript_1_1printer_1_1ListDocNode__coll__graph.svg |  327 +-
 ...t_1_1printer_1_1ListDocNode__inherit__graph.svg |   93 +-
 ...cript_1_1printer_1_1LiteralDocNode-members.html |   25 +-
 ...tvm_1_1script_1_1printer_1_1LiteralDocNode.html |    8 +-
 ...t_1_1printer_1_1LiteralDocNode__coll__graph.svg |  289 +-
 ..._1printer_1_1LiteralDocNode__inherit__graph.svg |   93 +-
 ...ipt_1_1printer_1_1OperationDocNode-members.html |   23 +-
 ...m_1_1script_1_1printer_1_1OperationDocNode.html |    8 +-
 ...1_1printer_1_1OperationDocNode__coll__graph.svg |  329 +-
 ...printer_1_1OperationDocNode__inherit__graph.svg |   93 +-
 ...script_1_1printer_1_1ReturnDocNode-members.html |   25 +-
 ...stvm_1_1script_1_1printer_1_1ReturnDocNode.html |    8 +-
 ...pt_1_1printer_1_1ReturnDocNode__coll__graph.svg |  401 +-
 ...1_1printer_1_1ReturnDocNode__inherit__graph.svg |   93 +-
 ...1script_1_1printer_1_1ScopeDocNode-members.html |   23 +-
 ...sstvm_1_1script_1_1printer_1_1ScopeDocNode.html |    8 +-
 ...ipt_1_1printer_1_1ScopeDocNode__coll__graph.svg |  505 +-
 ..._1_1printer_1_1ScopeDocNode__inherit__graph.svg |   93 +-
 ...1script_1_1printer_1_1SliceDocNode-members.html |   27 +-
 ...sstvm_1_1script_1_1printer_1_1SliceDocNode.html |    8 +-
 ...ipt_1_1printer_1_1SliceDocNode__coll__graph.svg |  303 +-
 ..._1_1printer_1_1SliceDocNode__inherit__graph.svg |   93 +-
 ...ipt_1_1printer_1_1StmtBlockDocNode-members.html |   23 +-
 ...m_1_1script_1_1printer_1_1StmtBlockDocNode.html |    8 +-
 ...1_1printer_1_1StmtBlockDocNode__coll__graph.svg |  299 +-
 ...printer_1_1StmtBlockDocNode__inherit__graph.svg |   93 +-
 ..._1script_1_1printer_1_1StmtDocNode-members.html |   21 +-
 ...asstvm_1_1script_1_1printer_1_1StmtDocNode.html |    8 +-
 ...ript_1_1printer_1_1StmtDocNode__coll__graph.svg |  297 +-
 ...t_1_1printer_1_1StmtDocNode__inherit__graph.svg |   93 +-
 ...1script_1_1printer_1_1TupleDocNode-members.html |   23 +-
 ...sstvm_1_1script_1_1printer_1_1TupleDocNode.html |    8 +-
 ...ipt_1_1printer_1_1TupleDocNode__coll__graph.svg |  327 +-
 ..._1_1printer_1_1TupleDocNode__inherit__graph.svg |   93 +-
 ...1script_1_1printer_1_1WhileDocNode-members.html |   23 +-
 ...sstvm_1_1script_1_1printer_1_1WhileDocNode.html |    8 +-
 ...ipt_1_1printer_1_1WhileDocNode__coll__graph.svg |  453 +-
 ..._1_1printer_1_1WhileDocNode__inherit__graph.svg |   93 +-
 docs/reference/api/doxygen/doc_8h_source.html      |  231 +-
 docs/reference/api/doxygen/functions_func_r.html   |    2 +-
 docs/reference/api/doxygen/functions_func_t.html   |    4 +-
 docs/reference/api/doxygen/functions_r.html        |    2 +-
 docs/reference/api/doxygen/functions_s.html        |   17 +-
 docs/reference/api/doxygen/functions_t.html        |    4 +-
 docs/reference/api/doxygen/functions_v.html        |    8 +-
 docs/reference/api/doxygen/functions_vars_s.html   |    3 +
 docs/reference/api/doxygen/hierarchy.html          |  851 +--
 docs/reference/api/doxygen/inherit_graph_10.svg    |   16 +-
 docs/reference/api/doxygen/inherit_graph_114.svg   |   32 +-
 docs/reference/api/doxygen/inherit_graph_123.svg   | 5938 ++++++++++----------
 docs/reference/api/doxygen/inherit_graph_197.svg   |    8 +-
 docs/reference/api/doxygen/inherit_graph_211.svg   |   16 +-
 docs/reference/api/doxygen/inherit_graph_212.svg   |   16 +-
 docs/reference/api/doxygen/inherit_graph_39.svg    |   16 +-
 docs/reference/api/doxygen/inherit_graph_43.svg    |    8 +-
 docs/reference/api/doxygen/inherits.html           |    2 +-
 docs/reference/api/doxygen/search/all_10.js        |    2 +-
 docs/reference/api/doxygen/search/all_11.js        |    2 +-
 docs/reference/api/doxygen/search/all_13.js        |    8 +-
 docs/reference/api/doxygen/search/all_14.js        |   11 +-
 docs/reference/api/doxygen/search/all_15.js        |   12 +-
 docs/reference/api/doxygen/search/all_16.js        |    2 +-
 docs/reference/api/doxygen/search/all_17.js        |    4 +-
 docs/reference/api/doxygen/search/all_18.js        |    2 +-
 docs/reference/api/doxygen/search/all_2.js         |    1 +
 docs/reference/api/doxygen/search/all_e.js         |    4 +-
 docs/reference/api/doxygen/search/classes_0.js     |    1 +
 docs/reference/api/doxygen/search/classes_10.js    |    2 +-
 docs/reference/api/doxygen/search/classes_11.js    |    6 +-
 docs/reference/api/doxygen/search/functions_10.js  |    2 +-
 docs/reference/api/doxygen/search/functions_12.js  |    4 +-
 docs/reference/api/doxygen/search/functions_13.js  |    4 +-
 docs/reference/api/doxygen/search/functions_14.js  |    2 +-
 docs/reference/api/doxygen/search/functions_15.js  |    2 +-
 docs/reference/api/doxygen/search/functions_16.js  |    2 +-
 docs/reference/api/doxygen/search/functions_d.js   |    4 +-
 docs/reference/api/doxygen/search/variables_11.js  |    1 +
 docs/reference/api/python/auto_scheduler.html      |    4 +-
 .../api/typedoc/classes/bytestreamreader.html      |   12 +-
 .../api/typedoc/classes/cachedcallstack.html       |   34 +-
 docs/reference/api/typedoc/classes/dldatatype.html |   12 +-
 docs/reference/api/typedoc/classes/dldevice.html   |   10 +-
 .../reference/api/typedoc/classes/environment.html |   12 +-
 docs/reference/api/typedoc/classes/ffilibrary.html |   20 +-
 .../api/typedoc/classes/graphexecutor.html         |   16 +-
 docs/reference/api/typedoc/classes/instance.html   |   40 +-
 docs/reference/api/typedoc/classes/memory.html     |   34 +-
 docs/reference/api/typedoc/classes/module.html     |   10 +-
 docs/reference/api/typedoc/classes/ndarray.html    |   22 +-
 .../api/typedoc/classes/packedfunccell.html        |    6 +-
 docs/reference/api/typedoc/classes/rpcserver.html  |   14 +-
 docs/reference/api/typedoc/classes/scalar.html     |    6 +-
 .../api/typedoc/classes/webgpucontext.html         |   12 +-
 docs/reference/api/typedoc/enums/argtypecode.html  |   30 +-
 .../api/typedoc/enums/aynccallbackcode.html        |    4 +-
 .../api/typedoc/enums/dldatatypecode.html          |    8 +-
 .../api/typedoc/enums/rpcserverstate.html          |   12 +-
 docs/reference/api/typedoc/enums/sizeof.html       |   18 +-
 docs/reference/api/typedoc/index.html              |  112 +-
 .../api/typedoc/interfaces/disposable.html         |    2 +-
 .../api/typedoc/interfaces/functioninfo.html       |    6 +-
 .../api/typedoc/interfaces/libraryprovider.html    |    4 +-
 docs/searchindex.js                                |    2 +-
 .../vta/tutorials/autotvm/sg_execution_times.html  |    6 +-
 .../tutorials/frontend/deploy_classification.html  |    2 +-
 .../vta/tutorials/frontend/deploy_detection.html   |    2 +-
 .../vta/tutorials/frontend/sg_execution_times.html |    6 +-
 .../vta/tutorials/optimize/sg_execution_times.html |    6 +-
 docs/topic/vta/tutorials/sg_execution_times.html   |    6 +-
 docs/tutorial/auto_scheduler_matmul_x86.html       |    2 +-
 docs/tutorial/autotvm_matmul_x86.html              |   20 +-
 docs/tutorial/autotvm_relay_x86.html               |  262 +-
 docs/tutorial/cross_compilation_and_rpc.html       |    2 +-
 docs/tutorial/intro_topi.html                      |    2 +-
 docs/tutorial/sg_execution_times.html              |   22 +-
 docs/tutorial/tensor_expr_get_started.html         |   44 +-
 263 files changed, 11627 insertions(+), 10376 deletions(-)

diff --git a/docs/_sources/how_to/compile_models/from_darknet.rst.txt b/docs/_sources/how_to/compile_models/from_darknet.rst.txt
index 7b6d1b92b..47881e81b 100644
--- a/docs/_sources/how_to/compile_models/from_darknet.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_darknet.rst.txt
@@ -317,7 +317,7 @@ The process is no different from other examples.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  1.119 seconds)
+   **Total running time of the script:** ( 1 minutes  2.912 seconds)
 
 
 .. _sphx_glr_download_how_to_compile_models_from_darknet.py:
diff --git a/docs/_sources/how_to/compile_models/from_mxnet.rst.txt b/docs/_sources/how_to/compile_models/from_mxnet.rst.txt
index 975672a93..c7d498660 100644
--- a/docs/_sources/how_to/compile_models/from_mxnet.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_mxnet.rst.txt
@@ -115,7 +115,7 @@ In this section, we download a pretrained imagenet model and classify an image.
 
  .. code-block:: none
 
-    Downloading /workspace/.mxnet/models/resnet18_v1-a0666292.zipf54f9a8e-0995-40d6-9434-9d790e8f74a1 from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/resnet18_v1-a0666292.zip...
+    Downloading /workspace/.mxnet/models/resnet18_v1-a0666292.zipf5d803c2-ad5a-44bd-9d02-d1c583669666 from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/resnet18_v1-a0666292.zip...
     x (1, 3, 224, 224)
 
 
diff --git a/docs/_sources/how_to/compile_models/from_oneflow.rst.txt b/docs/_sources/how_to/compile_models/from_oneflow.rst.txt
index 300192e16..8afa4c70d 100644
--- a/docs/_sources/how_to/compile_models/from_oneflow.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_oneflow.rst.txt
@@ -113,7 +113,7 @@ Load a pretrained OneFlow model and save model
  .. code-block:: none
 
     Downloading: "https://oneflow-public.oss-cn-beijing.aliyuncs.com/model_zoo/flowvision/classification/ResNet/resnet18.zip" to /workspace/.oneflow/flowvision_cache/resnet18.zip
-
      0%|          | 0.00/41.5M [00:00<?, ?B/s]
     19%|#9        | 7.99M/41.5M [00:00<00:00, 54.0MB/s]
     38%|###7      | 15.7M/41.5M [00:00<00:00, 59.2MB/s]
     52%|#####1    | 21.4M/41.5M [00:00<00:00, 40.0MB/s]
     62%|######1   | 25.6M/41.5M [00:00<00:00, 38.6MB/s]
     77%|#######7  | 32.0M/41.5M [00:00<00:00, 38.8MB/s]
     89%|########9 | 37.0M/41.5M [00:00<00:00, 42.2MB/s]
    100%|##########| 41.5M/41.5M [00:00<00:00, 43.9MB/s]
+
      0%|          | 0.00/41.5M [00:00<?, ?B/s]
     15%|#5        | 6.33M/41.5M [00:00<00:00, 54.3MB/s]
     28%|##7       | 11.5M/41.5M [00:00<00:00, 44.9MB/s]
     54%|#####3    | 22.3M/41.5M [00:00<00:00, 66.0MB/s]
     77%|#######7  | 32.0M/41.5M [00:00<00:00, 63.5MB/s]
     92%|#########2| 38.3M/41.5M [00:00<00:00, 54.2MB/s]
    100%|##########| 41.5M/41.5M [00:00<00:00, 57.1MB/s]
 
 
 
diff --git a/docs/_sources/how_to/compile_models/from_pytorch.rst.txt b/docs/_sources/how_to/compile_models/from_pytorch.rst.txt
index 53cff11c3..94da18361 100644
--- a/docs/_sources/how_to/compile_models/from_pytorch.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_pytorch.rst.txt
@@ -94,7 +94,7 @@ Load a pretrained PyTorch model
  .. 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]
     34%|###3      | 15.1M/44.7M [00:00<00:00, 158MB/s]
     86%|########5 | 38.4M/44.7M [00:00<00:00, 209MB/s]
    100%|##########| 44.7M/44.7M [00:00<00:00, 205MB/s]
+
      0%|          | 0.00/44.7M [00:00<?, ?B/s]
     46%|####6     | 20.7M/44.7M [00:00<00:00, 217MB/s]
    100%|##########| 44.7M/44.7M [00:00<00:00, 248MB/s]
 
 
 
diff --git a/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt b/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt
index 307e8ba21..043d5f21b 100644
--- a/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt
@@ -423,7 +423,7 @@ Run the corresponding model on tensorflow
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  2.617 seconds)
+   **Total running time of the script:** ( 1 minutes  1.073 seconds)
 
 
 .. _sphx_glr_download_how_to_compile_models_from_tensorflow.py:
diff --git a/docs/_sources/how_to/compile_models/sg_execution_times.rst.txt b/docs/_sources/how_to/compile_models/sg_execution_times.rst.txt
index 82bb9444f..3aa8145ef 100644
--- a/docs/_sources/how_to/compile_models/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/compile_models/sg_execution_times.rst.txt
@@ -5,26 +5,26 @@
 
 Computation times
 =================
-**05:19.145** total execution time for **how_to_compile_models** files:
+**04:57.044** total execution time for **how_to_compile_models** files:
 
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_tensorflow.py` (``from_tensorflow.py``) | 01:02.617 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_darknet.py` (``from_darknet.py``)       | 01:02.912 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_darknet.py` (``from_darknet.py``)       | 01:01.119 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_tensorflow.py` (``from_tensorflow.py``) | 01:01.073 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_pytorch.py` (``from_pytorch.py``)       | 00:41.879 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_paddle.py` (``from_paddle.py``)         | 00:38.679 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_paddle.py` (``from_paddle.py``)         | 00:38.043 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_oneflow.py` (``from_oneflow.py``)       | 00:27.162 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_oneflow.py` (``from_oneflow.py``)       | 00:27.241 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_tflite.py` (``from_tflite.py``)         | 00:24.815 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_mxnet.py` (``from_mxnet.py``)           | 00:24.421 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_mxnet.py` (``from_mxnet.py``)           | 00:24.448 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_tflite.py` (``from_tflite.py``)         | 00:23.919 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_coreml.py` (``from_coreml.py``)         | 00:22.288 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_coreml.py` (``from_coreml.py``)         | 00:22.921 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_pytorch.py` (``from_pytorch.py``)       | 00:19.337 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_keras.py` (``from_keras.py``)           | 00:14.721 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_keras.py` (``from_keras.py``)           | 00:13.945 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_onnx.py` (``from_onnx.py``)             | 00:02.264 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_onnx.py` (``from_onnx.py``)             | 00:02.385 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/deploy_models/deploy_model_on_android.rst.txt b/docs/_sources/how_to/deploy_models/deploy_model_on_android.rst.txt
index d5a0795ef..e31a3e8e9 100644
--- a/docs/_sources/how_to/deploy_models/deploy_model_on_android.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_model_on_android.rst.txt
@@ -441,7 +441,7 @@ Execute on TVM
     Evaluate inference time cost...
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-      15.5905      15.5442      16.0856      15.4125       0.1944   
+      15.9597      15.7675      16.6716      15.6476       0.3431   
                
 
 
diff --git a/docs/_sources/how_to/deploy_models/deploy_object_detection_pytorch.rst.txt b/docs/_sources/how_to/deploy_models/deploy_object_detection_pytorch.rst.txt
index fc8787cb3..a6a35aa51 100644
--- a/docs/_sources/how_to/deploy_models/deploy_object_detection_pytorch.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_object_detection_pytorch.rst.txt
@@ -123,7 +123,7 @@ Load pre-trained maskrcnn from torchvision and do tracing
  .. code-block:: none
 
     Downloading: "https://download.pytorch.org/models/maskrcnn_resnet50_fpn_coco-bf2d0c1e.pth" to /workspace/.cache/torch/hub/checkpoints/maskrcnn_resnet50_fpn_coco-bf2d0c1e.pth
-
      0%|          | 0.00/170M [00:00<?, ?B/s]
      8%|7         | 13.3M/170M [00:00<00:01, 139MB/s]
     20%|##        | 34.5M/170M [00:00<00:00, 188MB/s]
     33%|###2      | 55.4M/170M [00:00<00:00, 202MB/s]
     45%|####5     | 76.9M/170M [00:00<00:00, 211MB/s]
     58%|#####8    | 98.5M/170M [00:00<00:00, 217MB/s]
     72%|#######2  | 122M/170M [00:00<00:00, 228MB/s] 
     86%|########6 | 146M/170M [00:00<00:00, 236MB/s]
    100%|##########| 170M/170M [00:00<00:00, 223MB/s]
+
      0%|          | 0.00/170M [00:00<?, ?B/s]
      3%|2         | 4.66M/170M [00:00<00:03, 48.8MB/s]
      5%|5         | 9.31M/170M [00:00<00:04, 40.5MB/s]
     12%|#2        | 20.6M/170M [00:00<00:02, 72.7MB/s]
     22%|##1       | 37.0M/170M [00:00<00:01, 109MB/s] 
     34%|###4      | 58.1M/170M [00:00<00:00, 147MB/s]
     49%|####9     | 83.9M/170M [00:00<00:00, 188MB/s]
     65%|######4   | 110M/170M [00:00<00:00, 215MB/s] 
     80%|#######9  | 135M/170M [00:00<00:00, 231MB/s]
     95%|#########4| 161M/170M [00:00<00:00, 243MB/s]
    100%|##########| 170M/170M [00:00<00:00, 183MB/s]
     /usr/local/lib/python3.7/dist-packages/torch/nn/functional.py:3878: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).
       for i in range(dim)
     /usr/local/lib/python3.7/dist-packages/torchvision/models/detection/anchor_utils.py:127: UserWarning: __floordiv__ is deprecated, and its behavior will change in a future version of pytorch. It currently rounds toward 0 (like the 'trunc' function NOT 'floor'). This results in incorrect rounding for negative values. To keep the current behavior, use torch.div(a, b, rounding_mode='trunc'), or for actual floor division, use torch.div(a, b, rounding_mode='floor').
@@ -292,7 +292,7 @@ Get boxes with score larger than 0.9
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 2 minutes  56.718 seconds)
+   **Total running time of the script:** ( 2 minutes  55.108 seconds)
 
 
 .. _sphx_glr_download_how_to_deploy_models_deploy_object_detection_pytorch.py:
diff --git a/docs/_sources/how_to/deploy_models/deploy_prequantized.rst.txt b/docs/_sources/how_to/deploy_models/deploy_prequantized.rst.txt
index edde5b4c8..3ed50d9ac 100644
--- a/docs/_sources/how_to/deploy_models/deploy_prequantized.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_prequantized.rst.txt
@@ -232,7 +232,7 @@ training. Other models require a full post training calibration.
  .. code-block:: none
 
     Downloading: "https://download.pytorch.org/models/mobilenet_v2-b0353104.pth" to /workspace/.cache/torch/hub/checkpoints/mobilenet_v2-b0353104.pth
-
      0%|          | 0.00/13.6M [00:00<?, ?B/s]
    100%|##########| 13.6M/13.6M [00:00<00:00, 205MB/s]
+
      0%|          | 0.00/13.6M [00:00<?, ?B/s]
     91%|#########1| 12.4M/13.6M [00:00<00:00, 130MB/s]
    100%|##########| 13.6M/13.6M [00:00<00:00, 127MB/s]
 
 
 
@@ -412,7 +412,7 @@ Here we give an example of how to measure performance of TVM compiled models.
 
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-      90.2968      90.2124      91.2757      90.0580       0.2129   
+      90.3148      90.2032      95.9629      90.0734       0.6554   
                
 
 
@@ -461,7 +461,7 @@ TODO
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  8.983 seconds)
+   **Total running time of the script:** ( 1 minutes  8.316 seconds)
 
 
 .. _sphx_glr_download_how_to_deploy_models_deploy_prequantized.py:
diff --git a/docs/_sources/how_to/deploy_models/deploy_prequantized_tflite.rst.txt b/docs/_sources/how_to/deploy_models/deploy_prequantized_tflite.rst.txt
index 291a2d10c..c9fcc43c2 100644
--- a/docs/_sources/how_to/deploy_models/deploy_prequantized_tflite.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_prequantized_tflite.rst.txt
@@ -439,7 +439,7 @@ Here we give an example of how to measure performance of TVM compiled models.
 
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-      119.6053     119.5991     121.5618     118.8711      0.3607   
+      119.7879     119.7404     125.6071     118.9268      0.7010   
                
 
 
@@ -476,7 +476,7 @@ Here we give an example of how to measure performance of TVM compiled models.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  52.254 seconds)
+   **Total running time of the script:** ( 1 minutes  54.677 seconds)
 
 
 .. _sphx_glr_download_how_to_deploy_models_deploy_prequantized_tflite.py:
diff --git a/docs/_sources/how_to/deploy_models/deploy_quantized.rst.txt b/docs/_sources/how_to/deploy_models/deploy_quantized.rst.txt
index a51f2e046..4801a9820 100644
--- a/docs/_sources/how_to/deploy_models/deploy_quantized.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_quantized.rst.txt
@@ -255,7 +255,7 @@ We create a Relay VM to build and execute the model.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  18.747 seconds)
+   **Total running time of the script:** ( 1 minutes  29.317 seconds)
 
 
 .. _sphx_glr_download_how_to_deploy_models_deploy_quantized.py:
diff --git a/docs/_sources/how_to/deploy_models/deploy_ssd_gluoncv.rst.txt b/docs/_sources/how_to/deploy_models/deploy_ssd_gluoncv.rst.txt
index 35abf5c9f..be7963f77 100644
--- a/docs/_sources/how_to/deploy_models/deploy_ssd_gluoncv.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_ssd_gluoncv.rst.txt
@@ -158,7 +158,7 @@ Convert and compile model for CPU.
             data: None
       input_sym_arg_type = in_param.infer_type()[0]
     Downloading /workspace/.mxnet/models/ssd_512_resnet50_v1_voc-9c8b225a.zip from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/ssd_512_resnet50_v1_voc-9c8b225a.zip...
-
      0%|          | 0/132723 [00:00<?, ?KB/s]
      4%|4         | 5452/132723 [00:00<00:02, 54512.90KB/s]
     10%|9         | 12695/132723 [00:00<00:01, 65048.38KB/s]
     14%|#4        | 19200/132723 [00:00<00:02, 42469.21KB/s]
     19%|#9        | 25529/132723 [00:00<00:02, 48686.94KB/s]
     25%|##4       | 32757/132723 [00:00<00:02, 45944.54KB/s]
     29%|##9       | 39112/132723 [00:00<00:01, 50528.06KB/s]
     35%|###4      | 45917/132723 [00:00<00:01, 55277.64KB/s]
     40%|###9      | 52932/132723 [00:00<00:01, 59421.19KB/s]
     45%|####5     | 59771/132723 [00:01<00:01, 61977.18KB/s]
     50%|#####     | 66635/132723 [00:01<00:01, 63904.25KB/s]
     55%|#####5    | 73398/132723 [00:01<00:00, 64992.39KB/s]
     61%|######    | 80436/132723 [00:01<00:00, 66577.98KB/s]
     66%|######5   | 87190/132723 [00:01<00:00, 66071.67KB/s]
     71%|#######1  | 94321/132723 [00:01<00:00, 67614.41KB/s]
     77%|#######6  | 101709/132723 [00:01<00:00, 69468.97KB/s]
     82%|########2 
 | 109000/132723 [00:01<00:00, 70475.53KB/s]
     88%|########7 | 116357/132723 [00:01<00:00, 71396.41KB/s]
     93%|#########3| 123677/132723 [00:01<00:00, 71931.60KB/s]
     99%|#########8| 130969/132723 [00:02<00:00, 72223.94KB/s]
    100%|##########| 132723/132723 [00:02<00:00, 62750.84KB/s]
+
      0%|          | 0/132723 [00:00<?, ?KB/s]
      4%|4         | 5749/132723 [00:00<00:02, 57476.90KB/s]
     11%|#         | 14100/132723 [00:00<00:01, 72785.32KB/s]
     17%|#6        | 22492/132723 [00:00<00:01, 77866.99KB/s]
     23%|##3       | 30805/132723 [00:00<00:01, 79941.88KB/s]
     29%|##9       | 38800/132723 [00:00<00:01, 79732.96KB/s]
     36%|###5      | 47187/132723 [00:00<00:01, 81135.42KB/s]
     42%|####1     | 55544/132723 [00:00<00:00, 81927.40KB/s]
     48%|####8     | 63885/132723 [00:00<00:00, 82395.95KB/s]
     54%|#####4    | 72292/132723 [00:00<00:00, 82916.76KB/s]
     61%|######    | 80733/132723 [00:01<00:00, 83371.50KB/s]
     67%|######7   | 89142/132723 [00:01<00:00, 83588.17KB/s]
     74%|#######3  | 97580/132723 [00:01<00:00, 83825.85KB/s]
     80%|#######9  | 105963/132723 [00:01<00:00, 83790.17KB/s]
     86%|########6 | 114413/132723 [00:01<00:00, 83995.25KB/s]
     93%|#########2| 122813/132723 [00:01<00:00, 83965.03KB/s]
     99%|########
 #8| 131245/132723 [00:01<00:00, 84064.73KB/s]
    100%|##########| 132723/132723 [00:01<00:00, 81889.23KB/s]
 
 
 
@@ -241,7 +241,7 @@ Display result
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 2 minutes  35.325 seconds)
+   **Total running time of the script:** ( 2 minutes  34.251 seconds)
 
 
 .. _sphx_glr_download_how_to_deploy_models_deploy_ssd_gluoncv.py:
diff --git a/docs/_sources/how_to/deploy_models/sg_execution_times.rst.txt b/docs/_sources/how_to/deploy_models/sg_execution_times.rst.txt
index 4449865e2..a3b7a076e 100644
--- a/docs/_sources/how_to/deploy_models/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/deploy_models/sg_execution_times.rst.txt
@@ -5,24 +5,24 @@
 
 Computation times
 =================
-**11:05.387** total execution time for **how_to_deploy_models** files:
+**11:15.063** total execution time for **how_to_deploy_models** files:
 
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_object_detection_pytorch.py` (``deploy_object_detection_pytorch.py``) | 02:56.718 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_object_detection_pytorch.py` (``deploy_object_detection_pytorch.py``) | 02:55.108 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_ssd_gluoncv.py` (``deploy_ssd_gluoncv.py``)                           | 02:35.325 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_ssd_gluoncv.py` (``deploy_ssd_gluoncv.py``)                           | 02:34.251 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)           | 01:52.254 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)           | 01:54.677 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_quantized.py` (``deploy_quantized.py``)                               | 01:18.747 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_quantized.py` (``deploy_quantized.py``)                               | 01:29.317 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized.py` (``deploy_prequantized.py``)                         | 01:08.983 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized.py` (``deploy_prequantized.py``)                         | 01:08.316 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_android.py` (``deploy_model_on_android.py``)                 | 00:29.017 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_android.py` (``deploy_model_on_android.py``)                 | 00:29.376 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_nano.py` (``deploy_model_on_nano.py``)                       | 00:22.199 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_nano.py` (``deploy_model_on_nano.py``)                       | 00:22.163 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)                       | 00:22.139 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)                       | 00:21.847 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_deploy_models_deploy_sparse.py` (``deploy_sparse.py``)                                     | 00:00.006 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/extend_tvm/bring_your_own_datatypes.rst.txt b/docs/_sources/how_to/extend_tvm/bring_your_own_datatypes.rst.txt
index d7c4453b5..db54d37e3 100644
--- a/docs/_sources/how_to/extend_tvm/bring_your_own_datatypes.rst.txt
+++ b/docs/_sources/how_to/extend_tvm/bring_your_own_datatypes.rst.txt
@@ -476,7 +476,7 @@ First let us define two helper functions to get the mobilenet model and a cat im
 
  .. code-block:: none
 
-    Downloading /workspace/.mxnet/models/mobilenet0.25-9f83e440.zip06367bef-40d7-423f-9d31-58ec1560a6ef from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/mobilenet0.25-9f83e440.zip...
+    Downloading /workspace/.mxnet/models/mobilenet0.25-9f83e440.zipefccc711-5aa8-4d8d-b01a-b3feb05bbd7d from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/mobilenet0.25-9f83e440.zip...
 
 
 
diff --git a/docs/_sources/how_to/extend_tvm/sg_execution_times.rst.txt b/docs/_sources/how_to/extend_tvm/sg_execution_times.rst.txt
index 559ecfec5..76f9a9ce3 100644
--- a/docs/_sources/how_to/extend_tvm/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/extend_tvm/sg_execution_times.rst.txt
@@ -5,14 +5,14 @@
 
 Computation times
 =================
-**00:40.104** total execution time for **how_to_extend_tvm** files:
+**00:40.520** total execution time for **how_to_extend_tvm** files:
 
 +-------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_extend_tvm_bring_your_own_datatypes.py` (``bring_your_own_datatypes.py``) | 00:36.972 | 0.0 MB |
+| :ref:`sphx_glr_how_to_extend_tvm_bring_your_own_datatypes.py` (``bring_your_own_datatypes.py``) | 00:37.386 | 0.0 MB |
 +-------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_extend_tvm_use_pass_instrument.py` (``use_pass_instrument.py``)           | 00:02.209 | 0.0 MB |
+| :ref:`sphx_glr_how_to_extend_tvm_use_pass_instrument.py` (``use_pass_instrument.py``)           | 00:02.204 | 0.0 MB |
 +-------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_extend_tvm_use_pass_infra.py` (``use_pass_infra.py``)                     | 00:00.916 | 0.0 MB |
+| :ref:`sphx_glr_how_to_extend_tvm_use_pass_infra.py` (``use_pass_infra.py``)                     | 00:00.921 | 0.0 MB |
 +-------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_extend_tvm_low_level_custom_pass.py` (``low_level_custom_pass.py``)       | 00:00.008 | 0.0 MB |
+| :ref:`sphx_glr_how_to_extend_tvm_low_level_custom_pass.py` (``low_level_custom_pass.py``)       | 00:00.009 | 0.0 MB |
 +-------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/extend_tvm/use_pass_instrument.rst.txt b/docs/_sources/how_to/extend_tvm/use_pass_instrument.rst.txt
index 85f165f4a..4089b255d 100644
--- a/docs/_sources/how_to/extend_tvm/use_pass_instrument.rst.txt
+++ b/docs/_sources/how_to/extend_tvm/use_pass_instrument.rst.txt
@@ -216,10 +216,10 @@ profile the execution time of each passes.
  .. code-block:: none
 
     Printing results of timing profile...
-    InferType: 6516us [6516us] (45.96%; 45.96%)
-    FoldScaleAxis: 7662us [5us] (54.04%; 54.04%)
-            FoldConstant: 7657us [1546us] (54.00%; 99.93%)
-                    InferType: 6111us [6111us] (43.10%; 79.81%)
+    InferType: 6540us [6540us] (46.08%; 46.08%)
+    FoldScaleAxis: 7654us [5us] (53.92%; 53.92%)
+            FoldConstant: 7648us [1570us] (53.89%; 99.93%)
+                    InferType: 6078us [6078us] (42.82%; 79.47%)
 
 
 
@@ -258,10 +258,10 @@ Refer to following sections and :py:func:`tvm.instrument.pass_instrument` for th
  .. code-block:: none
 
     Printing results of timing profile...
-    InferType: 6150us [6150us] (44.74%; 44.74%)
-    FoldScaleAxis: 7595us [5us] (55.26%; 55.26%)
-            FoldConstant: 7590us [1556us] (55.22%; 99.94%)
-                    InferType: 6034us [6034us] (43.91%; 79.50%)
+    InferType: 6098us [6098us] (44.60%; 44.60%)
+    FoldScaleAxis: 7574us [5us] (55.40%; 55.40%)
+            FoldConstant: 7569us [1568us] (55.36%; 99.94%)
+                    InferType: 6002us [6002us] (43.90%; 79.29%)
 
 
 
diff --git a/docs/_sources/how_to/optimize_operators/opt_conv_cuda.rst.txt b/docs/_sources/how_to/optimize_operators/opt_conv_cuda.rst.txt
index 138dc3fe4..b5549e2a5 100644
--- a/docs/_sources/how_to/optimize_operators/opt_conv_cuda.rst.txt
+++ b/docs/_sources/how_to/optimize_operators/opt_conv_cuda.rst.txt
@@ -340,7 +340,7 @@ latency of convolution.
 
  .. code-block:: none
 
-    Convolution: 45.313227 ms
+    Convolution: 47.067924 ms
 
 
 
diff --git a/docs/_sources/how_to/optimize_operators/opt_conv_tensorcore.rst.txt b/docs/_sources/how_to/optimize_operators/opt_conv_tensorcore.rst.txt
index e46cdb62c..230708ec8 100644
--- a/docs/_sources/how_to/optimize_operators/opt_conv_tensorcore.rst.txt
+++ b/docs/_sources/how_to/optimize_operators/opt_conv_tensorcore.rst.txt
@@ -671,7 +671,7 @@ be able to run on our build server
 
  .. code-block:: none
 
-    conv2d with tensor core: 6.977935 ms
+    conv2d with tensor core: 10.398550 ms
 
 
 
diff --git a/docs/_sources/how_to/optimize_operators/opt_gemm.rst.txt b/docs/_sources/how_to/optimize_operators/opt_gemm.rst.txt
index 245f5cae8..b681a0952 100644
--- a/docs/_sources/how_to/optimize_operators/opt_gemm.rst.txt
+++ b/docs/_sources/how_to/optimize_operators/opt_gemm.rst.txt
@@ -143,8 +143,8 @@ Then we write a baseline implementation, the simplest way to write a matrix mult
 
  .. code-block:: none
 
-    Numpy running time: 0.018468
-    Baseline: 3.546824
+    Numpy running time: 0.019086
+    Baseline: 3.455212
 
 
 
@@ -239,7 +239,7 @@ fill 32 * 32 * sizeof(float) which is 4KB in the cache whose total size is 32KB
 
  .. code-block:: none
 
-    Opt1: 0.309027
+    Opt1: 0.290643
 
 
 
@@ -342,7 +342,7 @@ In this tutorial, we chose to vectorize the inner loop row data since it is cach
 
  .. code-block:: none
 
-    Opt2: 0.339654
+    Opt2: 0.333005
 
 
 
@@ -438,7 +438,7 @@ the access pattern for A matrix is more cache friendly.
 
  .. code-block:: none
 
-    Opt3: 0.118104
+    Opt3: 0.117940
 
 
 
@@ -563,7 +563,7 @@ flattening.
 
  .. code-block:: none
 
-    Opt4: 0.111165
+    Opt4: 0.111259
 
 
 
@@ -685,7 +685,7 @@ write to C when all the block results are ready.
 
  .. code-block:: none
 
-    Opt5: 0.111555
+    Opt5: 0.111554
 
 
 
@@ -810,7 +810,7 @@ Futhermore, we can also utilize multi-core processors to do the thread-level par
 
  .. code-block:: none
 
-    Opt6: 0.145264
+    Opt6: 0.145036
 
 
 
diff --git a/docs/_sources/how_to/optimize_operators/sg_execution_times.rst.txt b/docs/_sources/how_to/optimize_operators/sg_execution_times.rst.txt
index 53b6039f8..ff2b4f29c 100644
--- a/docs/_sources/how_to/optimize_operators/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/optimize_operators/sg_execution_times.rst.txt
@@ -5,12 +5,12 @@
 
 Computation times
 =================
-**00:34.988** total execution time for **how_to_optimize_operators** files:
+**00:34.461** total execution time for **how_to_optimize_operators** files:
 
 +-----------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_optimize_operators_opt_gemm.py` (``opt_gemm.py``)                       | 00:32.771 | 0.0 MB |
+| :ref:`sphx_glr_how_to_optimize_operators_opt_gemm.py` (``opt_gemm.py``)                       | 00:32.233 | 0.0 MB |
 +-----------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``) | 00:01.205 | 0.0 MB |
+| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``) | 00:01.256 | 0.0 MB |
 +-----------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_cuda.py` (``opt_conv_cuda.py``)             | 00:01.011 | 0.0 MB |
+| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_cuda.py` (``opt_conv_cuda.py``)             | 00:00.972 | 0.0 MB |
 +-----------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/tune_with_autoscheduler/sg_execution_times.rst.txt b/docs/_sources/how_to/tune_with_autoscheduler/sg_execution_times.rst.txt
index 3a2e7041d..dfe946f67 100644
--- a/docs/_sources/how_to/tune_with_autoscheduler/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/tune_with_autoscheduler/sg_execution_times.rst.txt
@@ -5,18 +5,18 @@
 
 Computation times
 =================
-**06:02.354** total execution time for **how_to_tune_with_autoscheduler** files:
+**05:58.803** total execution time for **how_to_tune_with_autoscheduler** files:
 
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_conv2d_layer_cuda.py` (``tune_conv2d_layer_cuda.py``) | 03:16.733 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_conv2d_layer_cuda.py` (``tune_conv2d_layer_cuda.py``) | 03:14.149 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_x86.py` (``tune_network_x86.py``)             | 01:22.126 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_x86.py` (``tune_network_x86.py``)             | 01:22.438 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_cuda.py` (``tune_network_cuda.py``)           | 00:46.462 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_cuda.py` (``tune_network_cuda.py``)           | 00:45.945 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_sparse_x86.py` (``tune_sparse_x86.py``)               | 00:19.207 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_sparse_x86.py` (``tune_sparse_x86.py``)               | 00:18.884 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_mali.py` (``tune_network_mali.py``)           | 00:08.985 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_mali.py` (``tune_network_mali.py``)           | 00:08.732 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_arm.py` (``tune_network_arm.py``)             | 00:08.842 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_arm.py` (``tune_network_arm.py``)             | 00:08.656 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.rst.txt b/docs/_sources/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.rst.txt
index 5da86a31e..88a9a50da 100644
--- a/docs/_sources/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.rst.txt
+++ b/docs/_sources/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.rst.txt
@@ -771,7 +771,7 @@ We build the binary and check its correctness and performance.
 
  .. code-block:: none
 
-    Execution time of this operator: 0.362 ms
+    Execution time of this operator: 0.357 ms
 
 
 
@@ -1378,7 +1378,7 @@ In the example below we resume the status and do more 5 trials.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 3 minutes  16.733 seconds)
+   **Total running time of the script:** ( 3 minutes  14.149 seconds)
 
 
 .. _sphx_glr_download_how_to_tune_with_autoscheduler_tune_conv2d_layer_cuda.py:
diff --git a/docs/_sources/how_to/tune_with_autoscheduler/tune_network_cuda.rst.txt b/docs/_sources/how_to/tune_with_autoscheduler/tune_network_cuda.rst.txt
index 5581f1683..cc8b712cb 100644
--- a/docs/_sources/how_to/tune_with_autoscheduler/tune_network_cuda.rst.txt
+++ b/docs/_sources/how_to/tune_with_autoscheduler/tune_network_cuda.rst.txt
@@ -647,7 +647,7 @@ so we can read the log file and load the best schedules.
     Evaluate inference time cost...
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-       9.8932       9.8938       9.9346       9.8512       0.0341   
+       9.7652       9.7798       9.7858       9.7299       0.0251   
                
 
 
diff --git a/docs/_sources/how_to/tune_with_autoscheduler/tune_network_x86.rst.txt b/docs/_sources/how_to/tune_with_autoscheduler/tune_network_x86.rst.txt
index d0f7d0320..8ae36881b 100644
--- a/docs/_sources/how_to/tune_with_autoscheduler/tune_network_x86.rst.txt
+++ b/docs/_sources/how_to/tune_with_autoscheduler/tune_network_x86.rst.txt
@@ -666,7 +666,7 @@ so we can read the log file and load the best schedules.
     Evaluate inference time cost...
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-      759.9761     759.6506     761.1077     759.1700      0.8238   
+      753.7760     753.7561     754.3260     753.2460      0.4411   
                
 
 
@@ -694,7 +694,7 @@ Other Tips
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  22.126 seconds)
+   **Total running time of the script:** ( 1 minutes  22.438 seconds)
 
 
 .. _sphx_glr_download_how_to_tune_with_autoscheduler_tune_network_x86.py:
diff --git a/docs/_sources/how_to/tune_with_autoscheduler/tune_sparse_x86.rst.txt b/docs/_sources/how_to/tune_with_autoscheduler/tune_sparse_x86.rst.txt
index f8b218535..790c34751 100644
--- a/docs/_sources/how_to/tune_with_autoscheduler/tune_sparse_x86.rst.txt
+++ b/docs/_sources/how_to/tune_with_autoscheduler/tune_sparse_x86.rst.txt
@@ -397,75 +397,77 @@ layout transformation, parallelization, vectorization, unrolling, and operator f
                  placeholder_4: Buffer(placeholder_14: Pointer(float32), float32, [65536], []),
                  compute: Buffer(compute_2: Pointer(float32), float32, [65536], [])}
       buffer_map = {placeholder_5: placeholder, placeholder_6: placeholder_1, placeholder_7: placeholder_2, placeholder_8: placeholder_3, placeholder_9: placeholder_4, compute_1: compute}
-      preflattened_buffer_map = {placeholder_7: placeholder_15: Buffer(placeholder_12, int32, [4916], []), placeholder_5: placeholder_16: Buffer(placeholder_10, float32, [128, 256], []), compute_1: compute_3: Buffer(compute_2, float32, [128, 512], []), placeholder_6: placeholder_17: Buffer(placeholder_11, float32, [4916, 16, 1], []), placeholder_8: placeholder_18: Buffer(placeholder_13, int32, [33], []), placeholder_9: placeholder_19: Buffer(placeholder_14, float32, [128, 512], [])} {
-      for (i0.outer.i1.outer.fused: int32, 0, 64) "parallel" {
-        allocate(compute_4: Pointer(global float32), float32, [1024]), storage_scope = global {
-          for (nb_j.inner: int32, 0, 2) {
-            for (i.inner.init: int32, 0, 32) {
-              let cse_var_1: int32 = ((i.inner.init*32) + (nb_j.inner*16))
-               {
-                compute_5: Buffer(compute_4, float32, [1024], [])[cse_var_1] = 0f32
-                compute_5[(cse_var_1 + 1)] = 0f32
-                compute_5[(cse_var_1 + 2)] = 0f32
-                compute_5[(cse_var_1 + 3)] = 0f32
-                compute_5[(cse_var_1 + 4)] = 0f32
-                compute_5[(cse_var_1 + 5)] = 0f32
-                compute_5[(cse_var_1 + 6)] = 0f32
-                compute_5[(cse_var_1 + 7)] = 0f32
-                compute_5[(cse_var_1 + 8)] = 0f32
-                compute_5[(cse_var_1 + 9)] = 0f32
-                compute_5[(cse_var_1 + 10)] = 0f32
-                compute_5[(cse_var_1 + 11)] = 0f32
-                compute_5[(cse_var_1 + 12)] = 0f32
-                compute_5[(cse_var_1 + 13)] = 0f32
-                compute_5[(cse_var_1 + 14)] = 0f32
-                compute_5[(cse_var_1 + 15)] = 0f32
-              }
-            }
-            for (elem_idx: int32, 0, let cse_var_2: int32 = ((floormod(i0.outer.i1.outer.fused, 16)*2) + nb_j.inner) in (placeholder_3[(cse_var_2 + 1)] - placeholder_3[cse_var_2])) {
-              for (i.inner: int32, 0, 32) {
-                let cse_var_21: int32 = (elem_idx*16)
-                let cse_var_20: int32 = ((i.inner*32) + (nb_j.inner*16))
-                let cse_var_19: int32 = ((floormod(i0.outer.i1.outer.fused, 16)*2) + nb_j.inner)
-                let cse_var_18: int32 = ((floordiv(i0.outer.i1.outer.fused, 16)*8192) + (i.inner*256))
-                let cse_var_17: int32 = (cse_var_20 + 9)
-                let cse_var_16: int32 = (cse_var_20 + 8)
-                let cse_var_15: int32 = (cse_var_20 + 7)
-                let cse_var_14: int32 = (cse_var_20 + 6)
-                let cse_var_13: int32 = (cse_var_20 + 5)
-                let cse_var_12: int32 = (cse_var_20 + 4)
-                let cse_var_11: int32 = (cse_var_20 + 3)
-                let cse_var_10: int32 = (cse_var_20 + 2)
-                let cse_var_9: int32 = (cse_var_20 + 15)
-                let cse_var_8: int32 = (cse_var_20 + 14)
-                let cse_var_7: int32 = (cse_var_20 + 13)
-                let cse_var_6: int32 = (cse_var_20 + 12)
-                let cse_var_5: int32 = (cse_var_20 + 11)
-                let cse_var_4: int32 = (cse_var_20 + 10)
-                let cse_var_3: int32 = (cse_var_20 + 1)
+      preflattened_buffer_map = {placeholder_7: placeholder_15: Buffer(placeholder_12, int32, [4916], []), placeholder_9: placeholder_16: Buffer(placeholder_14, float32, [128, 512], []), placeholder_8: placeholder_17: Buffer(placeholder_13, int32, [33], []), placeholder_6: placeholder_18: Buffer(placeholder_11, float32, [4916, 16, 1], []), compute_1: compute_3: Buffer(compute_2, float32, [128, 512], []), placeholder_5: placeholder_19: Buffer(placeholder_10, float32, [128, 256], [])} {
+      for (i0.outer.i1.outer.fused: int32, 0, 32) "parallel" {
+        allocate(compute_4: Pointer(global float32), float32, [2048]), storage_scope = global {
+          for (i.outer.inner: int32, 0, 2) {
+            for (nb_j.inner: int32, 0, 2) {
+              for (i.inner.init: int32, 0, 32) {
+                let cse_var_1: int32 = (((i.outer.inner*1024) + (i.inner.init*32)) + (nb_j.inner*16))
                  {
-                  compute_5[cse_var_20] = (compute_5[cse_var_20] + (placeholder_1[((placeholder_3[cse_var_19]*16) + cse_var_21)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-                  compute_5[cse_var_3] = (compute_5[cse_var_3] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 1)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-                  compute_5[cse_var_10] = (compute_5[cse_var_10] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 2)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-                  compute_5[cse_var_11] = (compute_5[cse_var_11] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 3)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-                  compute_5[cse_var_12] = (compute_5[cse_var_12] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 4)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-                  compute_5[cse_var_13] = (compute_5[cse_var_13] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 5)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-                  compute_5[cse_var_14] = (compute_5[cse_var_14] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 6)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-                  compute_5[cse_var_15] = (compute_5[cse_var_15] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 7)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-                  compute_5[cse_var_16] = (compute_5[cse_var_16] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 8)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-                  compute_5[cse_var_17] = (compute_5[cse_var_17] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 9)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-                  compute_5[cse_var_4] = (compute_5[cse_var_4] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 10)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-                  compute_5[cse_var_5] = (compute_5[cse_var_5] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 11)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-                  compute_5[cse_var_6] = (compute_5[cse_var_6] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 12)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-                  compute_5[cse_var_7] = (compute_5[cse_var_7] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 13)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-                  compute_5[cse_var_8] = (compute_5[cse_var_8] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 14)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-                  compute_5[cse_var_9] = (compute_5[cse_var_9] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 15)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
+                  compute_5: Buffer(compute_4, float32, [2048], [])[cse_var_1] = 0f32
+                  compute_5[(cse_var_1 + 1)] = 0f32
+                  compute_5[(cse_var_1 + 2)] = 0f32
+                  compute_5[(cse_var_1 + 3)] = 0f32
+                  compute_5[(cse_var_1 + 4)] = 0f32
+                  compute_5[(cse_var_1 + 5)] = 0f32
+                  compute_5[(cse_var_1 + 6)] = 0f32
+                  compute_5[(cse_var_1 + 7)] = 0f32
+                  compute_5[(cse_var_1 + 8)] = 0f32
+                  compute_5[(cse_var_1 + 9)] = 0f32
+                  compute_5[(cse_var_1 + 10)] = 0f32
+                  compute_5[(cse_var_1 + 11)] = 0f32
+                  compute_5[(cse_var_1 + 12)] = 0f32
+                  compute_5[(cse_var_1 + 13)] = 0f32
+                  compute_5[(cse_var_1 + 14)] = 0f32
+                  compute_5[(cse_var_1 + 15)] = 0f32
+                }
+              }
+              for (elem_idx: int32, 0, let cse_var_2: int32 = ((floormod(i0.outer.i1.outer.fused, 16)*2) + nb_j.inner) in (placeholder_3[(cse_var_2 + 1)] - placeholder_3[cse_var_2])) {
+                for (i.inner: int32, 0, 32) {
+                  let cse_var_21: int32 = (elem_idx*16)
+                  let cse_var_20: int32 = ((floormod(i0.outer.i1.outer.fused, 16)*2) + nb_j.inner)
+                  let cse_var_19: int32 = (((i.outer.inner*1024) + (i.inner*32)) + (nb_j.inner*16))
+                  let cse_var_18: int32 = (((floordiv(i0.outer.i1.outer.fused, 16)*16384) + (i.outer.inner*8192)) + (i.inner*256))
+                  let cse_var_17: int32 = (cse_var_19 + 9)
+                  let cse_var_16: int32 = (cse_var_19 + 8)
+                  let cse_var_15: int32 = (cse_var_19 + 7)
+                  let cse_var_14: int32 = (cse_var_19 + 6)
+                  let cse_var_13: int32 = (cse_var_19 + 5)
+                  let cse_var_12: int32 = (cse_var_19 + 4)
+                  let cse_var_11: int32 = (cse_var_19 + 3)
+                  let cse_var_10: int32 = (cse_var_19 + 2)
+                  let cse_var_9: int32 = (cse_var_19 + 15)
+                  let cse_var_8: int32 = (cse_var_19 + 14)
+                  let cse_var_7: int32 = (cse_var_19 + 13)
+                  let cse_var_6: int32 = (cse_var_19 + 12)
+                  let cse_var_5: int32 = (cse_var_19 + 11)
+                  let cse_var_4: int32 = (cse_var_19 + 10)
+                  let cse_var_3: int32 = (cse_var_19 + 1)
+                   {
+                    compute_5[cse_var_19] = (compute_5[cse_var_19] + (placeholder_1[((placeholder_3[cse_var_20]*16) + cse_var_21)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                    compute_5[cse_var_3] = (compute_5[cse_var_3] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 1)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                    compute_5[cse_var_10] = (compute_5[cse_var_10] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 2)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                    compute_5[cse_var_11] = (compute_5[cse_var_11] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 3)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                    compute_5[cse_var_12] = (compute_5[cse_var_12] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 4)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                    compute_5[cse_var_13] = (compute_5[cse_var_13] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 5)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                    compute_5[cse_var_14] = (compute_5[cse_var_14] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 6)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                    compute_5[cse_var_15] = (compute_5[cse_var_15] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 7)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                    compute_5[cse_var_16] = (compute_5[cse_var_16] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 8)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                    compute_5[cse_var_17] = (compute_5[cse_var_17] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 9)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                    compute_5[cse_var_4] = (compute_5[cse_var_4] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 10)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                    compute_5[cse_var_5] = (compute_5[cse_var_5] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 11)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                    compute_5[cse_var_6] = (compute_5[cse_var_6] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 12)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                    compute_5[cse_var_7] = (compute_5[cse_var_7] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 13)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                    compute_5[cse_var_8] = (compute_5[cse_var_8] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 14)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                    compute_5[cse_var_9] = (compute_5[cse_var_9] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 15)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                  }
                 }
               }
             }
           }
-          for (i0.inner: int32, 0, 32) {
-            let cse_var_22: int32 = (((floordiv(i0.outer.i1.outer.fused, 16)*16384) + (i0.inner*512)) + (floormod(i0.outer.i1.outer.fused, 16)*32))
+          for (i0.inner: int32, 0, 64) {
+            let cse_var_22: int32 = (((floordiv(i0.outer.i1.outer.fused, 16)*32768) + (i0.inner*512)) + (floormod(i0.outer.i1.outer.fused, 16)*32))
             compute[ramp(cse_var_22, 1, 32)] = max((compute_5[ramp((i0.inner*32), 1, 32)] + placeholder_4[ramp(cse_var_22, 1, 32)]), broadcast(0f32, 32))
           }
         }
@@ -522,7 +524,7 @@ We build the binary and check its correctness and performance.
 
  .. code-block:: none
 
-    Execution time of this operator: 1.743 ms
+    Execution time of this operator: 1.730 ms
 
 
 
diff --git a/docs/_sources/how_to/tune_with_autotvm/sg_execution_times.rst.txt b/docs/_sources/how_to/tune_with_autotvm/sg_execution_times.rst.txt
index 5c1747f19..5ae76e434 100644
--- a/docs/_sources/how_to/tune_with_autotvm/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/tune_with_autotvm/sg_execution_times.rst.txt
@@ -5,14 +5,14 @@
 
 Computation times
 =================
-**00:45.783** total execution time for **how_to_tune_with_autotvm** files:
+**00:45.863** total execution time for **how_to_tune_with_autotvm** files:
 
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_conv2d_cuda.py` (``tune_conv2d_cuda.py``)           | 00:45.747 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_conv2d_cuda.py` (``tune_conv2d_cuda.py``)           | 00:45.826 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_x86.py` (``tune_relay_x86.py``)               | 00:00.021 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_x86.py` (``tune_relay_x86.py``)               | 00:00.022 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_cuda.py` (``tune_relay_cuda.py``)             | 00:00.005 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_cuda.py` (``tune_relay_cuda.py``)             | 00:00.006 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_arm.py` (``tune_relay_arm.py``)               | 00:00.005 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/tune_with_autotvm/tune_conv2d_cuda.rst.txt b/docs/_sources/how_to/tune_with_autotvm/tune_conv2d_cuda.rst.txt
index 5282de976..c07ee27a0 100644
--- a/docs/_sources/how_to/tune_with_autotvm/tune_conv2d_cuda.rst.txt
+++ b/docs/_sources/how_to/tune_with_autotvm/tune_conv2d_cuda.rst.txt
@@ -1156,8 +1156,8 @@ for this template
     TimeoutError
 
             [('tile_f', [-1, 2, 1, 64]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 1, 4]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,4909501
-    No: 9   GFLOPS: 176.58/176.58   result: MeasureResult(costs=(0.0013110442333333335,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.914842128753662, timestamp=1659719907.7206702)       [('tile_f', [-1, 1, 4, 8]), ('tile_y', [-1, 7, 1, 1]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 2, 2]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,5072689
-    No: 10  GFLOPS: 0.00/176.58     result: Traceback (most recent call last):
+    No: 9   GFLOPS: 80.83/80.83     result: MeasureResult(costs=(0.0028641143999999998,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.6073582172393799, timestamp=1659735728.2820606)      [('tile_f', [-1, 1, 4, 8]), ('tile_y', [-1, 7, 1, 1]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 2, 2]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,5072689
+    No: 10  GFLOPS: 0.00/80.83      result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 588, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 540, in _build_func_common
@@ -1280,8 +1280,8 @@ for this template
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 871, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
     tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 4, 4, 8]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 64, 2]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,5092711
-    No: 11  GFLOPS: 260.17/260.17   result: MeasureResult(costs=(0.0008897969889502763,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.746523380279541, timestamp=1659719908.6261435)       [('tile_f', [-1, 8, 2, 1]), ('tile_y', [-1, 7, 1, 1]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 2, 1]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,4264713
-    No: 12  GFLOPS: 0.00/260.17     result: Traceback (most recent call last):
+    No: 11  GFLOPS: 260.01/260.01   result: MeasureResult(costs=(0.0008903435745856354,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.7875351905822754, timestamp=1659735729.2097666)      [('tile_f', [-1, 8, 2, 1]), ('tile_y', [-1, 7, 1, 1]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 2, 1]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,4264713
+    No: 12  GFLOPS: 0.00/260.01     result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 588, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 540, in _build_func_common
@@ -1404,7 +1404,7 @@ for this template
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 871, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
     tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 128, 1, 2]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 1, 256]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 0), ('unroll_explicit', 0)],None,183542
-    No: 13  GFLOPS: 0.00/260.17     result: Traceback (most recent call last):
+    No: 13  GFLOPS: 0.00/260.01     result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 588, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 540, in _build_func_common
@@ -1527,7 +1527,7 @@ for this template
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 871, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
     tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 4, 8, 8]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 1, 64]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 0)],None,2482196
-    No: 14  GFLOPS: 0.00/260.17     result: Traceback (most recent call last):
+    No: 14  GFLOPS: 0.00/260.01     result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 588, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 540, in _build_func_common
@@ -1650,9 +1650,9 @@ for this template
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 871, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
     tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 64, 1, 4]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 4, 2]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,10306226
-    No: 15  GFLOPS: 5.46/260.17     result: MeasureResult(costs=(0.04237869825,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.8544461727142334, timestamp=1659719913.216546)       [('tile_f', [-1, 2, 2, 8]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 4, 8]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 0), ('unroll_explicit', 1)],None,5330964
-    No: 16  GFLOPS: 3.34/260.17     result: MeasureResult(costs=(0.06939853650000001,), error_no=MeasureErrorNo.NO_ERROR, all_cost=4.577344179153442, timestamp=1659719914.4559593) [('tile_f', [-1, 8, 4, 4]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 4, 1]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 0)],None,2140058
-    No: 17  GFLOPS: 0.00/260.17     result: Traceback (most recent call last):
+    No: 15  GFLOPS: 5.26/260.01     result: MeasureResult(costs=(0.043974994,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.8457534313201904, timestamp=1659735733.7843628)        [('tile_f', [-1, 2, 2, 8]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 4, 8]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 0), ('unroll_explicit', 1)],None,5330964
+    No: 16  GFLOPS: 3.34/260.01     result: MeasureResult(costs=(0.069222138,), error_no=MeasureErrorNo.NO_ERROR, all_cost=4.538715124130249, timestamp=1659735735.021886)  [('tile_f', [-1, 8, 4, 4]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 4, 1]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 0)],None,2140058
+    No: 17  GFLOPS: 0.00/260.01     result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 142, in build
         res = future.result()
       File "/usr/lib/python3.7/concurrent/futures/_base.py", line 435, in result
@@ -1670,8 +1670,8 @@ for this template
     TimeoutError
 
             [('tile_f', [-1, 2, 2, 1]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 4, 16]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,10195251
-    No: 18  GFLOPS: 27.07/260.17    result: MeasureResult(costs=(0.0085525213125,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.3080289363861084, timestamp=1659719925.5000262)    [('tile_f', [-1, 4, 8, 4]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 1, 4]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 0), ('unroll_explicit', 1)],None,6068603
-    No: 19  GFLOPS: 0.00/260.17     result: Traceback (most recent call last):
+    No: 18  GFLOPS: 27.98/260.01    result: MeasureResult(costs=(0.008272878785714286,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.3325583934783936, timestamp=1659735746.06702) [('tile_f', [-1, 4, 8, 4]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 1, 4]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 0), ('unroll_explicit', 1)],None,6068603
+    No: 19  GFLOPS: 0.00/260.01     result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 588, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 540, in _build_func_common
@@ -1794,7 +1794,7 @@ for this template
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 871, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
     tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 16, 4, 8]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 4, 128]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 0), ('unroll_explicit', 1)],None,6956993
-    No: 20  GFLOPS: 0.00/260.17     result: Traceback (most recent call last):
+    No: 20  GFLOPS: 0.00/260.01     result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 588, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 540, in _build_func_common
@@ -1973,7 +1973,7 @@ and measure running time.
     Best config:
     [('tile_f', [-1, 8, 2, 1]), ('tile_y', [-1, 7, 1, 1]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 2, 1]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,4264713
     Finish loading 20 records
-    Time cost of this operator: 0.001215
+    Time cost of this operator: 0.001283
 
 
 
diff --git a/docs/_sources/how_to/work_with_microtvm/micro_autotune.rst.txt b/docs/_sources/how_to/work_with_microtvm/micro_autotune.rst.txt
index 6149842b7..27f277373 100644
--- a/docs/_sources/how_to/work_with_microtvm/micro_autotune.rst.txt
+++ b/docs/_sources/how_to/work_with_microtvm/micro_autotune.rst.txt
@@ -329,10 +329,10 @@ Timing the untuned program
     ########## Build without Autotuning ##########
     Node Name                                     Ops                                           Time(us)  Time(%)  Shape              Inputs  Outputs  Measurements(us)  
     ---------                                     ---                                           --------  -------  -----              ------  -------  ----------------  
-    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  311.0     98.721   (1, 2, 10, 10, 3)  2       1        [311.0]           
-    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       3.074     0.976    (1, 6, 10, 10)     1       1        [3.074]           
-    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.955     0.303    (1, 1, 10, 10, 3)  1       1        [0.955]           
-    Total_time                                    -                                             315.029   -        -                  -       -        -                 
+    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  311.1     98.724   (1, 2, 10, 10, 3)  2       1        [311.1]           
+    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       3.05      0.968    (1, 6, 10, 10)     1       1        [3.05]            
+    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.971     0.308    (1, 1, 10, 10, 3)  1       1        [0.971]           
+    Total_time                                    -                                             315.121   -        -                  -       -        -                 
 
 
 
@@ -398,10 +398,10 @@ Timing the tuned program
     ########## Build with Autotuning ##########
     Node Name                                     Ops                                           Time(us)  Time(%)  Shape              Inputs  Outputs  Measurements(us)  
     ---------                                     ---                                           --------  -------  -----              ------  -------  ----------------  
-    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  130.4     97.927   (1, 6, 10, 10, 1)  2       1        [130.4]           
-    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       1.807     1.357    (1, 6, 10, 10)     1       1        [1.807]           
-    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.953     0.716    (1, 1, 10, 10, 3)  1       1        [0.953]           
-    Total_time                                    -                                             133.16    -        -                  -       -        -                 
+    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  194.3     98.636   (1, 6, 10, 10, 1)  2       1        [194.3]           
+    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       1.822     0.925    (1, 6, 10, 10)     1       1        [1.822]           
+    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.866     0.44     (1, 3, 10, 10, 1)  1       1        [0.866]           
+    Total_time                                    -                                             196.988   -        -                  -       -        -                 
 
 
 
diff --git a/docs/_sources/how_to/work_with_microtvm/micro_train.rst.txt b/docs/_sources/how_to/work_with_microtvm/micro_train.rst.txt
index 3c2b3a20f..12d8186fa 100644
--- a/docs/_sources/how_to/work_with_microtvm/micro_train.rst.txt
+++ b/docs/_sources/how_to/work_with_microtvm/micro_train.rst.txt
@@ -225,7 +225,7 @@ take about **2 minutes** to download the Stanford Cars, while COCO 2017 validati
  .. code-block:: none
 
 
-    '/tmp/tmpgu8rltzn/images/random'
+    '/tmp/tmphy9g6amy/images/random'
 
 
 
@@ -325,8 +325,8 @@ objects to other stuff? We can display some examples from our datasets using ``m
 
  .. code-block:: none
 
-    /tmp/tmpgu8rltzn/images/target contains 8144 images
-    /tmp/tmpgu8rltzn/images/random contains 5000 images
+    /tmp/tmphy9g6amy/images/target contains 8144 images
+    /tmp/tmphy9g6amy/images/random contains 5000 images
 
 
 
@@ -501,13 +501,13 @@ the time on our validation set).
  .. code-block:: none
 
     Epoch 1/3
-    328/328 - 55s - loss: 0.2138 - accuracy: 0.9234 - val_loss: 0.1243 - val_accuracy: 0.9596
+    328/328 - 55s - loss: 0.2269 - accuracy: 0.9256 - val_loss: 0.1412 - val_accuracy: 0.9566
     Epoch 2/3
-    328/328 - 53s - loss: 0.0975 - accuracy: 0.9627 - val_loss: 0.1287 - val_accuracy: 0.9573
+    328/328 - 52s - loss: 0.0985 - accuracy: 0.9612 - val_loss: 0.1254 - val_accuracy: 0.9596
     Epoch 3/3
-    328/328 - 52s - loss: 0.0659 - accuracy: 0.9769 - val_loss: 0.1457 - val_accuracy: 0.9539
+    328/328 - 52s - loss: 0.0717 - accuracy: 0.9724 - val_loss: 0.1058 - val_accuracy: 0.9622
 
-    <keras.callbacks.History object at 0x7f08a155a650>
+    <keras.callbacks.History object at 0x7f6a50f13590>
 
 
 
@@ -864,7 +864,7 @@ Arduino tutorial for how to do that `on GitHub <https://github.com/guberti/tvm-a
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 4 minutes  48.183 seconds)
+   **Total running time of the script:** ( 4 minutes  50.984 seconds)
 
 
 .. _sphx_glr_download_how_to_work_with_microtvm_micro_train.py:
diff --git a/docs/_sources/how_to/work_with_microtvm/sg_execution_times.rst.txt b/docs/_sources/how_to/work_with_microtvm/sg_execution_times.rst.txt
index 35861d5a2..5ada1b3fc 100644
--- a/docs/_sources/how_to/work_with_microtvm/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/work_with_microtvm/sg_execution_times.rst.txt
@@ -5,16 +5,16 @@
 
 Computation times
 =================
-**05:41.334** total execution time for **how_to_work_with_microtvm** files:
+**05:45.227** total execution time for **how_to_work_with_microtvm** files:
 
 +---------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_train.py` (``micro_train.py``)               | 04:48.183 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_train.py` (``micro_train.py``)               | 04:50.984 | 0.0 MB |
 +---------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_autotune.py` (``micro_autotune.py``)         | 00:42.314 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_autotune.py` (``micro_autotune.py``)         | 00:42.988 | 0.0 MB |
 +---------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_aot.py` (``micro_aot.py``)                   | 00:07.554 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_aot.py` (``micro_aot.py``)                   | 00:07.957 | 0.0 MB |
 +---------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_tflite.py` (``micro_tflite.py``)             | 00:03.281 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_tflite.py` (``micro_tflite.py``)             | 00:03.297 | 0.0 MB |
 +---------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_work_with_microtvm_micro_ethosu.py` (``micro_ethosu.py``)             | 00:00.001 | 0.0 MB |
 +---------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/work_with_relay/sg_execution_times.rst.txt b/docs/_sources/how_to/work_with_relay/sg_execution_times.rst.txt
index 8048b0780..085a31d36 100644
--- a/docs/_sources/how_to/work_with_relay/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/work_with_relay/sg_execution_times.rst.txt
@@ -5,14 +5,14 @@
 
 Computation times
 =================
-**00:42.376** total execution time for **how_to_work_with_relay** files:
+**00:41.632** total execution time for **how_to_work_with_relay** files:
 
 +----------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_relay_using_pipeline_executor.py` (``using_pipeline_executor.py``) | 00:30.425 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_relay_using_pipeline_executor.py` (``using_pipeline_executor.py``) | 00:30.268 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_relay_using_external_lib.py` (``using_external_lib.py``)           | 00:09.852 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_relay_using_external_lib.py` (``using_external_lib.py``)           | 00:09.896 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_relay_build_gcn.py` (``build_gcn.py``)                             | 00:02.091 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_relay_build_gcn.py` (``build_gcn.py``)                             | 00:01.460 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_work_with_relay_using_relay_viz.py` (``using_relay_viz.py``)                 | 00:00.007 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/work_with_schedules/intrin_math.rst.txt b/docs/_sources/how_to/work_with_schedules/intrin_math.rst.txt
index 7c5d7034a..ccef23b65 100644
--- a/docs/_sources/how_to/work_with_schedules/intrin_math.rst.txt
+++ b/docs/_sources/how_to/work_with_schedules/intrin_math.rst.txt
@@ -261,7 +261,7 @@ The following example customizes CUDA lowering rule for :code:`exp`.
  .. code-block:: none
 
 
-    <function my_cuda_math_rule at 0x7f08a0ffe0e0>
+    <function my_cuda_math_rule at 0x7f6a147cf050>
 
 
 
diff --git a/docs/_sources/how_to/work_with_schedules/sg_execution_times.rst.txt b/docs/_sources/how_to/work_with_schedules/sg_execution_times.rst.txt
index abd2179b6..9137f0077 100644
--- a/docs/_sources/how_to/work_with_schedules/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/work_with_schedules/sg_execution_times.rst.txt
@@ -5,18 +5,18 @@
 
 Computation times
 =================
-**00:04.207** total execution time for **how_to_work_with_schedules** files:
+**00:04.083** total execution time for **how_to_work_with_schedules** files:
 
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_intrin_math.py` (``intrin_math.py``)                 | 00:01.901 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_intrin_math.py` (``intrin_math.py``)                 | 00:01.873 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_tensorize.py` (``tensorize.py``)                     | 00:01.070 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_tensorize.py` (``tensorize.py``)                     | 00:00.986 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_reduction.py` (``reduction.py``)                     | 00:00.535 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_reduction.py` (``reduction.py``)                     | 00:00.529 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_scan.py` (``scan.py``)                               | 00:00.517 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_scan.py` (``scan.py``)                               | 00:00.512 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_extern_op.py` (``extern_op.py``)                     | 00:00.102 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_extern_op.py` (``extern_op.py``)                     | 00:00.100 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_work_with_schedules_schedule_primitives.py` (``schedule_primitives.py``) | 00:00.041 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/work_with_schedules/tensorize.rst.txt b/docs/_sources/how_to/work_with_schedules/tensorize.rst.txt
index 1da03e6f6..f7649907e 100644
--- a/docs/_sources/how_to/work_with_schedules/tensorize.rst.txt
+++ b/docs/_sources/how_to/work_with_schedules/tensorize.rst.txt
@@ -347,7 +347,7 @@ The importing needs to happen before the tensorized GEMV being executed.
                  C: Buffer(C_2: Pointer(float32), float32, [524288], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C}
       preflattened_buffer_map = {A_1: A_3: Buffer(A_2, float32, [1024, 64], []), B_1: B_3: Buffer(B_2, float32, [512, 64], []), C_1: C_3: Buffer(C_2, float32, [1024, 512], [])} {
-      attr [IterVar(i: int32, (nullptr), "DataPar", "")] "pragma_import_llvm" = "; ModuleID = '/tmp/tmpt1mbau4e/input0.cc'\nsource_filename = \"/tmp/tmpt1mbau4e/input0.cc\"\ntarget datalayout = \"e-m:e-i64:64-f80:128-n8:16:32:64-S128\"\ntarget triple = \"x86_64-pc-linux-gnu\"\n\n; Function Attrs: noinline nounwind optnone uwtable\ndefine dso_local i32 @gemv_update(float*, float*, float*, i32, i32, i32) #0 {\n  %7 = alloca float*, align 8\n  %8 = alloca float*, align 8\n  %9 = alloca floa [...]
+      attr [IterVar(i: int32, (nullptr), "DataPar", "")] "pragma_import_llvm" = "; ModuleID = '/tmp/tmpa7b5_n3j/input0.cc'\nsource_filename = \"/tmp/tmpa7b5_n3j/input0.cc\"\ntarget datalayout = \"e-m:e-i64:64-f80:128-n8:16:32:64-S128\"\ntarget triple = \"x86_64-pc-linux-gnu\"\n\n; Function Attrs: noinline nounwind optnone uwtable\ndefine dso_local i32 @gemv_update(float*, float*, float*, i32, i32, i32) #0 {\n  %7 = alloca float*, align 8\n  %8 = alloca float*, align 8\n  %9 = alloca floa [...]
       for (i, 0, 1024) {
         for (j.outer: int32, 0, 32) {
           @tir.call_extern("gemv_update", @tir.tvm_access_ptr(@tir.type_annotation(, dtype=float32), C_2, ((i*512) + (j.outer*16)), 16, 2, dtype=handle), @tir.tvm_access_ptr(@tir.type_annotation(, dtype=float32), A_2, (i*64), 64, 1, dtype=handle), @tir.tvm_access_ptr(@tir.type_annotation(, dtype=float32), B_2, (j.outer*1024), 1024, 1, dtype=handle), 16, 64, 64, dtype=int32)
diff --git a/docs/_sources/topic/vta/tutorials/autotvm/sg_execution_times.rst.txt b/docs/_sources/topic/vta/tutorials/autotvm/sg_execution_times.rst.txt
index fedfc4a49..3290d00f9 100644
--- a/docs/_sources/topic/vta/tutorials/autotvm/sg_execution_times.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/autotvm/sg_execution_times.rst.txt
@@ -5,10 +5,10 @@
 
 Computation times
 =================
-**00:21.352** total execution time for **topic_vta_tutorials_autotvm** files:
+**00:21.185** total execution time for **topic_vta_tutorials_autotvm** files:
 
 +---------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_autotvm_tune_relay_vta.py` (``tune_relay_vta.py``) | 00:21.345 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_autotvm_tune_relay_vta.py` (``tune_relay_vta.py``) | 00:21.179 | 0.0 MB |
 +---------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_autotvm_tune_alu_vta.py` (``tune_alu_vta.py``)     | 00:00.006 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_autotvm_tune_alu_vta.py` (``tune_alu_vta.py``)     | 00:00.007 | 0.0 MB |
 +---------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/topic/vta/tutorials/frontend/deploy_classification.rst.txt b/docs/_sources/topic/vta/tutorials/frontend/deploy_classification.rst.txt
index 7e085f32e..a735a8977 100644
--- a/docs/_sources/topic/vta/tutorials/frontend/deploy_classification.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/frontend/deploy_classification.rst.txt
@@ -291,7 +291,7 @@ The compilation steps are:
       DeprecationWarning,
     /workspace/vta/tutorials/frontend/deploy_classification.py:213: DeprecationWarning: legacy graph executor behavior of producing json / lib / params will be removed in the next release. Please see documents of tvm.contrib.graph_executor.GraphModule for the  new recommended usage.
       relay_prog, target=tvm.target.Target(target, host=env.target_host), params=params
-    resnet18_v1 inference graph built in 23.03s!
+    resnet18_v1 inference graph built in 22.75s!
 
 
 
diff --git a/docs/_sources/topic/vta/tutorials/frontend/deploy_detection.rst.txt b/docs/_sources/topic/vta/tutorials/frontend/deploy_detection.rst.txt
index 973c071fa..c67c65b6a 100644
--- a/docs/_sources/topic/vta/tutorials/frontend/deploy_detection.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/frontend/deploy_detection.rst.txt
@@ -335,7 +335,7 @@ The compilation steps are:
       "target_host parameter is going to be deprecated. "
     /workspace/python/tvm/relay/build_module.py:411: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
       DeprecationWarning,
-    yolov3-tiny inference graph built in 16.52s!
+    yolov3-tiny inference graph built in 16.10s!
 
 
 
diff --git a/docs/_sources/topic/vta/tutorials/frontend/sg_execution_times.rst.txt b/docs/_sources/topic/vta/tutorials/frontend/sg_execution_times.rst.txt
index 9fc8feb2f..051362626 100644
--- a/docs/_sources/topic/vta/tutorials/frontend/sg_execution_times.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/frontend/sg_execution_times.rst.txt
@@ -5,10 +5,10 @@
 
 Computation times
 =================
-**01:32.261** total execution time for **topic_vta_tutorials_frontend** files:
+**01:31.599** total execution time for **topic_vta_tutorials_frontend** files:
 
 +------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_detection.py` (``deploy_detection.py``)           | 00:49.318 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_detection.py` (``deploy_detection.py``)           | 00:48.791 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_classification.py` (``deploy_classification.py``) | 00:42.943 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_classification.py` (``deploy_classification.py``) | 00:42.807 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/topic/vta/tutorials/optimize/sg_execution_times.rst.txt b/docs/_sources/topic/vta/tutorials/optimize/sg_execution_times.rst.txt
index 8afda3388..54de29b02 100644
--- a/docs/_sources/topic/vta/tutorials/optimize/sg_execution_times.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/optimize/sg_execution_times.rst.txt
@@ -5,10 +5,10 @@
 
 Computation times
 =================
-**00:03.277** total execution time for **topic_vta_tutorials_optimize** files:
+**00:03.238** total execution time for **topic_vta_tutorials_optimize** files:
 
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_optimize_convolution_opt.py` (``convolution_opt.py``)         | 00:02.881 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_optimize_convolution_opt.py` (``convolution_opt.py``)         | 00:02.845 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_optimize_matrix_multiply_opt.py` (``matrix_multiply_opt.py``) | 00:00.397 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_optimize_matrix_multiply_opt.py` (``matrix_multiply_opt.py``) | 00:00.393 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/topic/vta/tutorials/sg_execution_times.rst.txt b/docs/_sources/topic/vta/tutorials/sg_execution_times.rst.txt
index 49624205f..0559e0365 100644
--- a/docs/_sources/topic/vta/tutorials/sg_execution_times.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/sg_execution_times.rst.txt
@@ -5,10 +5,10 @@
 
 Computation times
 =================
-**00:00.738** total execution time for **topic_vta_tutorials** files:
+**00:00.701** total execution time for **topic_vta_tutorials** files:
 
 +---------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``) | 00:00.407 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``) | 00:00.374 | 0.0 MB |
 +---------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_vta_get_started.py` (``vta_get_started.py``) | 00:00.331 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_vta_get_started.py` (``vta_get_started.py``) | 00:00.328 | 0.0 MB |
 +---------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt b/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt
index 12c7d8535..c4a30ad39 100644
--- a/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt
+++ b/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt
@@ -328,7 +328,7 @@ We build the binary and check its correctness and performance.
 
  .. code-block:: none
 
-    Execution time of this operator: 93.005 ms
+    Execution time of this operator: 94.285 ms
 
 
 
diff --git a/docs/_sources/tutorial/autotvm_matmul_x86.rst.txt b/docs/_sources/tutorial/autotvm_matmul_x86.rst.txt
index 03e24fb77..2d1a00978 100644
--- a/docs/_sources/tutorial/autotvm_matmul_x86.rst.txt
+++ b/docs/_sources/tutorial/autotvm_matmul_x86.rst.txt
@@ -462,16 +462,16 @@ reduce variance, we take 5 measurements and average them.
     waiting for device...
     device available
     Get devices for measurement successfully!
-    No: 1   GFLOPS: 10.72/10.72     result: MeasureResult(costs=(0.025050922800000004,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.5317573547363281, timestamp=1659718698.5702953)       [('tile_y', [-1, 1]), ('tile_x', [-1, 256])],None,80
-    No: 2   GFLOPS: 2.97/10.72      result: MeasureResult(costs=(0.09024819599999999,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.5904018878936768, timestamp=1659718700.17696)  [('tile_y', [-1, 4]), ('tile_x', [-1, 8])],None,32
-    No: 3   GFLOPS: 11.98/11.98     result: MeasureResult(costs=(0.022409857,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.5474588871002197, timestamp=1659718701.2152853)        [('tile_y', [-1, 64]), ('tile_x', [-1, 32])],None,56
-    No: 4   GFLOPS: 1.88/11.98      result: MeasureResult(costs=(0.14251439059999998,), error_no=MeasureErrorNo.NO_ERROR, all_cost=2.3944878578186035, timestamp=1659718703.6561816)        [('tile_y', [-1, 1]), ('tile_x', [-1, 4])],None,20
-    No: 5   GFLOPS: 3.73/11.98      result: MeasureResult(costs=(0.071989313,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.2891812324523926, timestamp=1659718705.0727048)        [('tile_y', [-1, 256]), ('tile_x', [-1, 16])],None,48
-    No: 6   GFLOPS: 1.77/11.98      result: MeasureResult(costs=(0.1519816158,), error_no=MeasureErrorNo.NO_ERROR, all_cost=2.6439003944396973, timestamp=1659718708.272264)        [('tile_y', [-1, 512]), ('tile_x', [-1, 4])],None,29
-    No: 7   GFLOPS: 0.88/11.98      result: MeasureResult(costs=(0.3040180522,), error_no=MeasureErrorNo.NO_ERROR, all_cost=4.9860680103302, timestamp=1659718713.814216)   [('tile_y', [-1, 512]), ('tile_x', [-1, 2])],None,19
-    No: 8   GFLOPS: 10.82/11.98     result: MeasureResult(costs=(0.024819302600000002,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.5366349220275879, timestamp=1659718714.3728256)       [('tile_y', [-1, 4]), ('tile_x', [-1, 64])],None,62
-    No: 9   GFLOPS: 1.92/11.98      result: MeasureResult(costs=(0.13987564859999999,), error_no=MeasureErrorNo.NO_ERROR, all_cost=2.3597323894500732, timestamp=1659718716.8518603)        [('tile_y', [-1, 2]), ('tile_x', [-1, 2])],None,11
-    No: 10  GFLOPS: 2.81/11.98      result: MeasureResult(costs=(0.09563273339999999,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.6474816799163818, timestamp=1659718718.5579715)        [('tile_y', [-1, 4]), ('tile_x', [-1, 4])],None,22
+    No: 1   GFLOPS: 10.59/10.59     result: MeasureResult(costs=(0.025338057200000003,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.540949821472168, timestamp=1659734527.3267817)        [('tile_y', [-1, 1]), ('tile_x', [-1, 256])],None,80
+    No: 2   GFLOPS: 2.60/10.59      result: MeasureResult(costs=(0.1032755818,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.8048169612884521, timestamp=1659734529.670464)        [('tile_y', [-1, 4]), ('tile_x', [-1, 8])],None,32
+    No: 3   GFLOPS: 11.83/11.83     result: MeasureResult(costs=(0.0226971304,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.5585649013519287, timestamp=1659734530.7288744)       [('tile_y', [-1, 64]), ('tile_x', [-1, 32])],None,56
+    No: 4   GFLOPS: 1.47/11.83      result: MeasureResult(costs=(0.182300916,), error_no=MeasureErrorNo.NO_ERROR, all_cost=3.025890827178955, timestamp=1659734533.8078916) [('tile_y', [-1, 1]), ('tile_x', [-1, 4])],None,20
+    No: 5   GFLOPS: 3.62/11.83      result: MeasureResult(costs=(0.07422830760000002,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.32784104347229, timestamp=1659734535.2643628)  [('tile_y', [-1, 256]), ('tile_x', [-1, 16])],None,48
+    No: 6   GFLOPS: 1.73/11.83      result: MeasureResult(costs=(0.15532993280000001,), error_no=MeasureErrorNo.NO_ERROR, all_cost=2.6232008934020996, timestamp=1659734537.9305298)        [('tile_y', [-1, 512]), ('tile_x', [-1, 4])],None,29
+    No: 7   GFLOPS: 0.87/11.83      result: MeasureResult(costs=(0.3078257438,), error_no=MeasureErrorNo.NO_ERROR, all_cost=5.046058893203735, timestamp=1659734543.549073) [('tile_y', [-1, 512]), ('tile_x', [-1, 2])],None,19
+    No: 8   GFLOPS: 9.65/11.83      result: MeasureResult(costs=(0.027805218599999997,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.5893476009368896, timestamp=1659734544.1601503)       [('tile_y', [-1, 4]), ('tile_x', [-1, 64])],None,62
+    No: 9   GFLOPS: 1.89/11.83      result: MeasureResult(costs=(0.14177915359999999,), error_no=MeasureErrorNo.NO_ERROR, all_cost=2.3702785968780518, timestamp=1659734546.649799) [('tile_y', [-1, 2]), ('tile_x', [-1, 2])],None,11
+    No: 10  GFLOPS: 2.69/11.83      result: MeasureResult(costs=(0.099851123,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.6970205307006836, timestamp=1659734548.4053292)        [('tile_y', [-1, 4]), ('tile_x', [-1, 4])],None,22
 
 
 
diff --git a/docs/_sources/tutorial/autotvm_relay_x86.rst.txt b/docs/_sources/tutorial/autotvm_relay_x86.rst.txt
index 1f6760b87..106736c01 100644
--- a/docs/_sources/tutorial/autotvm_relay_x86.rst.txt
+++ b/docs/_sources/tutorial/autotvm_relay_x86.rst.txt
@@ -327,7 +327,7 @@ standard deviation.
 
  .. code-block:: none
 
-    {'mean': 487.30506773000104, 'median': 486.955957400005, 'std': 1.2557887672127943}
+    {'mean': 492.2628494100014, 'median': 492.24715089999904, 'std': 0.5421003771522068}
 
 
 
@@ -563,30 +563,30 @@ the tuning data to.
 
     /workspace/python/tvm/driver/build_module.py:268: UserWarning: target_host parameter is going to be deprecated. Please pass in tvm.target.Target(target, host=target_host) instead.
       "target_host parameter is going to be deprecated. "
-
    [Task  1/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  1/25]  Current/Best:   17.77/  17.77 GFLOPS | Progress: (4/20) | 6.29 s
    [Task  1/25]  Current/Best:    6.26/  17.77 GFLOPS | Progress: (8/20) | 9.25 s
    [Task  1/25]  Current/Best:   11.74/  23.20 GFLOPS | Progress: (12/20) | 11.64 s
    [Task  1/25]  Current/Best:   17.15/  23.20 GFLOPS | Progress: (16/20) | 13.30 s
    [Task  1/25]  Current/Best:   11.79/  23.20 GFLOPS | Progress: (20/20) | 15.02 s Done.
-
    [Task  2/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  2/25]  Current/Best:   12.48/  13.14 GFLOPS | Progress: (4/20) | 3.76 s
    [Task  2/25]  Current/Best:   14.07/  18.56 GFLOPS | Progress: (8/20) | 5.04 s
    [Task  2/25]  Current/Best:   21.07/  21.07 GFLOPS | Progress: (12/20) | 6.34 s
    [Task  2/25]  Current/Best:   12.62/  21.07 GFLOPS | Progress: (16/20) | 7.59 s
    [Task  2/25]  Current/Best:   20.09/  21.07 GFLOPS | Progress: (20/20) | 9.17 s Done.
-
    [Task  3/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  3/25]  Current/Best:    1.65/  10.73 GFLOPS | Progress: (4/20) | 5.79 s
    [Task  3/25]  Current/Best:   15.91/  17.18 GFLOPS | Progress: (8/20) | 7.70 s
    [Task  3/25]  Current/Best:   15.18/  17.18 GFLOPS | Progress: (12/20) | 9.40 s
    [Task  3/25]  Current/Best:    7.29/  24.14 GFLOPS | Progress: (16/20) | 11.29 s
    [Task  3/25]  Current/Best:   12.89/  24.14 GFLOPS | Progress: (20/20) | 15.72 s Done.
-
    [Task  4/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  4/25]  Current/Best:    9.70/  20.73 GFLOPS | Progress: (4/20) | 2.37 s
    [Task  4/25]  Current/Best:    6.97/  20.73 GFLOPS | Progress: (8/20) | 6.68 s
    [Task  4/25]  Current/Best:   22.68/  22.68 GFLOPS | Progress: (12/20) | 11.20 s
    [Task  4/25]  Current/Best:   17.70/  22.68 GFLOPS | Progress: (16/20) | 13.44 s
    [Task  4/25]  Current/Best:   13.05/  22.68 GFLOPS | Progress: (20/20) | 15.33 s Done.
-
    [Task  5/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  5/25]  Current/Best:    9.62/  10.36 GFLOPS | Progress: (4/20) | 2.58 s
    [Task  5/25]  Current/Best:   11.69/  12.73 GFLOPS | Progress: (8/20) | 4.63 s
    [Task  5/25]  Current/Best:   11.55/  18.21 GFLOPS | Progress: (12/20) | 7.71 s
    [Task  5/25]  Current/Best:   11.78/  23.04 GFLOPS | Progress: (16/20) | 9.11 s
    [Task  5/25]  Current/Best:   12.09/  23.04 GFLOPS | Progress: (20/20) | 10.96 s Done.
-
    [Task  6/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  6/25]  Current/Best:   12.32/  21.00 GFLOPS | Progress: (4/20) | 4.01 s
    [Task  6/25]  Current/Best:   19.20/  21.00 GFLOPS | Progress: (8/20) | 5.78 s
    [Task  6/25]  Current/Best:   13.33/  21.00 GFLOPS | Progress: (12/20) | 7.69 s
    [Task  6/25]  Current/Best:   20.27/  21.00 GFLOPS | Progress: (16/20) | 9.93 s
    [Task  6/25]  Current/Best:    3.74/  21.00 GFLOPS | Progress: (20/20) | 12.42 s Done.
-
    [Task  7/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  7/25]  Current/Best:   11.35/  13.08 GFLOPS | Progress: (4/20) | 3.58 s
    [Task  7/25]  Current/Best:   20.58/  21.10 GFLOPS | Progress: (8/20) | 5.08 s
    [Task  7/25]  Current/Best:   16.43/  21.21 GFLOPS | Progress: (12/20) | 7.00 s
    [Task  7/25]  Current/Best:   12.40/  21.21 GFLOPS | Progress: (16/20) | 9.02 s
    [Task  7/25]  Current/Best:    6.37/  22.10 GFLOPS | Progress: (20/20) | 11.45 s Done.
-
    [Task  8/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  8/25]  Current/Best:    9.90/  13.67 GFLOPS | Progress: (4/20) | 2.89 s
    [Task  8/25]  Current/Best:    9.78/  13.67 GFLOPS | Progress: (8/20) | 7.62 s
    [Task  8/25]  Current/Best:   12.38/  13.67 GFLOPS | Progress: (12/20) | 13.74 s
    [Task  8/25]  Current/Best:   18.92/  18.92 GFLOPS | Progress: (16/20) | 15.87 s
    [Task  8/25]  Current/Best:   19.65/  19.65 GFLOPS | Progress: (20/20) | 22.42 s Done.
-
    [Task  9/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  9/25]  Current/Best:   14.46/  15.06 GFLOPS | Progress: (4/20) | 11.97 s
    [Task  9/25]  Current/Best:   23.39/  23.39 GFLOPS | Progress: (8/20) | 13.73 s
    [Task  9/25]  Current/Best:    8.31/  23.39 GFLOPS | Progress: (12/20) | 16.10 s
    [Task  9/25]  Current/Best:   18.08/  23.39 GFLOPS | Progress: (16/20) | 18.67 s
    [Task  9/25]  Current/Best:    9.32/  23.39 GFLOPS | Progress: (20/20) | 26.41 s
    [Task 10/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 10/25]  Current/Best:   18.32/  18.32 GFLOPS | Progress: (4/20) | 2.56 s
    [Task 10/25]  Current/Best:   15.67/  18.32 GFLOPS | Progress: (8/20) | 4.16 s
    [Task 10/25]  Current/Best:   12.10/  19.08 GFLOPS | Progress: (12/20) | 5.68 s
    [Task 10/25]  Current/Best:   19.36/  20.57 GFLOPS | Progress: (16/20) | 6.78 s
    [Task 10/25]  Current/Best:    8.94/  20.57 GFLOPS | Progress: (20/20
 ) | 8.30 s Done.
-
    [Task 11/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 11/25]  Current/Best:   12.36/  18.29 GFLOPS | Progress: (4/20) | 3.33 s
    [Task 11/25]  Current/Best:   17.11/  18.29 GFLOPS | Progress: (8/20) | 6.06 s
    [Task 11/25]  Current/Best:   18.40/  18.40 GFLOPS | Progress: (12/20) | 8.10 s
    [Task 11/25]  Current/Best:   13.61/  21.39 GFLOPS | Progress: (16/20) | 10.88 s
    [Task 11/25]  Current/Best:   19.50/  21.75 GFLOPS | Progress: (20/20) | 12.89 s Done.
-
    [Task 12/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 12/25]  Current/Best:    7.91/  18.15 GFLOPS | Progress: (4/20) | 5.38 s
    [Task 12/25]  Current/Best:    5.21/  18.15 GFLOPS | Progress: (8/20) | 9.07 s
    [Task 12/25]  Current/Best:   18.95/  18.95 GFLOPS | Progress: (12/20) | 11.07 s
    [Task 12/25]  Current/Best:   15.51/  18.95 GFLOPS | Progress: (16/20) | 13.86 s
    [Task 12/25]  Current/Best:   15.27/  18.95 GFLOPS | Progress: (20/20) | 15.78 s Done.
-
    [Task 13/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 13/25]  Current/Best:    8.17/  17.33 GFLOPS | Progress: (4/20) | 3.70 s
    [Task 13/25]  Current/Best:   16.24/  21.16 GFLOPS | Progress: (8/20) | 6.16 s
    [Task 13/25]  Current/Best:   19.73/  21.65 GFLOPS | Progress: (12/20) | 9.08 s
    [Task 13/25]  Current/Best:   12.40/  21.65 GFLOPS | Progress: (16/20) | 12.48 s
    [Task 13/25]  Current/Best:   18.61/  21.65 GFLOPS | Progress: (20/20) | 14.73 s Done.
-
    [Task 14/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 14/25]  Current/Best:   13.68/  13.68 GFLOPS | Progress: (4/20) | 3.34 s
    [Task 14/25]  Current/Best:    6.16/  13.68 GFLOPS | Progress: (8/20) | 5.52 s
    [Task 14/25]  Current/Best:   20.08/  20.08 GFLOPS | Progress: (12/20) | 8.06 s
    [Task 14/25]  Current/Best:   16.02/  20.08 GFLOPS | Progress: (16/20) | 9.70 s Done.
-
    [Task 14/25]  Current/Best:   16.92/  20.08 GFLOPS | Progress: (20/20) | 11.41 s
    [Task 15/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 15/25]  Current/Best:   16.41/  17.86 GFLOPS | Progress: (4/20) | 2.70 s
    [Task 15/25]  Current/Best:   14.48/  18.18 GFLOPS | Progress: (8/20) | 3.98 s
    [Task 15/25]  Current/Best:   10.50/  20.84 GFLOPS | Progress: (12/20) | 6.07 s
    [Task 15/25]  Current/Best:   20.68/  20.84 GFLOPS | Progress: (16/20) | 9.22 s
    [Task 15/25]  Current/Best:    9.79/  20.84 GFLOPS | Progress: (20/20) | 10.23 s
    [Task 16/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 16/25]  Current/Best:   20.55/  20.55 GFLOPS | Progress: (4/20) | 2.96 s
    [Task 16/25]  Current/Best:    3.06/  20.55 GFLOPS | Progress: (8/20) | 4.56 s
    [Task 16/25]  Current/Best:   19.69/  20.55 GFLOPS | Progress: (12/20) | 5.77 s
    [Task 16/25]  Current/Best:   17.65/  20.55 GFLOPS | Progress: (16/20) |
  7.10 s
    [Task 16/25]  Current/Best:   10.07/  22.55 GFLOPS | Progress: (20/20) | 9.14 s Done.
-
    [Task 17/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 17/25]  Current/Best:   12.95/  18.94 GFLOPS | Progress: (4/20) | 4.69 s
    [Task 17/25]  Current/Best:   14.62/  23.58 GFLOPS | Progress: (8/20) | 7.53 s
    [Task 17/25]  Current/Best:   17.56/  23.58 GFLOPS | Progress: (12/20) | 9.56 s
    [Task 17/25]  Current/Best:   16.76/  23.58 GFLOPS | Progress: (16/20) | 11.68 s
    [Task 17/25]  Current/Best:   10.14/  23.58 GFLOPS | Progress: (20/20) | 13.77 s Done.
-
    [Task 18/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 18/25]  Current/Best:   11.46/  16.76 GFLOPS | Progress: (4/20) | 3.68 s
    [Task 18/25]  Current/Best:   10.66/  20.28 GFLOPS | Progress: (8/20) | 7.10 s
    [Task 18/25]  Current/Best:   19.71/  20.28 GFLOPS | Progress: (12/20) | 8.99 s
    [Task 18/25]  Current/Best:   10.15/  20.28 GFLOPS | Progress: (16/20) | 12.51 s
    [Task 18/25]  Current/Best:   20.71/  20.71 GFLOPS | Progress: (20/20) | 14.03 s Done.
-
    [Task 19/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 19/25]  Current/Best:    7.16/  20.47 GFLOPS | Progress: (4/20) | 5.95 s
    [Task 19/25]  Current/Best:    2.63/  20.47 GFLOPS | Progress: (8/20) | 9.21 s
    [Task 19/25]  Current/Best:   19.04/  21.33 GFLOPS | Progress: (12/20) | 12.00 s
    [Task 19/25]  Current/Best:   15.32/  21.33 GFLOPS | Progress: (16/20) | 14.86 s
    [Task 19/25]  Current/Best:    2.73/  23.74 GFLOPS | Progress: (20/20) | 17.65 s Done.
-
    [Task 20/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 20/25]  Current/Best:    8.79/  15.23 GFLOPS | Progress: (4/20) | 3.28 s Done.
+
    [Task  1/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  1/25]  Current/Best:   17.56/  17.56 GFLOPS | Progress: (4/20) | 6.30 s
    [Task  1/25]  Current/Best:    6.16/  17.56 GFLOPS | Progress: (8/20) | 9.22 s
    [Task  1/25]  Current/Best:   11.56/  22.74 GFLOPS | Progress: (12/20) | 11.64 s
    [Task  1/25]  Current/Best:   16.75/  22.79 GFLOPS | Progress: (16/20) | 13.32 s
    [Task  1/25]  Current/Best:   11.64/  23.96 GFLOPS | Progress: (20/20) | 15.08 s Done.
+
    [Task  2/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  2/25]  Current/Best:   12.30/  13.12 GFLOPS | Progress: (4/20) | 3.78 s
    [Task  2/25]  Current/Best:   14.05/  18.12 GFLOPS | Progress: (8/20) | 5.06 s
    [Task  2/25]  Current/Best:   21.26/  21.26 GFLOPS | Progress: (12/20) | 6.37 s
    [Task  2/25]  Current/Best:   12.37/  21.26 GFLOPS | Progress: (16/20) | 7.64 s
    [Task  2/25]  Current/Best:   19.80/  21.26 GFLOPS | Progress: (20/20) | 9.19 s Done.
+
    [Task  3/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  3/25]  Current/Best:    1.63/  10.54 GFLOPS | Progress: (4/20) | 5.88 s
    [Task  3/25]  Current/Best:   15.33/  16.88 GFLOPS | Progress: (8/20) | 7.79 s
    [Task  3/25]  Current/Best:   14.92/  16.88 GFLOPS | Progress: (12/20) | 9.52 s
    [Task  3/25]  Current/Best:    7.19/  23.80 GFLOPS | Progress: (16/20) | 11.46 s
    [Task  3/25]  Current/Best:   11.11/  23.80 GFLOPS | Progress: (20/20) | 16.02 s Done.
+
    [Task  4/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  4/25]  Current/Best:    9.52/  20.42 GFLOPS | Progress: (4/20) | 2.40 s
    [Task  4/25]  Current/Best:    6.83/  20.42 GFLOPS | Progress: (8/20) | 6.71 s
    [Task  4/25]  Current/Best:   22.40/  22.40 GFLOPS | Progress: (12/20) | 11.25 s
    [Task  4/25]  Current/Best:   17.25/  22.40 GFLOPS | Progress: (16/20) | 13.45 s
    [Task  4/25]  Current/Best:   13.43/  22.40 GFLOPS | Progress: (20/20) | 15.35 s Done.
+
    [Task  5/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  5/25]  Current/Best:    9.52/  10.28 GFLOPS | Progress: (4/20) | 2.59 s
    [Task  5/25]  Current/Best:   11.70/  12.74 GFLOPS | Progress: (8/20) | 4.69 s
    [Task  5/25]  Current/Best:   11.69/  18.09 GFLOPS | Progress: (12/20) | 7.63 s
    [Task  5/25]  Current/Best:   11.70/  22.80 GFLOPS | Progress: (16/20) | 9.09 s
    [Task  5/25]  Current/Best:   11.95/  22.80 GFLOPS | Progress: (20/20) | 10.96 s Done.
+
    [Task  6/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  6/25]  Current/Best:   12.12/  20.62 GFLOPS | Progress: (4/20) | 3.95 s
    [Task  6/25]  Current/Best:   19.01/  20.62 GFLOPS | Progress: (8/20) | 5.72 s
    [Task  6/25]  Current/Best:   13.29/  20.62 GFLOPS | Progress: (12/20) | 7.66 s
    [Task  6/25]  Current/Best:   20.03/  20.62 GFLOPS | Progress: (16/20) | 9.90 s
    [Task  6/25]  Current/Best:    3.71/  20.62 GFLOPS | Progress: (20/20) | 12.42 s Done.
+
    [Task  7/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  7/25]  Current/Best:   11.20/  12.98 GFLOPS | Progress: (4/20) | 3.62 s
    [Task  7/25]  Current/Best:   20.28/  21.17 GFLOPS | Progress: (8/20) | 5.14 s
    [Task  7/25]  Current/Best:   12.48/  21.17 GFLOPS | Progress: (12/20) | 7.11 s
    [Task  7/25]  Current/Best:   12.25/  21.17 GFLOPS | Progress: (16/20) | 9.15 s
    [Task  7/25]  Current/Best:    6.44/  21.88 GFLOPS | Progress: (20/20) | 11.61 s Done.
+
    [Task  8/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  8/25]  Current/Best:    9.89/  14.04 GFLOPS | Progress: (4/20) | 2.92 s
    [Task  8/25]  Current/Best:    9.26/  14.04 GFLOPS | Progress: (8/20) | 7.70 s
    [Task  8/25]  Current/Best:   12.35/  14.04 GFLOPS | Progress: (12/20) | 13.79 s
    [Task  8/25]  Current/Best:   18.78/  18.78 GFLOPS | Progress: (16/20) | 15.88 s
    [Task  8/25]  Current/Best:   19.89/  19.89 GFLOPS | Progress: (20/20) | 22.41 s Done.
+
    [Task  9/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  9/25]  Current/Best:   14.36/  15.78 GFLOPS | Progress: (4/20) | 11.91 s
    [Task  9/25]  Current/Best:   23.55/  23.55 GFLOPS | Progress: (8/20) | 13.79 s
    [Task  9/25]  Current/Best:    8.26/  23.55 GFLOPS | Progress: (12/20) | 16.20 s
    [Task  9/25]  Current/Best:   17.86/  23.55 GFLOPS | Progress: (16/20) | 18.84 s
    [Task  9/25]  Current/Best:    9.23/  23.55 GFLOPS | Progress: (20/20) | 26.56 s
    [Task 10/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 10/25]  Current/Best:   18.44/  18.44 GFLOPS | Progress: (4/20) | 2.59 s
    [Task 10/25]  Current/Best:   15.40/  18.44 GFLOPS | Progress: (8/20) | 4.15 s
    [Task 10/25]  Current/Best:   12.22/  18.88 GFLOPS | Progress: (12/20) | 5.68 s
    [Task 10/25]  Current/Best:   19.05/  20.65 GFLOPS | Progress: (16/20) | 6.79 s
    [Task 10/25]  Current/Best:    8.88/  20.65 GFLOPS | Progress: (20/20
 ) | 8.34 s Done.
+
    [Task 11/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 11/25]  Current/Best:   11.81/  18.12 GFLOPS | Progress: (4/20) | 3.29 s
    [Task 11/25]  Current/Best:   15.23/  18.12 GFLOPS | Progress: (8/20) | 6.07 s
    [Task 11/25]  Current/Best:   18.13/  18.13 GFLOPS | Progress: (12/20) | 8.08 s
    [Task 11/25]  Current/Best:   13.55/  21.12 GFLOPS | Progress: (16/20) | 10.86 s
    [Task 11/25]  Current/Best:   19.49/  21.59 GFLOPS | Progress: (20/20) | 12.90 s Done.
+
    [Task 12/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 12/25]  Current/Best:    7.78/  18.08 GFLOPS | Progress: (4/20) | 5.31 s
    [Task 12/25]  Current/Best:    5.20/  18.08 GFLOPS | Progress: (8/20) | 8.98 s
    [Task 12/25]  Current/Best:   18.71/  18.81 GFLOPS | Progress: (12/20) | 10.97 s
    [Task 12/25]  Current/Best:   15.39/  18.81 GFLOPS | Progress: (16/20) | 13.78 s
    [Task 12/25]  Current/Best:   15.08/  18.81 GFLOPS | Progress: (20/20) | 15.75 s Done.
+
    [Task 13/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 13/25]  Current/Best:    8.78/  17.37 GFLOPS | Progress: (4/20) | 3.69 s
    [Task 13/25]  Current/Best:   14.71/  20.99 GFLOPS | Progress: (8/20) | 6.13 s
    [Task 13/25]  Current/Best:   19.51/  20.99 GFLOPS | Progress: (12/20) | 9.07 s
    [Task 13/25]  Current/Best:   12.25/  20.99 GFLOPS | Progress: (16/20) | 12.48 s
    [Task 13/25]  Current/Best:   18.71/  20.99 GFLOPS | Progress: (20/20) | 14.69 s Done.
+
    [Task 14/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 14/25]  Current/Best:   13.51/  13.51 GFLOPS | Progress: (4/20) | 3.35 s
    [Task 14/25]  Current/Best:    6.02/  13.51 GFLOPS | Progress: (8/20) | 5.55 s
    [Task 14/25]  Current/Best:   19.39/  19.39 GFLOPS | Progress: (12/20) | 8.13 s
    [Task 14/25]  Current/Best:   16.13/  19.39 GFLOPS | Progress: (16/20) | 9.77 s Done.
+
    [Task 14/25]  Current/Best:   17.37/  19.39 GFLOPS | Progress: (20/20) | 11.54 s
    [Task 15/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 15/25]  Current/Best:   16.14/  17.67 GFLOPS | Progress: (4/20) | 2.72 s
    [Task 15/25]  Current/Best:   14.33/  18.10 GFLOPS | Progress: (8/20) | 4.08 s
    [Task 15/25]  Current/Best:   10.40/  22.24 GFLOPS | Progress: (12/20) | 6.15 s
    [Task 15/25]  Current/Best:   20.37/  22.24 GFLOPS | Progress: (16/20) | 9.61 s
    [Task 15/25]  Current/Best:    9.68/  22.24 GFLOPS | Progress: (20/20) | 10.63 s
    [Task 16/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 16/25]  Current/Best:   20.44/  20.44 GFLOPS | Progress: (4/20) | 3.09 s
    [Task 16/25]  Current/Best:    3.03/  20.44 GFLOPS | Progress: (8/20) | 4.71 s
    [Task 16/25]  Current/Best:   19.49/  20.44 GFLOPS | Progress: (12/20) | 5.92 s
    [Task 16/25]  Current/Best:   17.98/  20.44 GFLOPS | Progress: (16/20) |
  7.27 s
    [Task 16/25]  Current/Best:    9.97/  22.16 GFLOPS | Progress: (20/20) | 9.31 s Done.
+
    [Task 17/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 17/25]  Current/Best:   13.14/  18.89 GFLOPS | Progress: (4/20) | 4.74 s
    [Task 17/25]  Current/Best:   14.46/  23.30 GFLOPS | Progress: (8/20) | 7.56 s
    [Task 17/25]  Current/Best:   16.80/  23.30 GFLOPS | Progress: (12/20) | 9.61 s
    [Task 17/25]  Current/Best:   16.51/  23.30 GFLOPS | Progress: (16/20) | 11.74 s
    [Task 17/25]  Current/Best:   10.06/  23.30 GFLOPS | Progress: (20/20) | 13.87 s Done.
+
    [Task 18/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 18/25]  Current/Best:   11.23/  17.89 GFLOPS | Progress: (4/20) | 3.69 s
    [Task 18/25]  Current/Best:   10.55/  18.75 GFLOPS | Progress: (8/20) | 7.10 s
    [Task 18/25]  Current/Best:   18.99/  18.99 GFLOPS | Progress: (12/20) | 9.05 s
    [Task 18/25]  Current/Best:   10.03/  18.99 GFLOPS | Progress: (16/20) | 12.64 s
    [Task 18/25]  Current/Best:   20.62/  20.62 GFLOPS | Progress: (20/20) | 14.17 s Done.
+
    [Task 19/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 19/25]  Current/Best:    7.05/  20.41 GFLOPS | Progress: (4/20) | 6.06 s
    [Task 19/25]  Current/Best:    2.60/  20.41 GFLOPS | Progress: (8/20) | 9.32 s
    [Task 19/25]  Current/Best:   20.18/  21.48 GFLOPS | Progress: (12/20) | 12.12 s
    [Task 19/25]  Current/Best:   13.89/  21.48 GFLOPS | Progress: (16/20) | 14.97 s
    [Task 19/25]  Current/Best:    2.70/  23.70 GFLOPS | Progress: (20/20) | 17.78 s Done.
+
    [Task 20/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 20/25]  Current/Best:    8.94/  15.08 GFLOPS | Progress: (4/20) | 3.37 s Done.
      Done.
-
    [Task 20/25]  Current/Best:    9.87/  15.23 GFLOPS | Progress: (8/20) | 6.74 s
    [Task 20/25]  Current/Best:    2.34/  16.95 GFLOPS | Progress: (12/20) | 10.61 s
    [Task 20/25]  Current/Best:   12.36/  16.95 GFLOPS | Progress: (16/20) | 14.36 s
    [Task 20/25]  Current/Best:   12.15/  22.14 GFLOPS | Progress: (20/20) | 16.43 s
    [Task 21/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 21/25]  Current/Best:    6.47/  17.99 GFLOPS | Progress: (4/20) | 3.20 s
    [Task 21/25]  Current/Best:   14.73/  17.99 GFLOPS | Progress: (8/20) | 4.77 s
    [Task 21/25]  Current/Best:    1.63/  17.99 GFLOPS | Progress: (12/20) | 6.88 s
    [Task 21/25]  Current/Best:   18.31/  18.31 GFLOPS | Progress: (16/20) | 10.28 s
    [Task 21/25]  Current/Best:    4.50/  18.31 GFLOPS | Progress: (20/20) | 17.29 s
    [Task 22/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 22/25]  Current/Best:    2.73/  17.21 GFLOPS | Progress: (4/20
 ) | 2.65 s
    [Task 22/25]  Current/Best:    8.70/  21.33 GFLOPS | Progress: (8/20) | 4.63 s
    [Task 22/25]  Current/Best:   20.06/  21.33 GFLOPS | Progress: (12/20) | 6.91 s
    [Task 22/25]  Current/Best:   15.53/  21.33 GFLOPS | Progress: (16/20) | 8.94 s
    [Task 22/25]  Current/Best:   14.01/  21.33 GFLOPS | Progress: (20/20) | 10.58 s Done.
-
    [Task 23/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 23/25]  Current/Best:   17.83/  20.62 GFLOPS | Progress: (4/20) | 3.23 s
    [Task 23/25]  Current/Best:   13.90/  20.62 GFLOPS | Progress: (8/20) | 6.50 s
    [Task 23/25]  Current/Best:   21.23/  21.93 GFLOPS | Progress: (12/20) | 8.30 s
    [Task 23/25]  Current/Best:    6.48/  21.93 GFLOPS | Progress: (16/20) | 15.13 s
    [Task 23/25]  Current/Best:    7.94/  21.93 GFLOPS | Progress: (20/20) | 19.26 s Done.
-
    [Task 24/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 24/25]  Current/Best:    8.46/   8.46 GFLOPS | Progress: (4/20) | 11.77 s
    [Task 24/25]  Current/Best:    2.13/   8.46 GFLOPS | Progress: (8/20) | 22.77 s
    [Task 24/25]  Current/Best:    4.25/   8.46 GFLOPS | Progress: (12/20) | 34.28 s Done.
-
    [Task 24/25]  Current/Best:    6.25/   8.89 GFLOPS | Progress: (16/20) | 39.59 s
    [Task 24/25]  Current/Best:    3.42/   8.89 GFLOPS | Progress: (20/20) | 45.49 s Done.
-
    [Task 25/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 25/25]  Current/Best:    1.57/   2.78 GFLOPS | Progress: (4/20) | 11.54 s
    [Task 25/25]  Current/Best:    5.85/   8.03 GFLOPS | Progress: (8/20) | 22.76 s
    [Task 25/25]  Current/Best:    6.11/   8.03 GFLOPS | Progress: (12/20) | 34.19 s
    [Task 25/25]  Current/Best:    5.86/   8.50 GFLOPS | Progress: (16/20) | 36.01 s
    [Task 25/25]  Current/Best:    2.88/   9.03 GFLOPS | Progress: (20/20) | 46.73 s
+
    [Task 20/25]  Current/Best:    9.68/  15.08 GFLOPS | Progress: (8/20) | 6.66 s
    [Task 20/25]  Current/Best:    2.32/  16.57 GFLOPS | Progress: (12/20) | 10.52 s
    [Task 20/25]  Current/Best:   11.00/  16.57 GFLOPS | Progress: (16/20) | 14.25 s
    [Task 20/25]  Current/Best:   12.24/  22.03 GFLOPS | Progress: (20/20) | 16.35 s
    [Task 21/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 21/25]  Current/Best:    6.42/  17.69 GFLOPS | Progress: (4/20) | 3.23 s
    [Task 21/25]  Current/Best:   14.61/  17.69 GFLOPS | Progress: (8/20) | 4.80 s
    [Task 21/25]  Current/Best:    1.61/  17.69 GFLOPS | Progress: (12/20) | 6.96 s
    [Task 21/25]  Current/Best:   18.06/  18.06 GFLOPS | Progress: (16/20) | 10.41 s
    [Task 21/25]  Current/Best:    4.47/  18.06 GFLOPS | Progress: (20/20) | 17.46 s
    [Task 22/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 22/25]  Current/Best:    2.71/  16.99 GFLOPS | Progress: (4/20
 ) | 2.69 s
    [Task 22/25]  Current/Best:    8.53/  21.98 GFLOPS | Progress: (8/20) | 4.68 s
    [Task 22/25]  Current/Best:   19.26/  21.98 GFLOPS | Progress: (12/20) | 6.97 s
    [Task 22/25]  Current/Best:   15.26/  21.98 GFLOPS | Progress: (16/20) | 9.01 s
    [Task 22/25]  Current/Best:   14.06/  21.98 GFLOPS | Progress: (20/20) | 10.73 s Done.
+
    [Task 23/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 23/25]  Current/Best:   17.33/  20.68 GFLOPS | Progress: (4/20) | 3.26 s
    [Task 23/25]  Current/Best:   14.55/  20.68 GFLOPS | Progress: (8/20) | 6.64 s
    [Task 23/25]  Current/Best:   20.80/  21.22 GFLOPS | Progress: (12/20) | 8.45 s
    [Task 23/25]  Current/Best:    6.43/  21.22 GFLOPS | Progress: (16/20) | 15.39 s
    [Task 23/25]  Current/Best:    7.78/  21.22 GFLOPS | Progress: (20/20) | 19.60 s Done.
+
    [Task 24/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 24/25]  Current/Best:    8.58/   8.58 GFLOPS | Progress: (4/20) | 11.81 s
    [Task 24/25]  Current/Best:    3.59/   8.58 GFLOPS | Progress: (8/20) | 23.09 s
    [Task 24/25]  Current/Best:    4.30/   8.58 GFLOPS | Progress: (12/20) | 33.81 s Done.
+
    [Task 24/25]  Current/Best:    6.19/   8.70 GFLOPS | Progress: (16/20) | 39.15 s
    [Task 24/25]  Current/Best:    3.35/   8.70 GFLOPS | Progress: (20/20) | 45.15 s Done.
+
    [Task 25/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 25/25]  Current/Best:    1.55/   2.76 GFLOPS | Progress: (4/20) | 11.61 s
    [Task 25/25]  Current/Best:    5.98/   7.97 GFLOPS | Progress: (8/20) | 22.93 s
    [Task 25/25]  Current/Best:    6.05/   7.97 GFLOPS | Progress: (12/20) | 34.21 s
    [Task 25/25]  Current/Best:    5.83/   8.79 GFLOPS | Progress: (16/20) | 36.07 s
    [Task 25/25]  Current/Best:    2.84/   9.15 GFLOPS | Progress: (20/20) | 46.77 s
 
 
 
@@ -690,8 +690,8 @@ Verify that the optimized model runs and produces the same results:
 
  .. code-block:: none
 
-    class='n02123045 tabby, tabby cat' with probability=0.621103
-    class='n02123159 tiger cat' with probability=0.356379
+    class='n02123045 tabby, tabby cat' with probability=0.621104
+    class='n02123159 tiger cat' with probability=0.356378
     class='n02124075 Egyptian cat' with probability=0.019712
     class='n02129604 tiger, Panthera tigris' with probability=0.001215
     class='n04040759 radiator' with probability=0.000262
@@ -748,8 +748,8 @@ improvement in comparing the optimized model to the unoptimized model.
 
  .. code-block:: none
 
-    optimized: {'mean': 406.72224016999735, 'median': 406.71318439999595, 'std': 1.0842245866262317}
-    unoptimized: {'mean': 487.30506773000104, 'median': 486.955957400005, 'std': 1.2557887672127943}
+    optimized: {'mean': 410.9405462599989, 'median': 411.0269161500014, 'std': 0.7445314665934331}
+    unoptimized: {'mean': 492.2628494100014, 'median': 492.24715089999904, 'std': 0.5421003771522068}
 
 
 
@@ -772,7 +772,7 @@ profiling/benchmarking.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 10 minutes  9.131 seconds)
+   **Total running time of the script:** ( 10 minutes  14.896 seconds)
 
 
 .. _sphx_glr_download_tutorial_autotvm_relay_x86.py:
diff --git a/docs/_sources/tutorial/cross_compilation_and_rpc.rst.txt b/docs/_sources/tutorial/cross_compilation_and_rpc.rst.txt
index 5027a3345..81c048800 100644
--- a/docs/_sources/tutorial/cross_compilation_and_rpc.rst.txt
+++ b/docs/_sources/tutorial/cross_compilation_and_rpc.rst.txt
@@ -282,7 +282,7 @@ device and returns the measured cost. Network overhead is excluded.
 
  .. code-block:: none
 
-    1.25e-07 secs/op
+    1.297e-07 secs/op
 
 
 
diff --git a/docs/_sources/tutorial/intro_topi.rst.txt b/docs/_sources/tutorial/intro_topi.rst.txt
index e391301b1..c6b275c05 100644
--- a/docs/_sources/tutorial/intro_topi.rst.txt
+++ b/docs/_sources/tutorial/intro_topi.rst.txt
@@ -263,7 +263,7 @@ As you can see, scheduled stages of computation have been accumulated and we can
 
  .. code-block:: none
 
-    [stage(a, placeholder(a, 0x24996460)), stage(b, placeholder(b, 0x575ee30)), stage(T_add, compute(T_add, body=[(a[ax0, ax1, ax2] + b[ax1, ax2])], axis=[iter_var(ax0, range(min=0, ext=100)), iter_var(ax1, range(min=0, ext=10)), iter_var(ax2, range(min=0, ext=10))], reduce_axis=[], tag=broadcast, attrs={})), stage(T_multiply, compute(T_multiply, body=[(a[ax0, ax1, ax2]*b[ax1, ax2])], axis=[iter_var(ax0, range(min=0, ext=100)), iter_var(ax1, range(min=0, ext=10)), iter_var(ax2, range(min [...]
+    [stage(a, placeholder(a, 0xbdd8e70)), stage(b, placeholder(b, 0x27f6ba90)), stage(T_add, compute(T_add, body=[(a[ax0, ax1, ax2] + b[ax1, ax2])], axis=[iter_var(ax0, range(min=0, ext=100)), iter_var(ax1, range(min=0, ext=10)), iter_var(ax2, range(min=0, ext=10))], reduce_axis=[], tag=broadcast, attrs={})), stage(T_multiply, compute(T_multiply, body=[(a[ax0, ax1, ax2]*b[ax1, ax2])], axis=[iter_var(ax0, range(min=0, ext=100)), iter_var(ax1, range(min=0, ext=10)), iter_var(ax2, range(min [...]
 
 
 
diff --git a/docs/_sources/tutorial/sg_execution_times.rst.txt b/docs/_sources/tutorial/sg_execution_times.rst.txt
index be5918bcf..9e93e2698 100644
--- a/docs/_sources/tutorial/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorial/sg_execution_times.rst.txt
@@ -5,30 +5,30 @@
 
 Computation times
 =================
-**13:01.514** total execution time for **tutorial** files:
+**13:12.028** total execution time for **tutorial** files:
 
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_autotvm_relay_x86.py` (``autotvm_relay_x86.py``)                 | 10:09.131 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_autotvm_relay_x86.py` (``autotvm_relay_x86.py``)                 | 10:14.896 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)     | 01:02.146 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)     | 01:00.870 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_auto_scheduler_matmul_x86.py` (``auto_scheduler_matmul_x86.py``) | 00:55.467 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_auto_scheduler_matmul_x86.py` (``auto_scheduler_matmul_x86.py``) | 00:59.370 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_relay_quick_start.py` (``relay_quick_start.py``)                 | 00:29.541 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_relay_quick_start.py` (``relay_quick_start.py``)                 | 00:30.202 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_autotvm_matmul_x86.py` (``autotvm_matmul_x86.py``)               | 00:23.382 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_autotvm_matmul_x86.py` (``autotvm_matmul_x86.py``)               | 00:24.556 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_tensor_ir_blitz_course.py` (``tensor_ir_blitz_course.py``)       | 00:01.006 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_tensor_ir_blitz_course.py` (``tensor_ir_blitz_course.py``)       | 00:01.266 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_intro_topi.py` (``intro_topi.py``)                               | 00:00.687 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_intro_topi.py` (``intro_topi.py``)                               | 00:00.704 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``) | 00:00.147 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``) | 00:00.157 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_tutorial_introduction.py` (``introduction.py``)                           | 00:00.005 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_tutorial_install.py` (``install.py``)                                     | 00:00.001 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_tvmc_command_line_driver.py` (``tvmc_command_line_driver.py``)   | 00:00.001 | 0.0 MB |
-+------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_tutorial_tvmc_python.py` (``tvmc_python.py``)                             | 00:00.001 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
+| :ref:`sphx_glr_tutorial_tvmc_command_line_driver.py` (``tvmc_command_line_driver.py``)   | 00:00.001 | 0.0 MB |
++------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/tutorial/tensor_expr_get_started.rst.txt b/docs/_sources/tutorial/tensor_expr_get_started.rst.txt
index 95394c10e..494d26094 100644
--- a/docs/_sources/tutorial/tensor_expr_get_started.rst.txt
+++ b/docs/_sources/tutorial/tensor_expr_get_started.rst.txt
@@ -301,8 +301,8 @@ helper function to run a profile of the TVM generated code.
 
  .. code-block:: none
 
-    Numpy running time: 0.000008
-    naive: 0.000007
+    Numpy running time: 0.000007
+    naive: 0.000006
 
 
 
@@ -512,10 +512,10 @@ We can now compare the different schedules
  .. code-block:: none
 
                 Operator                  Timing             Performance
-                   numpy    8.328960000199004e-06                    1.0
-                   naive               7.263e-06      0.8720176348339367
-                parallel              5.8597e-06      0.7035332142140188
-                  vector             2.37667e-05       2.853501517528256
+                   numpy    7.115079999948648e-06                    1.0
+                   naive              5.8345e-06        0.82001888946324
+                parallel              6.0302e-06      0.8475238507569166
+                  vector             2.44278e-05       3.433243196165933
 
 
 
@@ -936,7 +936,7 @@ matrix multiplication.
 
  .. code-block:: none
 
-    Numpy running time: 0.018255
+    Numpy running time: 0.018213
 
 
 
@@ -996,7 +996,7 @@ optimizations.
 
     /workspace/python/tvm/driver/build_module.py:268: UserWarning: target_host parameter is going to be deprecated. Please pass in tvm.target.Target(target, host=target_host) instead.
       "target_host parameter is going to be deprecated. "
-    none: 3.530906
+    none: 3.422654
 
 
 
@@ -1101,7 +1101,7 @@ schedule.
 
     /workspace/python/tvm/driver/build_module.py:268: UserWarning: target_host parameter is going to be deprecated. Please pass in tvm.target.Target(target, host=target_host) instead.
       "target_host parameter is going to be deprecated. "
-    blocking: 0.291485
+    blocking: 0.294118
 
 
 
@@ -1199,7 +1199,7 @@ already cache friendly from our previous optimizations.
 
     /workspace/python/tvm/driver/build_module.py:268: UserWarning: target_host parameter is going to be deprecated. Please pass in tvm.target.Target(target, host=target_host) instead.
       "target_host parameter is going to be deprecated. "
-    vectorization: 0.327817
+    vectorization: 0.334024
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
       buffers = {A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
@@ -1275,7 +1275,7 @@ more cache friendly.
 
     /workspace/python/tvm/driver/build_module.py:268: UserWarning: target_host parameter is going to be deprecated. Please pass in tvm.target.Target(target, host=target_host) instead.
       "target_host parameter is going to be deprecated. "
-    loop permutation: 0.117509
+    loop permutation: 0.114953
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
       buffers = {A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
@@ -1376,7 +1376,7 @@ optimized schedule.
 
     /workspace/python/tvm/driver/build_module.py:268: UserWarning: target_host parameter is going to be deprecated. Please pass in tvm.target.Target(target, host=target_host) instead.
       "target_host parameter is going to be deprecated. "
-    array packing: 0.109759
+    array packing: 0.108427
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
       buffers = {A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
@@ -1471,7 +1471,7 @@ to `C` when all the block results are ready.
 
     /workspace/python/tvm/driver/build_module.py:268: UserWarning: target_host parameter is going to be deprecated. Please pass in tvm.target.Target(target, host=target_host) instead.
       "target_host parameter is going to be deprecated. "
-    block caching: 0.109361
+    block caching: 0.110865
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
       buffers = {A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
@@ -1559,7 +1559,7 @@ of thread-level parallelization.
 
     /workspace/python/tvm/driver/build_module.py:268: UserWarning: target_host parameter is going to be deprecated. Please pass in tvm.target.Target(target, host=target_host) instead.
       "target_host parameter is going to be deprecated. "
-    parallelization: 0.142502
+    parallelization: 0.144002
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
       buffers = {A: Buffer(A_2: Pointer(float32), float32, [1048576], []),
@@ -1640,13 +1640,13 @@ working, we can compare the results.
  .. code-block:: none
 
                 Operator                  Timing             Performance
-                    none      3.5309060128999996                     1.0
-                blocking             0.291484958     0.08255245450744748
-           vectorization            0.3278168877     0.09284214490624683
-        loop permutation     0.11750912869999999     0.03328016329822598
-           array packing     0.10975897259999998    0.031085215012521067
-           block caching            0.1093614407    0.030972628639916528
-         parallelization             0.142501873     0.04035844411586604
+                    none      3.4226544585000007                     1.0
+                blocking             0.294118345     0.08593281868392265
+           vectorization            0.3340239437     0.09759207298021783
+        loop permutation            0.1149531657      0.0335859687543156
+           array packing     0.10842708940000001    0.031679239232206585
+           block caching     0.11086485849999998     0.03239148440026493
+         parallelization     0.14400246779999998    0.042073329208672135
 
 
 
@@ -1688,7 +1688,7 @@ the computation for specific platforms.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  2.146 seconds)
+   **Total running time of the script:** ( 1 minutes  0.870 seconds)
 
 
 .. _sphx_glr_download_tutorial_tensor_expr_get_started.py:
diff --git a/docs/commit_hash b/docs/commit_hash
index 8feee8cf6..41aff6cf5 100644
--- a/docs/commit_hash
+++ b/docs/commit_hash
@@ -1 +1 @@
-8a0911c429c9987710d8d79c81b1433b33615989
+09732488588f331bb1a46e1e2138567035797126
diff --git a/docs/how_to/compile_models/from_darknet.html b/docs/how_to/compile_models/from_darknet.html
index baa8d4192..9e6245d8a 100644
--- a/docs/how_to/compile_models/from_darknet.html
+++ b/docs/how_to/compile_models/from_darknet.html
@@ -574,7 +574,7 @@ class:[&#39;truck 0.9266&#39;] left:471 top:83 right:689 bottom:169
 class:[&#39;bicycle 0.9984&#39;] left:111 top:113 right:577 bottom:447
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  1.119 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  2.912 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-compile-models-from-darknet-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/7716f96385bd5abb6e822041e285be54/from_darknet.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">from_darknet.py</span></code></a></p>
diff --git a/docs/how_to/compile_models/from_mxnet.html b/docs/how_to/compile_models/from_mxnet.html
index c45b6b113..7e1fb900a 100644
--- a/docs/how_to/compile_models/from_mxnet.html
+++ b/docs/how_to/compile_models/from_mxnet.html
@@ -427,7 +427,7 @@ to download the full example code</p>
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;x&quot;</span><span class="p">,</span> <a href="https://docs.python.org/3/library/stdtypes.html#tuple" title="builtins.tuple" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span><span class="o">.</span><span class="n">shape</span></a><span class="p">)</span>
 </pre></div>
 </div>
-<img src="../../_images/sphx_glr_from_mxnet_001.png" srcset="../../_images/sphx_glr_from_mxnet_001.png" alt="from mxnet" class = "sphx-glr-single-img"/><div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading /workspace/.mxnet/models/resnet18_v1-a0666292.zipf54f9a8e-0995-40d6-9434-9d790e8f74a1 from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/resnet18_v1-a0666292.zip...
+<img src="../../_images/sphx_glr_from_mxnet_001.png" srcset="../../_images/sphx_glr_from_mxnet_001.png" alt="from mxnet" class = "sphx-glr-single-img"/><div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading /workspace/.mxnet/models/resnet18_v1-a0666292.zipf5d803c2-ad5a-44bd-9d02-d1c583669666 from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/resnet18_v1-a0666292.zip...
 x (1, 3, 224, 224)
 </pre></div>
 </div>
diff --git a/docs/how_to/compile_models/from_oneflow.html b/docs/how_to/compile_models/from_oneflow.html
index 2f62c53b4..900ea5b3e 100644
--- a/docs/how_to/compile_models/from_oneflow.html
+++ b/docs/how_to/compile_models/from_oneflow.html
@@ -432,13 +432,12 @@ python3 -m pip install -f https://release.oneflow.info <span class="nv">oneflow<
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading: &quot;https://oneflow-public.oss-cn-beijing.aliyuncs.com/model_zoo/flowvision/classification/ResNet/resnet18.zip&quot; to /workspace/.oneflow/flowvision_cache/resnet18.zip
 
   0%|          | 0.00/41.5M [00:00&lt;?, ?B/s]
- 19%|#9        | 7.99M/41.5M [00:00&lt;00:00, 54.0MB/s]
- 38%|###7      | 15.7M/41.5M [00:00&lt;00:00, 59.2MB/s]
- 52%|#####1    | 21.4M/41.5M [00:00&lt;00:00, 40.0MB/s]
- 62%|######1   | 25.6M/41.5M [00:00&lt;00:00, 38.6MB/s]
- 77%|#######7  | 32.0M/41.5M [00:00&lt;00:00, 38.8MB/s]
- 89%|########9 | 37.0M/41.5M [00:00&lt;00:00, 42.2MB/s]
-100%|##########| 41.5M/41.5M [00:00&lt;00:00, 43.9MB/s]
+ 15%|#5        | 6.33M/41.5M [00:00&lt;00:00, 54.3MB/s]
+ 28%|##7       | 11.5M/41.5M [00:00&lt;00:00, 44.9MB/s]
+ 54%|#####3    | 22.3M/41.5M [00:00&lt;00:00, 66.0MB/s]
+ 77%|#######7  | 32.0M/41.5M [00:00&lt;00:00, 63.5MB/s]
+ 92%|#########2| 38.3M/41.5M [00:00&lt;00:00, 54.2MB/s]
+100%|##########| 41.5M/41.5M [00:00&lt;00:00, 57.1MB/s]
 </pre></div>
 </div>
 </div>
diff --git a/docs/how_to/compile_models/from_pytorch.html b/docs/how_to/compile_models/from_pytorch.html
index 6f9bd6aad..54a18cec1 100644
--- a/docs/how_to/compile_models/from_pytorch.html
+++ b/docs/how_to/compile_models/from_pytorch.html
@@ -414,9 +414,8 @@ be unstable.</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]
- 34%|###3      | 15.1M/44.7M [00:00&lt;00:00, 158MB/s]
- 86%|########5 | 38.4M/44.7M [00:00&lt;00:00, 209MB/s]
-100%|##########| 44.7M/44.7M [00:00&lt;00:00, 205MB/s]
+ 46%|####6     | 20.7M/44.7M [00:00&lt;00:00, 217MB/s]
+100%|##########| 44.7M/44.7M [00:00&lt;00:00, 248MB/s]
 </pre></div>
 </div>
 </div>
diff --git a/docs/how_to/compile_models/from_tensorflow.html b/docs/how_to/compile_models/from_tensorflow.html
index 295383229..e35ad7736 100644
--- a/docs/how_to/compile_models/from_tensorflow.html
+++ b/docs/how_to/compile_models/from_tensorflow.html
@@ -636,7 +636,7 @@ banana (score = 0.00022)
 desk (score = 0.00019)
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  2.617 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  1.073 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-compile-models-from-tensorflow-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/7f1d3d1b878694c201c614c807cdebc8/from_tensorflow.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">from_tensorflow.py</span></code></a></p>
diff --git a/docs/how_to/compile_models/sg_execution_times.html b/docs/how_to/compile_models/sg_execution_times.html
index 2d86141c3..a6a795408 100644
--- a/docs/how_to/compile_models/sg_execution_times.html
+++ b/docs/how_to/compile_models/sg_execution_times.html
@@ -327,7 +327,7 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-compile-models-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>05:19.145</strong> total execution time for <strong>how_to_compile_models</strong> files:</p>
+<p><strong>04:57.044</strong> total execution time for <strong>how_to_compile_models</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 81%" />
@@ -335,44 +335,44 @@
 <col style="width: 8%" />
 </colgroup>
 <tbody>
-<tr class="row-odd"><td><p><a class="reference internal" href="from_tensorflow.html#sphx-glr-how-to-compile-models-from-tensorflow-py"><span class="std std-ref">Compile Tensorflow Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_tensorflow.py</span></code>)</p></td>
-<td><p>01:02.617</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="from_darknet.html#sphx-glr-how-to-compile-models-from-darknet-py"><span class="std std-ref">Compile YOLO-V2 and YOLO-V3 in DarkNet Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_darknet.py</span></code>)</p></td>
+<td><p>01:02.912</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="from_darknet.html#sphx-glr-how-to-compile-models-from-darknet-py"><span class="std std-ref">Compile YOLO-V2 and YOLO-V3 in DarkNet Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_darknet.py</span></code>)</p></td>
-<td><p>01:01.119</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="from_tensorflow.html#sphx-glr-how-to-compile-models-from-tensorflow-py"><span class="std std-ref">Compile Tensorflow Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_tensorflow.py</span></code>)</p></td>
+<td><p>01:01.073</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="from_pytorch.html#sphx-glr-how-to-compile-models-from-pytorch-py"><span class="std std-ref">Compile PyTorch Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_pytorch.py</span></code>)</p></td>
-<td><p>00:41.879</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="from_paddle.html#sphx-glr-how-to-compile-models-from-paddle-py"><span class="std std-ref">Compile PaddlePaddle Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_paddle.py</span></code>)</p></td>
+<td><p>00:38.679</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="from_paddle.html#sphx-glr-how-to-compile-models-from-paddle-py"><span class="std std-ref">Compile PaddlePaddle Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_paddle.py</span></code>)</p></td>
-<td><p>00:38.043</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="from_oneflow.html#sphx-glr-how-to-compile-models-from-oneflow-py"><span class="std std-ref">Compile OneFlow Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_oneflow.py</span></code>)</p></td>
+<td><p>00:27.162</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="from_oneflow.html#sphx-glr-how-to-compile-models-from-oneflow-py"><span class="std std-ref">Compile OneFlow Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_oneflow.py</span></code>)</p></td>
-<td><p>00:27.241</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="from_tflite.html#sphx-glr-how-to-compile-models-from-tflite-py"><span class="std std-ref">Compile TFLite Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_tflite.py</span></code>)</p></td>
+<td><p>00:24.815</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="from_mxnet.html#sphx-glr-how-to-compile-models-from-mxnet-py"><span class="std std-ref">Compile MXNet Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_mxnet.py</span></code>)</p></td>
-<td><p>00:24.421</p></td>
+<td><p>00:24.448</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="from_tflite.html#sphx-glr-how-to-compile-models-from-tflite-py"><span class="std std-ref">Compile TFLite Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_tflite.py</span></code>)</p></td>
-<td><p>00:23.919</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="from_coreml.html#sphx-glr-how-to-compile-models-from-coreml-py"><span class="std std-ref">Compile CoreML Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_coreml.py</span></code>)</p></td>
+<td><p>00:22.288</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="from_coreml.html#sphx-glr-how-to-compile-models-from-coreml-py"><span class="std std-ref">Compile CoreML Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_coreml.py</span></code>)</p></td>
-<td><p>00:22.921</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="from_pytorch.html#sphx-glr-how-to-compile-models-from-pytorch-py"><span class="std std-ref">Compile PyTorch Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_pytorch.py</span></code>)</p></td>
+<td><p>00:19.337</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="from_keras.html#sphx-glr-how-to-compile-models-from-keras-py"><span class="std std-ref">Compile Keras Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_keras.py</span></code>)</p></td>
-<td><p>00:14.721</p></td>
+<td><p>00:13.945</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="from_onnx.html#sphx-glr-how-to-compile-models-from-onnx-py"><span class="std std-ref">Compile ONNX Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_onnx.py</span></code>)</p></td>
-<td><p>00:02.264</p></td>
+<td><p>00:02.385</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 </tbody>
diff --git a/docs/how_to/deploy_models/deploy_model_on_android.html b/docs/how_to/deploy_models/deploy_model_on_android.html
index 2b9f4bc7d..c651ffb2b 100644
--- a/docs/how_to/deploy_models/deploy_model_on_android.html
+++ b/docs/how_to/deploy_models/deploy_model_on_android.html
@@ -653,7 +653,7 @@ to the remote android device.</p>
 Evaluate inference time cost...
 Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-  15.5905      15.5442      16.0856      15.4125       0.1944
+  15.9597      15.7675      16.6716      15.6476       0.3431
 </pre></div>
 </div>
 </div>
diff --git a/docs/how_to/deploy_models/deploy_object_detection_pytorch.html b/docs/how_to/deploy_models/deploy_object_detection_pytorch.html
index 96e5cfdb4..c82fa7b86 100644
--- a/docs/how_to/deploy_models/deploy_object_detection_pytorch.html
+++ b/docs/how_to/deploy_models/deploy_object_detection_pytorch.html
@@ -436,14 +436,16 @@ be unstable.</p>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading: &quot;https://download.pytorch.org/models/maskrcnn_resnet50_fpn_coco-bf2d0c1e.pth&quot; to /workspace/.cache/torch/hub/checkpoints/maskrcnn_resnet50_fpn_coco-bf2d0c1e.pth
 
   0%|          | 0.00/170M [00:00&lt;?, ?B/s]
-  8%|7         | 13.3M/170M [00:00&lt;00:01, 139MB/s]
- 20%|##        | 34.5M/170M [00:00&lt;00:00, 188MB/s]
- 33%|###2      | 55.4M/170M [00:00&lt;00:00, 202MB/s]
- 45%|####5     | 76.9M/170M [00:00&lt;00:00, 211MB/s]
- 58%|#####8    | 98.5M/170M [00:00&lt;00:00, 217MB/s]
- 72%|#######2  | 122M/170M [00:00&lt;00:00, 228MB/s]
- 86%|########6 | 146M/170M [00:00&lt;00:00, 236MB/s]
-100%|##########| 170M/170M [00:00&lt;00:00, 223MB/s]
+  3%|2         | 4.66M/170M [00:00&lt;00:03, 48.8MB/s]
+  5%|5         | 9.31M/170M [00:00&lt;00:04, 40.5MB/s]
+ 12%|#2        | 20.6M/170M [00:00&lt;00:02, 72.7MB/s]
+ 22%|##1       | 37.0M/170M [00:00&lt;00:01, 109MB/s]
+ 34%|###4      | 58.1M/170M [00:00&lt;00:00, 147MB/s]
+ 49%|####9     | 83.9M/170M [00:00&lt;00:00, 188MB/s]
+ 65%|######4   | 110M/170M [00:00&lt;00:00, 215MB/s]
+ 80%|#######9  | 135M/170M [00:00&lt;00:00, 231MB/s]
+ 95%|#########4| 161M/170M [00:00&lt;00:00, 243MB/s]
+100%|##########| 170M/170M [00:00&lt;00:00, 183MB/s]
 /usr/local/lib/python3.7/dist-packages/torch/nn/functional.py:3878: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).
   for i in range(dim)
 /usr/local/lib/python3.7/dist-packages/torchvision/models/detection/anchor_utils.py:127: UserWarning: __floordiv__ is deprecated, and its behavior will change in a future version of pytorch. It currently rounds toward 0 (like the &#39;trunc&#39; function NOT &#39;floor&#39;). This results in incorrect rounding for negative values. To keep the current behavior, use torch.div(a, b, rounding_mode=&#39;trunc&#39;), or for actual floor division, use torch.div(a, b, rounding_mode=&#39;floor&#39;).
@@ -538,7 +540,7 @@ torchvision rcnn models.</p>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Get 9 valid boxes
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 2 minutes  56.718 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 2 minutes  55.108 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-deploy-models-deploy-object-detection-pytorch-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/7795da4b258c8feff986668b95ef57ad/deploy_object_detection_pytorch.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">deploy_object_detection_pytorch.py</span></code></a></p>
diff --git a/docs/how_to/deploy_models/deploy_prequantized.html b/docs/how_to/deploy_models/deploy_prequantized.html
index fe83394b6..da5bf8a0e 100644
--- a/docs/how_to/deploy_models/deploy_prequantized.html
+++ b/docs/how_to/deploy_models/deploy_prequantized.html
@@ -480,7 +480,8 @@ training. Other models require a full post training calibration.</p>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading: &quot;https://download.pytorch.org/models/mobilenet_v2-b0353104.pth&quot; to /workspace/.cache/torch/hub/checkpoints/mobilenet_v2-b0353104.pth
 
   0%|          | 0.00/13.6M [00:00&lt;?, ?B/s]
-100%|##########| 13.6M/13.6M [00:00&lt;00:00, 205MB/s]
+ 91%|#########1| 12.4M/13.6M [00:00&lt;00:00, 130MB/s]
+100%|##########| 13.6M/13.6M [00:00&lt;00:00, 127MB/s]
 </pre></div>
 </div>
 </div>
@@ -569,7 +570,7 @@ output values are identical out of 1000 outputs from mobilenet v2.</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)
-  90.2968      90.2124      91.2757      90.0580       0.2129
+  90.3148      90.2032      95.9629      90.0734       0.6554
 </pre></div>
 </div>
 <div class="admonition note">
@@ -608,7 +609,7 @@ This includes support for the VNNI 8 bit dot product instruction (CascadeLake or
 <div class="section" id="deploy-a-quantized-tflite-model">
 <h2>Deploy a quantized TFLite Model<a class="headerlink" href="#deploy-a-quantized-tflite-model" title="Permalink to this headline">¶</a></h2>
 <p>TODO</p>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  8.983 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  8.316 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-deploy-models-deploy-prequantized-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/fb8217c13f4351224c6cf3aacf1a87fc/deploy_prequantized.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">deploy_prequantized.py</span></code></a></p>
diff --git a/docs/how_to/deploy_models/deploy_prequantized_tflite.html b/docs/how_to/deploy_models/deploy_prequantized_tflite.html
index f53b4623e..521605108 100644
--- a/docs/how_to/deploy_models/deploy_prequantized_tflite.html
+++ b/docs/how_to/deploy_models/deploy_prequantized_tflite.html
@@ -573,7 +573,7 @@ TFLite Top-5 labels: [387 102 386 341 349]
 </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)
-  119.6053     119.5991     121.5618     118.8711      0.3607
+  119.7879     119.7404     125.6071     118.9268      0.7010
 </pre></div>
 </div>
 <div class="admonition note">
@@ -601,7 +601,7 @@ network for ARM CPU</span></a>.</p></li>
 </ul>
 </div></blockquote>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  52.254 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  54.677 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-deploy-models-deploy-prequantized-tflite-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/56691c7a27d45da61d112276334640d3/deploy_prequantized_tflite.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">deploy_prequantized_tflite.py</span></code></a></p>
diff --git a/docs/how_to/deploy_models/deploy_quantized.html b/docs/how_to/deploy_models/deploy_quantized.html
index 36fb7271f..eebbd7dda 100644
--- a/docs/how_to/deploy_models/deploy_quantized.html
+++ b/docs/how_to/deploy_models/deploy_quantized.html
@@ -509,7 +509,7 @@ for calibration. But the accuracy might be impacted.</p>
   DeprecationWarning,
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  18.747 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  29.317 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-deploy-models-deploy-quantized-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/7810ecf51bfc05f7d5e8a400ac3e815d/deploy_quantized.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">deploy_quantized.py</span></code></a></p>
diff --git a/docs/how_to/deploy_models/deploy_ssd_gluoncv.html b/docs/how_to/deploy_models/deploy_ssd_gluoncv.html
index 089a561f0..08e155215 100644
--- a/docs/how_to/deploy_models/deploy_ssd_gluoncv.html
+++ b/docs/how_to/deploy_models/deploy_ssd_gluoncv.html
@@ -441,26 +441,23 @@ to your device.</p>
 Downloading /workspace/.mxnet/models/ssd_512_resnet50_v1_voc-9c8b225a.zip from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/ssd_512_resnet50_v1_voc-9c8b225a.zip...
 
   0%|          | 0/132723 [00:00&lt;?, ?KB/s]
-  4%|4         | 5452/132723 [00:00&lt;00:02, 54512.90KB/s]
- 10%|9         | 12695/132723 [00:00&lt;00:01, 65048.38KB/s]
- 14%|#4        | 19200/132723 [00:00&lt;00:02, 42469.21KB/s]
- 19%|#9        | 25529/132723 [00:00&lt;00:02, 48686.94KB/s]
- 25%|##4       | 32757/132723 [00:00&lt;00:02, 45944.54KB/s]
- 29%|##9       | 39112/132723 [00:00&lt;00:01, 50528.06KB/s]
- 35%|###4      | 45917/132723 [00:00&lt;00:01, 55277.64KB/s]
- 40%|###9      | 52932/132723 [00:00&lt;00:01, 59421.19KB/s]
- 45%|####5     | 59771/132723 [00:01&lt;00:01, 61977.18KB/s]
- 50%|#####     | 66635/132723 [00:01&lt;00:01, 63904.25KB/s]
- 55%|#####5    | 73398/132723 [00:01&lt;00:00, 64992.39KB/s]
- 61%|######    | 80436/132723 [00:01&lt;00:00, 66577.98KB/s]
- 66%|######5   | 87190/132723 [00:01&lt;00:00, 66071.67KB/s]
- 71%|#######1  | 94321/132723 [00:01&lt;00:00, 67614.41KB/s]
- 77%|#######6  | 101709/132723 [00:01&lt;00:00, 69468.97KB/s]
- 82%|########2 | 109000/132723 [00:01&lt;00:00, 70475.53KB/s]
- 88%|########7 | 116357/132723 [00:01&lt;00:00, 71396.41KB/s]
- 93%|#########3| 123677/132723 [00:01&lt;00:00, 71931.60KB/s]
- 99%|#########8| 130969/132723 [00:02&lt;00:00, 72223.94KB/s]
-100%|##########| 132723/132723 [00:02&lt;00:00, 62750.84KB/s]
+  4%|4         | 5749/132723 [00:00&lt;00:02, 57476.90KB/s]
+ 11%|#         | 14100/132723 [00:00&lt;00:01, 72785.32KB/s]
+ 17%|#6        | 22492/132723 [00:00&lt;00:01, 77866.99KB/s]
+ 23%|##3       | 30805/132723 [00:00&lt;00:01, 79941.88KB/s]
+ 29%|##9       | 38800/132723 [00:00&lt;00:01, 79732.96KB/s]
+ 36%|###5      | 47187/132723 [00:00&lt;00:01, 81135.42KB/s]
+ 42%|####1     | 55544/132723 [00:00&lt;00:00, 81927.40KB/s]
+ 48%|####8     | 63885/132723 [00:00&lt;00:00, 82395.95KB/s]
+ 54%|#####4    | 72292/132723 [00:00&lt;00:00, 82916.76KB/s]
+ 61%|######    | 80733/132723 [00:01&lt;00:00, 83371.50KB/s]
+ 67%|######7   | 89142/132723 [00:01&lt;00:00, 83588.17KB/s]
+ 74%|#######3  | 97580/132723 [00:01&lt;00:00, 83825.85KB/s]
+ 80%|#######9  | 105963/132723 [00:01&lt;00:00, 83790.17KB/s]
+ 86%|########6 | 114413/132723 [00:01&lt;00:00, 83995.25KB/s]
+ 93%|#########2| 122813/132723 [00:01&lt;00:00, 83965.03KB/s]
+ 99%|#########8| 131245/132723 [00:01&lt;00:00, 84064.73KB/s]
+100%|##########| 132723/132723 [00:01&lt;00:00, 81889.23KB/s]
 </pre></div>
 </div>
 <p>Create TVM runtime and do inference
@@ -503,7 +500,7 @@ Downloading /workspace/.mxnet/models/ssd_512_resnet50_v1_voc-9c8b225a.zip from h
 <span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
 </pre></div>
 </div>
-<img src="../../_images/sphx_glr_deploy_ssd_gluoncv_001.png" srcset="../../_images/sphx_glr_deploy_ssd_gluoncv_001.png" alt="deploy ssd gluoncv" class = "sphx-glr-single-img"/><p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 2 minutes  35.325 seconds)</p>
+<img src="../../_images/sphx_glr_deploy_ssd_gluoncv_001.png" srcset="../../_images/sphx_glr_deploy_ssd_gluoncv_001.png" alt="deploy ssd gluoncv" class = "sphx-glr-single-img"/><p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 2 minutes  34.251 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-deploy-models-deploy-ssd-gluoncv-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/cccb17d28e5e8b2e94ea8cd5ec59f6ed/deploy_ssd_gluoncv.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">deploy_ssd_gluoncv.py</span></code></a></p>
diff --git a/docs/how_to/deploy_models/sg_execution_times.html b/docs/how_to/deploy_models/sg_execution_times.html
index 1738e592d..4f85e64bc 100644
--- a/docs/how_to/deploy_models/sg_execution_times.html
+++ b/docs/how_to/deploy_models/sg_execution_times.html
@@ -327,7 +327,7 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-deploy-models-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>11:05.387</strong> total execution time for <strong>how_to_deploy_models</strong> files:</p>
+<p><strong>11:15.063</strong> total execution time for <strong>how_to_deploy_models</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 86%" />
@@ -336,35 +336,35 @@
 </colgroup>
 <tbody>
 <tr class="row-odd"><td><p><a class="reference internal" href="deploy_object_detection_pytorch.html#sphx-glr-how-to-deploy-models-deploy-object-detection-pytorch-py"><span class="std std-ref">Compile PyTorch Object Detection Models</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_object_detection_pytorch.py</span></code>)</p></td>
-<td><p>02:56.718</p></td>
+<td><p>02:55.108</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="deploy_ssd_gluoncv.html#sphx-glr-how-to-deploy-models-deploy-ssd-gluoncv-py"><span class="std std-ref">Deploy Single Shot Multibox Detector(SSD) model</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_ssd_gluoncv.py</span></code>)</p></td>
-<td><p>02:35.325</p></td>
+<td><p>02:34.251</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="deploy_prequantized_tflite.html#sphx-glr-how-to-deploy-models-deploy-prequantized-tflite-py"><span class="std std-ref">Deploy a Framework-prequantized Model with TVM - Part 3 (TFLite)</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_prequantized_tflite.py</span></code>)</p></td>
-<td><p>01:52.254</p></td>
+<td><p>01:54.677</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="deploy_quantized.html#sphx-glr-how-to-deploy-models-deploy-quantized-py"><span class="std std-ref">Deploy a Quantized Model on Cuda</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_quantized.py</span></code>)</p></td>
-<td><p>01:18.747</p></td>
+<td><p>01:29.317</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="deploy_prequantized.html#sphx-glr-how-to-deploy-models-deploy-prequantized-py"><span class="std std-ref">Deploy a Framework-prequantized Model with TVM</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_prequantized.py</span></code>)</p></td>
-<td><p>01:08.983</p></td>
+<td><p>01:08.316</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="deploy_model_on_android.html#sphx-glr-how-to-deploy-models-deploy-model-on-android-py"><span class="std std-ref">Deploy the Pretrained Model on Android</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_model_on_android.py</span></code>)</p></td>
-<td><p>00:29.017</p></td>
+<td><p>00:29.376</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="deploy_model_on_nano.html#sphx-glr-how-to-deploy-models-deploy-model-on-nano-py"><span class="std std-ref">Deploy the Pretrained Model on Jetson Nano</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_model_on_nano.py</span></code>)</p></td>
-<td><p>00:22.199</p></td>
+<td><p>00:22.163</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="deploy_model_on_rasp.html#sphx-glr-how-to-deploy-models-deploy-model-on-rasp-py"><span class="std std-ref">Deploy the Pretrained Model on Raspberry Pi</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_model_on_rasp.py</span></code>)</p></td>
-<td><p>00:22.139</p></td>
+<td><p>00:21.847</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="deploy_sparse.html#sphx-glr-how-to-deploy-models-deploy-sparse-py"><span class="std std-ref">Deploy a Hugging Face Pruned Model on CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_sparse.py</span></code>)</p></td>
diff --git a/docs/how_to/extend_tvm/bring_your_own_datatypes.html b/docs/how_to/extend_tvm/bring_your_own_datatypes.html
index 2406a98f2..e22955b33 100644
--- a/docs/how_to/extend_tvm/bring_your_own_datatypes.html
+++ b/docs/how_to/extend_tvm/bring_your_own_datatypes.html
@@ -612,7 +612,7 @@ In this alpha state of the Bring Your Own Datatypes framework, we have not imple
 <span class="n">module</span><span class="p">,</span> <a href="https://docs.python.org/3/library/stdtypes.html#dict" title="builtins.dict" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">params</span></a> <span class="o">=</span> <span class="n">get_mobilenet</span><span class="p">()</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading /workspace/.mxnet/models/mobilenet0.25-9f83e440.zip06367bef-40d7-423f-9d31-58ec1560a6ef from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/mobilenet0.25-9f83e440.zip...
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading /workspace/.mxnet/models/mobilenet0.25-9f83e440.zipefccc711-5aa8-4d8d-b01a-b3feb05bbd7d from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/mobilenet0.25-9f83e440.zip...
 </pre></div>
 </div>
 <p>It’s easy to execute MobileNet with native TVM:</p>
diff --git a/docs/how_to/extend_tvm/sg_execution_times.html b/docs/how_to/extend_tvm/sg_execution_times.html
index 3932c141e..05268a6cb 100644
--- a/docs/how_to/extend_tvm/sg_execution_times.html
+++ b/docs/how_to/extend_tvm/sg_execution_times.html
@@ -327,7 +327,7 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-extend-tvm-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>00:40.104</strong> total execution time for <strong>how_to_extend_tvm</strong> files:</p>
+<p><strong>00:40.520</strong> total execution time for <strong>how_to_extend_tvm</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 84%" />
@@ -336,19 +336,19 @@
 </colgroup>
 <tbody>
 <tr class="row-odd"><td><p><a class="reference internal" href="bring_your_own_datatypes.html#sphx-glr-how-to-extend-tvm-bring-your-own-datatypes-py"><span class="std std-ref">Bring Your Own Datatypes to TVM</span></a> (<code class="docutils literal notranslate"><span class="pre">bring_your_own_datatypes.py</span></code>)</p></td>
-<td><p>00:36.972</p></td>
+<td><p>00:37.386</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="use_pass_instrument.html#sphx-glr-how-to-extend-tvm-use-pass-instrument-py"><span class="std std-ref">How to Use TVM Pass Instrument</span></a> (<code class="docutils literal notranslate"><span class="pre">use_pass_instrument.py</span></code>)</p></td>
-<td><p>00:02.209</p></td>
+<td><p>00:02.204</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="use_pass_infra.html#sphx-glr-how-to-extend-tvm-use-pass-infra-py"><span class="std std-ref">How to Use TVM Pass Infra</span></a> (<code class="docutils literal notranslate"><span class="pre">use_pass_infra.py</span></code>)</p></td>
-<td><p>00:00.916</p></td>
+<td><p>00:00.921</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="low_level_custom_pass.html#sphx-glr-how-to-extend-tvm-low-level-custom-pass-py"><span class="std std-ref">Writing a Customized Pass</span></a> (<code class="docutils literal notranslate"><span class="pre">low_level_custom_pass.py</span></code>)</p></td>
-<td><p>00:00.008</p></td>
+<td><p>00:00.009</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 </tbody>
diff --git a/docs/how_to/extend_tvm/use_pass_instrument.html b/docs/how_to/extend_tvm/use_pass_instrument.html
index fdcee0e20..56bf581eb 100644
--- a/docs/how_to/extend_tvm/use_pass_instrument.html
+++ b/docs/how_to/extend_tvm/use_pass_instrument.html
@@ -512,10 +512,10 @@ profile the execution time of each passes.</p>
 </pre></div>
 </div>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Printing results of timing profile...
-InferType: 6516us [6516us] (45.96%; 45.96%)
-FoldScaleAxis: 7662us [5us] (54.04%; 54.04%)
-        FoldConstant: 7657us [1546us] (54.00%; 99.93%)
-                InferType: 6111us [6111us] (43.10%; 79.81%)
+InferType: 6540us [6540us] (46.08%; 46.08%)
+FoldScaleAxis: 7654us [5us] (53.92%; 53.92%)
+        FoldConstant: 7648us [1570us] (53.89%; 99.93%)
+                InferType: 6078us [6078us] (42.82%; 79.47%)
 </pre></div>
 </div>
 </div>
@@ -537,10 +537,10 @@ Refer to following sections and <a class="reference internal" href="../../refere
 </pre></div>
 </div>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Printing results of timing profile...
-InferType: 6150us [6150us] (44.74%; 44.74%)
-FoldScaleAxis: 7595us [5us] (55.26%; 55.26%)
-        FoldConstant: 7590us [1556us] (55.22%; 99.94%)
-                InferType: 6034us [6034us] (43.91%; 79.50%)
+InferType: 6098us [6098us] (44.60%; 44.60%)
+FoldScaleAxis: 7574us [5us] (55.40%; 55.40%)
+        FoldConstant: 7569us [1568us] (55.36%; 99.94%)
+                InferType: 6002us [6002us] (43.90%; 79.29%)
 </pre></div>
 </div>
 <p>Register empty list to clear existing instruments.</p>
diff --git a/docs/how_to/optimize_operators/opt_conv_cuda.html b/docs/how_to/optimize_operators/opt_conv_cuda.html
index 79b9e641c..48159400b 100644
--- a/docs/how_to/optimize_operators/opt_conv_cuda.html
+++ b/docs/how_to/optimize_operators/opt_conv_cuda.html
@@ -564,7 +564,7 @@ latency of convolution.</p>
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Convolution: </span><span class="si">%f</span><span class="s2"> ms&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">evaluator</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">w</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span> <span class="o">*</span> <span cl [...]
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Convolution: 45.313227 ms
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Convolution: 47.067924 ms
 </pre></div>
 </div>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-optimize-operators-opt-conv-cuda-py">
diff --git a/docs/how_to/optimize_operators/opt_conv_tensorcore.html b/docs/how_to/optimize_operators/opt_conv_tensorcore.html
index eaddce448..a1c676f96 100644
--- a/docs/how_to/optimize_operators/opt_conv_tensorcore.html
+++ b/docs/how_to/optimize_operators/opt_conv_tensorcore.html
@@ -906,7 +906,7 @@ be able to run on our build server</p>
     <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;conv2d with tensor core: </span><span class="si">%f</span><span class="s2"> ms&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">evaluator</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">w</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span> <span class="o">* [...]
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>conv2d with tensor core: 6.977935 ms
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>conv2d with tensor core: 10.398550 ms
 </pre></div>
 </div>
 </div>
diff --git a/docs/how_to/optimize_operators/opt_gemm.html b/docs/how_to/optimize_operators/opt_gemm.html
index ae25d7e95..96ea76bc5 100644
--- a/docs/how_to/optimize_operators/opt_gemm.html
+++ b/docs/how_to/optimize_operators/opt_gemm.html
@@ -461,8 +461,8 @@ Then we write a baseline implementation, the simplest way to write a matrix mult
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Baseline: </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">evaluator</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Numpy running time: 0.018468
-Baseline: 3.546824
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Numpy running time: 0.019086
+Baseline: 3.455212
 </pre></div>
 </div>
 <p>In TVM, we can always inspect lower level IR to debug or optimize our schedule.
@@ -522,7 +522,7 @@ fill 32 * 32 * sizeof(float) which is 4KB in the cache whose total size is 32KB
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Opt1: </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">evaluator</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt1: 0.309027
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt1: 0.290643
 </pre></div>
 </div>
 <p>Here is the generated IR after blocking.</p>
@@ -589,7 +589,7 @@ vastly.</p>
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Opt2: </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">evaluator</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt2: 0.339654
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt2: 0.333005
 </pre></div>
 </div>
 <p>Here is the generated IR after vectorization.</p>
@@ -650,7 +650,7 @@ the access pattern for A matrix is more cache friendly.</p>
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Opt3: </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">evaluator</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt3: 0.118104
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt3: 0.117940
 </pre></div>
 </div>
 <p>Here is the generated IR after loop permutation.</p>
@@ -733,7 +733,7 @@ flattening.</p>
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Opt4: </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">evaluator</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt4: 0.111165
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt4: 0.111259
 </pre></div>
 </div>
 <p>Here is the generated IR after array packing.</p>
@@ -819,7 +819,7 @@ write to C when all the block results are ready.</p>
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Opt5: </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">evaluator</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt5: 0.111555
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt5: 0.111554
 </pre></div>
 </div>
 <p>Here is the generated IR after blocking.</p>
@@ -909,7 +909,7 @@ write to C when all the block results are ready.</p>
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Opt6: </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">opt6_time</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt6: 0.145264
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt6: 0.145036
 </pre></div>
 </div>
 <p>Here is the generated IR after parallelization.</p>
diff --git a/docs/how_to/optimize_operators/sg_execution_times.html b/docs/how_to/optimize_operators/sg_execution_times.html
index 4bc531003..6f1607057 100644
--- a/docs/how_to/optimize_operators/sg_execution_times.html
+++ b/docs/how_to/optimize_operators/sg_execution_times.html
@@ -327,7 +327,7 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-optimize-operators-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>00:34.988</strong> total execution time for <strong>how_to_optimize_operators</strong> files:</p>
+<p><strong>00:34.461</strong> total execution time for <strong>how_to_optimize_operators</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 83%" />
@@ -336,15 +336,15 @@
 </colgroup>
 <tbody>
 <tr class="row-odd"><td><p><a class="reference internal" href="opt_gemm.html#sphx-glr-how-to-optimize-operators-opt-gemm-py"><span class="std std-ref">How to optimize GEMM on CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">opt_gemm.py</span></code>)</p></td>
-<td><p>00:32.771</p></td>
+<td><p>00:32.233</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="opt_conv_tensorcore.html#sphx-glr-how-to-optimize-operators-opt-conv-tensorcore-py"><span class="std std-ref">How to optimize convolution using TensorCores</span></a> (<code class="docutils literal notranslate"><span class="pre">opt_conv_tensorcore.py</span></code>)</p></td>
-<td><p>00:01.205</p></td>
+<td><p>00:01.256</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="opt_conv_cuda.html#sphx-glr-how-to-optimize-operators-opt-conv-cuda-py"><span class="std std-ref">How to optimize convolution on GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">opt_conv_cuda.py</span></code>)</p></td>
-<td><p>00:01.011</p></td>
+<td><p>00:00.972</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 </tbody>
diff --git a/docs/how_to/tune_with_autoscheduler/sg_execution_times.html b/docs/how_to/tune_with_autoscheduler/sg_execution_times.html
index 28b52a65a..0666d1527 100644
--- a/docs/how_to/tune_with_autoscheduler/sg_execution_times.html
+++ b/docs/how_to/tune_with_autoscheduler/sg_execution_times.html
@@ -327,7 +327,7 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-tune-with-autoscheduler-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>06:02.354</strong> total execution time for <strong>how_to_tune_with_autoscheduler</strong> files:</p>
+<p><strong>05:58.803</strong> total execution time for <strong>how_to_tune_with_autoscheduler</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 85%" />
@@ -336,27 +336,27 @@
 </colgroup>
 <tbody>
 <tr class="row-odd"><td><p><a class="reference internal" href="tune_conv2d_layer_cuda.html#sphx-glr-how-to-tune-with-autoscheduler-tune-conv2d-layer-cuda-py"><span class="std std-ref">Auto-scheduling a Convolution Layer for GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_conv2d_layer_cuda.py</span></code>)</p></td>
-<td><p>03:16.733</p></td>
+<td><p>03:14.149</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="tune_network_x86.html#sphx-glr-how-to-tune-with-autoscheduler-tune-network-x86-py"><span class="std std-ref">Auto-scheduling a Neural Network for x86 CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_network_x86.py</span></code>)</p></td>
-<td><p>01:22.126</p></td>
+<td><p>01:22.438</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="tune_network_cuda.html#sphx-glr-how-to-tune-with-autoscheduler-tune-network-cuda-py"><span class="std std-ref">Auto-scheduling a Neural Network for NVIDIA GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_network_cuda.py</span></code>)</p></td>
-<td><p>00:46.462</p></td>
+<td><p>00:45.945</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="tune_sparse_x86.html#sphx-glr-how-to-tune-with-autoscheduler-tune-sparse-x86-py"><span class="std std-ref">Auto-scheduling Sparse Matrix Multiplication on CPU with Custom Sketch Rule</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_sparse_x86.py</span></code>)</p></td>
-<td><p>00:19.207</p></td>
+<td><p>00:18.884</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="tune_network_mali.html#sphx-glr-how-to-tune-with-autoscheduler-tune-network-mali-py"><span class="std std-ref">Auto-scheduling a Neural Network for mali GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_network_mali.py</span></code>)</p></td>
-<td><p>00:08.985</p></td>
+<td><p>00:08.732</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="tune_network_arm.html#sphx-glr-how-to-tune-with-autoscheduler-tune-network-arm-py"><span class="std std-ref">Auto-scheduling a Neural Network for ARM CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_network_arm.py</span></code>)</p></td>
-<td><p>00:08.842</p></td>
+<td><p>00:08.656</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 </tbody>
diff --git a/docs/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.html b/docs/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.html
index 020f424b3..4c836f1f4 100644
--- a/docs/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.html
+++ b/docs/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.html
@@ -1004,7 +1004,7 @@ cooperative fetching, unrolling and operator fusion.</p>
 <span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Execution time of this operator: 0.362 ms
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Execution time of this operator: 0.357 ms
 </pre></div>
 </div>
 </div>
@@ -1567,7 +1567,7 @@ In the example below we resume the status and do more 5 trials.</p>
 Get devices for measurement successfully!
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 3 minutes  16.733 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 3 minutes  14.149 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-tune-with-autoscheduler-tune-conv2d-layer-cuda-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/e3e540f3b477c0c52d8eb73e674e8ffd/tune_conv2d_layer_cuda.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">tune_conv2d_layer_cuda.py</span></code></a></p>
diff --git a/docs/how_to/tune_with_autoscheduler/tune_network_cuda.html b/docs/how_to/tune_with_autoscheduler/tune_network_cuda.html
index ba9fbf746..35f8899ba 100644
--- a/docs/how_to/tune_with_autoscheduler/tune_network_cuda.html
+++ b/docs/how_to/tune_with_autoscheduler/tune_network_cuda.html
@@ -906,7 +906,7 @@ so we can read the log file and load the best schedules.</p>
 Evaluate inference time cost...
 Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-   9.8932       9.8938       9.9346       9.8512       0.0341
+   9.7652       9.7798       9.7858       9.7299       0.0251
 </pre></div>
 </div>
 </div>
diff --git a/docs/how_to/tune_with_autoscheduler/tune_network_x86.html b/docs/how_to/tune_with_autoscheduler/tune_network_x86.html
index efe770330..7bfb5df15 100644
--- a/docs/how_to/tune_with_autoscheduler/tune_network_x86.html
+++ b/docs/how_to/tune_with_autoscheduler/tune_network_x86.html
@@ -925,7 +925,7 @@ so we can read the log file and load the best schedules.</p>
 Evaluate inference time cost...
 Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-  759.9761     759.6506     761.1077     759.1700      0.8238
+  753.7760     753.7561     754.3260     753.2460      0.4411
 </pre></div>
 </div>
 </div>
@@ -947,7 +947,7 @@ to learn how to use the RPC Tracker and RPC Server.
 To use the RPC Tracker in auto-scheduler, replace the runner in <code class="code docutils literal notranslate"><span class="pre">TuningOptions</span></code>
 with <a class="reference internal" href="../../reference/api/python/auto_scheduler.html#tvm.auto_scheduler.RPCRunner" title="tvm.auto_scheduler.RPCRunner"><code class="xref any py py-class docutils literal notranslate"><span class="pre">auto_scheduler.RPCRunner</span></code></a>.</p></li>
 </ol>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  22.126 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  22.438 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-tune-with-autoscheduler-tune-network-x86-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/e416b94ca1090b0897c0f6e0df95b911/tune_network_x86.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">tune_network_x86.py</span></code></a></p>
diff --git a/docs/how_to/tune_with_autoscheduler/tune_sparse_x86.html b/docs/how_to/tune_with_autoscheduler/tune_sparse_x86.html
index 42313311a..b758f9891 100644
--- a/docs/how_to/tune_with_autoscheduler/tune_sparse_x86.html
+++ b/docs/how_to/tune_with_autoscheduler/tune_sparse_x86.html
@@ -625,75 +625,77 @@ layout transformation, parallelization, vectorization, unrolling, and operator f
              placeholder_4: Buffer(placeholder_14: Pointer(float32), float32, [65536], []),
              compute: Buffer(compute_2: Pointer(float32), float32, [65536], [])}
   buffer_map = {placeholder_5: placeholder, placeholder_6: placeholder_1, placeholder_7: placeholder_2, placeholder_8: placeholder_3, placeholder_9: placeholder_4, compute_1: compute}
-  preflattened_buffer_map = {placeholder_7: placeholder_15: Buffer(placeholder_12, int32, [4916], []), placeholder_5: placeholder_16: Buffer(placeholder_10, float32, [128, 256], []), compute_1: compute_3: Buffer(compute_2, float32, [128, 512], []), placeholder_6: placeholder_17: Buffer(placeholder_11, float32, [4916, 16, 1], []), placeholder_8: placeholder_18: Buffer(placeholder_13, int32, [33], []), placeholder_9: placeholder_19: Buffer(placeholder_14, float32, [128, 512], [])} {
-  for (i0.outer.i1.outer.fused: int32, 0, 64) &quot;parallel&quot; {
-    allocate(compute_4: Pointer(global float32), float32, [1024]), storage_scope = global {
-      for (nb_j.inner: int32, 0, 2) {
-        for (i.inner.init: int32, 0, 32) {
-          let cse_var_1: int32 = ((i.inner.init*32) + (nb_j.inner*16))
-           {
-            compute_5: Buffer(compute_4, float32, [1024], [])[cse_var_1] = 0f32
-            compute_5[(cse_var_1 + 1)] = 0f32
-            compute_5[(cse_var_1 + 2)] = 0f32
-            compute_5[(cse_var_1 + 3)] = 0f32
-            compute_5[(cse_var_1 + 4)] = 0f32
-            compute_5[(cse_var_1 + 5)] = 0f32
-            compute_5[(cse_var_1 + 6)] = 0f32
-            compute_5[(cse_var_1 + 7)] = 0f32
-            compute_5[(cse_var_1 + 8)] = 0f32
-            compute_5[(cse_var_1 + 9)] = 0f32
-            compute_5[(cse_var_1 + 10)] = 0f32
-            compute_5[(cse_var_1 + 11)] = 0f32
-            compute_5[(cse_var_1 + 12)] = 0f32
-            compute_5[(cse_var_1 + 13)] = 0f32
-            compute_5[(cse_var_1 + 14)] = 0f32
-            compute_5[(cse_var_1 + 15)] = 0f32
-          }
-        }
-        for (elem_idx: int32, 0, let cse_var_2: int32 = ((floormod(i0.outer.i1.outer.fused, 16)*2) + nb_j.inner) in (placeholder_3[(cse_var_2 + 1)] - placeholder_3[cse_var_2])) {
-          for (i.inner: int32, 0, 32) {
-            let cse_var_21: int32 = (elem_idx*16)
-            let cse_var_20: int32 = ((i.inner*32) + (nb_j.inner*16))
-            let cse_var_19: int32 = ((floormod(i0.outer.i1.outer.fused, 16)*2) + nb_j.inner)
-            let cse_var_18: int32 = ((floordiv(i0.outer.i1.outer.fused, 16)*8192) + (i.inner*256))
-            let cse_var_17: int32 = (cse_var_20 + 9)
-            let cse_var_16: int32 = (cse_var_20 + 8)
-            let cse_var_15: int32 = (cse_var_20 + 7)
-            let cse_var_14: int32 = (cse_var_20 + 6)
-            let cse_var_13: int32 = (cse_var_20 + 5)
-            let cse_var_12: int32 = (cse_var_20 + 4)
-            let cse_var_11: int32 = (cse_var_20 + 3)
-            let cse_var_10: int32 = (cse_var_20 + 2)
-            let cse_var_9: int32 = (cse_var_20 + 15)
-            let cse_var_8: int32 = (cse_var_20 + 14)
-            let cse_var_7: int32 = (cse_var_20 + 13)
-            let cse_var_6: int32 = (cse_var_20 + 12)
-            let cse_var_5: int32 = (cse_var_20 + 11)
-            let cse_var_4: int32 = (cse_var_20 + 10)
-            let cse_var_3: int32 = (cse_var_20 + 1)
+  preflattened_buffer_map = {placeholder_7: placeholder_15: Buffer(placeholder_12, int32, [4916], []), placeholder_9: placeholder_16: Buffer(placeholder_14, float32, [128, 512], []), placeholder_8: placeholder_17: Buffer(placeholder_13, int32, [33], []), placeholder_6: placeholder_18: Buffer(placeholder_11, float32, [4916, 16, 1], []), compute_1: compute_3: Buffer(compute_2, float32, [128, 512], []), placeholder_5: placeholder_19: Buffer(placeholder_10, float32, [128, 256], [])} {
+  for (i0.outer.i1.outer.fused: int32, 0, 32) &quot;parallel&quot; {
+    allocate(compute_4: Pointer(global float32), float32, [2048]), storage_scope = global {
+      for (i.outer.inner: int32, 0, 2) {
+        for (nb_j.inner: int32, 0, 2) {
+          for (i.inner.init: int32, 0, 32) {
+            let cse_var_1: int32 = (((i.outer.inner*1024) + (i.inner.init*32)) + (nb_j.inner*16))
              {
-              compute_5[cse_var_20] = (compute_5[cse_var_20] + (placeholder_1[((placeholder_3[cse_var_19]*16) + cse_var_21)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-              compute_5[cse_var_3] = (compute_5[cse_var_3] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 1)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-              compute_5[cse_var_10] = (compute_5[cse_var_10] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 2)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-              compute_5[cse_var_11] = (compute_5[cse_var_11] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 3)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-              compute_5[cse_var_12] = (compute_5[cse_var_12] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 4)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-              compute_5[cse_var_13] = (compute_5[cse_var_13] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 5)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-              compute_5[cse_var_14] = (compute_5[cse_var_14] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 6)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-              compute_5[cse_var_15] = (compute_5[cse_var_15] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 7)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-              compute_5[cse_var_16] = (compute_5[cse_var_16] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 8)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-              compute_5[cse_var_17] = (compute_5[cse_var_17] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 9)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-              compute_5[cse_var_4] = (compute_5[cse_var_4] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 10)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-              compute_5[cse_var_5] = (compute_5[cse_var_5] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 11)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-              compute_5[cse_var_6] = (compute_5[cse_var_6] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 12)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-              compute_5[cse_var_7] = (compute_5[cse_var_7] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 13)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-              compute_5[cse_var_8] = (compute_5[cse_var_8] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 14)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
-              compute_5[cse_var_9] = (compute_5[cse_var_9] + (placeholder_1[(((placeholder_3[cse_var_19]*16) + cse_var_21) + 15)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_19] + elem_idx)])], 0f32)))
+              compute_5: Buffer(compute_4, float32, [2048], [])[cse_var_1] = 0f32
+              compute_5[(cse_var_1 + 1)] = 0f32
+              compute_5[(cse_var_1 + 2)] = 0f32
+              compute_5[(cse_var_1 + 3)] = 0f32
+              compute_5[(cse_var_1 + 4)] = 0f32
+              compute_5[(cse_var_1 + 5)] = 0f32
+              compute_5[(cse_var_1 + 6)] = 0f32
+              compute_5[(cse_var_1 + 7)] = 0f32
+              compute_5[(cse_var_1 + 8)] = 0f32
+              compute_5[(cse_var_1 + 9)] = 0f32
+              compute_5[(cse_var_1 + 10)] = 0f32
+              compute_5[(cse_var_1 + 11)] = 0f32
+              compute_5[(cse_var_1 + 12)] = 0f32
+              compute_5[(cse_var_1 + 13)] = 0f32
+              compute_5[(cse_var_1 + 14)] = 0f32
+              compute_5[(cse_var_1 + 15)] = 0f32
+            }
+          }
+          for (elem_idx: int32, 0, let cse_var_2: int32 = ((floormod(i0.outer.i1.outer.fused, 16)*2) + nb_j.inner) in (placeholder_3[(cse_var_2 + 1)] - placeholder_3[cse_var_2])) {
+            for (i.inner: int32, 0, 32) {
+              let cse_var_21: int32 = (elem_idx*16)
+              let cse_var_20: int32 = ((floormod(i0.outer.i1.outer.fused, 16)*2) + nb_j.inner)
+              let cse_var_19: int32 = (((i.outer.inner*1024) + (i.inner*32)) + (nb_j.inner*16))
+              let cse_var_18: int32 = (((floordiv(i0.outer.i1.outer.fused, 16)*16384) + (i.outer.inner*8192)) + (i.inner*256))
+              let cse_var_17: int32 = (cse_var_19 + 9)
+              let cse_var_16: int32 = (cse_var_19 + 8)
+              let cse_var_15: int32 = (cse_var_19 + 7)
+              let cse_var_14: int32 = (cse_var_19 + 6)
+              let cse_var_13: int32 = (cse_var_19 + 5)
+              let cse_var_12: int32 = (cse_var_19 + 4)
+              let cse_var_11: int32 = (cse_var_19 + 3)
+              let cse_var_10: int32 = (cse_var_19 + 2)
+              let cse_var_9: int32 = (cse_var_19 + 15)
+              let cse_var_8: int32 = (cse_var_19 + 14)
+              let cse_var_7: int32 = (cse_var_19 + 13)
+              let cse_var_6: int32 = (cse_var_19 + 12)
+              let cse_var_5: int32 = (cse_var_19 + 11)
+              let cse_var_4: int32 = (cse_var_19 + 10)
+              let cse_var_3: int32 = (cse_var_19 + 1)
+               {
+                compute_5[cse_var_19] = (compute_5[cse_var_19] + (placeholder_1[((placeholder_3[cse_var_20]*16) + cse_var_21)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                compute_5[cse_var_3] = (compute_5[cse_var_3] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 1)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                compute_5[cse_var_10] = (compute_5[cse_var_10] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 2)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                compute_5[cse_var_11] = (compute_5[cse_var_11] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 3)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                compute_5[cse_var_12] = (compute_5[cse_var_12] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 4)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                compute_5[cse_var_13] = (compute_5[cse_var_13] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 5)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                compute_5[cse_var_14] = (compute_5[cse_var_14] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 6)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                compute_5[cse_var_15] = (compute_5[cse_var_15] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 7)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                compute_5[cse_var_16] = (compute_5[cse_var_16] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 8)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                compute_5[cse_var_17] = (compute_5[cse_var_17] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 9)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                compute_5[cse_var_4] = (compute_5[cse_var_4] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 10)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                compute_5[cse_var_5] = (compute_5[cse_var_5] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 11)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                compute_5[cse_var_6] = (compute_5[cse_var_6] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 12)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                compute_5[cse_var_7] = (compute_5[cse_var_7] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 13)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                compute_5[cse_var_8] = (compute_5[cse_var_8] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 14)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+                compute_5[cse_var_9] = (compute_5[cse_var_9] + (placeholder_1[(((placeholder_3[cse_var_20]*16) + cse_var_21) + 15)]*max(placeholder[(cse_var_18 + placeholder_2[(placeholder_3[cse_var_20] + elem_idx)])], 0f32)))
+              }
             }
           }
         }
       }
-      for (i0.inner: int32, 0, 32) {
-        let cse_var_22: int32 = (((floordiv(i0.outer.i1.outer.fused, 16)*16384) + (i0.inner*512)) + (floormod(i0.outer.i1.outer.fused, 16)*32))
+      for (i0.inner: int32, 0, 64) {
+        let cse_var_22: int32 = (((floordiv(i0.outer.i1.outer.fused, 16)*32768) + (i0.inner*512)) + (floormod(i0.outer.i1.outer.fused, 16)*32))
         compute[ramp(cse_var_22, 1, 32)] = max((compute_5[ramp((i0.inner*32), 1, 32)] + placeholder_4[ramp(cse_var_22, 1, 32)]), broadcast(0f32, 32))
       }
     }
@@ -732,7 +734,7 @@ layout transformation, parallelization, vectorization, unrolling, and operator f
 <span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Execution time of this operator: 1.743 ms
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Execution time of this operator: 1.730 ms
 </pre></div>
 </div>
 <div class="admonition note">
diff --git a/docs/how_to/tune_with_autotvm/sg_execution_times.html b/docs/how_to/tune_with_autotvm/sg_execution_times.html
index 04256004f..95bfeb256 100644
--- a/docs/how_to/tune_with_autotvm/sg_execution_times.html
+++ b/docs/how_to/tune_with_autotvm/sg_execution_times.html
@@ -327,7 +327,7 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-tune-with-autotvm-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>00:45.783</strong> total execution time for <strong>how_to_tune_with_autotvm</strong> files:</p>
+<p><strong>00:45.863</strong> total execution time for <strong>how_to_tune_with_autotvm</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 84%" />
@@ -336,15 +336,15 @@
 </colgroup>
 <tbody>
 <tr class="row-odd"><td><p><a class="reference internal" href="tune_conv2d_cuda.html#sphx-glr-how-to-tune-with-autotvm-tune-conv2d-cuda-py"><span class="std std-ref">Tuning High Performance Convolution on NVIDIA GPUs</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_conv2d_cuda.py</span></code>)</p></td>
-<td><p>00:45.747</p></td>
+<td><p>00:45.826</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="tune_relay_x86.html#sphx-glr-how-to-tune-with-autotvm-tune-relay-x86-py"><span class="std std-ref">Auto-tuning a Convolutional Network for x86 CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_relay_x86.py</span></code>)</p></td>
-<td><p>00:00.021</p></td>
+<td><p>00:00.022</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="tune_relay_cuda.html#sphx-glr-how-to-tune-with-autotvm-tune-relay-cuda-py"><span class="std std-ref">Auto-tuning a Convolutional Network for NVIDIA GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_relay_cuda.py</span></code>)</p></td>
-<td><p>00:00.005</p></td>
+<td><p>00:00.006</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="tune_relay_arm.html#sphx-glr-how-to-tune-with-autotvm-tune-relay-arm-py"><span class="std std-ref">Auto-tuning a Convolutional Network for ARM CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_relay_arm.py</span></code>)</p></td>
diff --git a/docs/how_to/tune_with_autotvm/tune_conv2d_cuda.html b/docs/how_to/tune_with_autotvm/tune_conv2d_cuda.html
index b090e8fb1..2b19315ab 100644
--- a/docs/how_to/tune_with_autotvm/tune_conv2d_cuda.html
+++ b/docs/how_to/tune_with_autotvm/tune_conv2d_cuda.html
@@ -1436,8 +1436,8 @@ No: 8   GFLOPS: 0.00/0.00       result: Traceback (most recent call last):
 TimeoutError
 
         [(&#39;tile_f&#39;, [-1, 2, 1, 64]), (&#39;tile_y&#39;, [-1, 1, 1, 7]), (&#39;tile_x&#39;, [-1, 1, 7, 1]), (&#39;tile_rc&#39;, [-1, 1, 4]), (&#39;tile_ry&#39;, [-1, 3, 1]), (&#39;tile_rx&#39;, [-1, 1, 3]), (&#39;auto_unroll_max_step&#39;, 1500), (&#39;unroll_explicit&#39;, 0)],None,4909501
-No: 9   GFLOPS: 176.58/176.58   result: MeasureResult(costs=(0.0013110442333333335,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.914842128753662, timestamp=1659719907.7206702)       [(&#39;tile_f&#39;, [-1, 1, 4, 8]), (&#39;tile_y&#39;, [-1, 7, 1, 1]), (&#39;tile_x&#39;, [-1, 1, 1, 1]), (&#39;tile_rc&#39;, [-1, 2, 2]), (&#39;tile_ry&#39;, [-1, 1, 3]), (&#39;tile_rx&#39;, [-1, 1, 3]), (&#39;auto_unroll_max_step&#39;, 1500), (&#39;unroll_explicit&#39;, 0)],None,5072689
-No: 10  GFLOPS: 0.00/176.58     result: Traceback (most recent call last):
+No: 9   GFLOPS: 80.83/80.83     result: MeasureResult(costs=(0.0028641143999999998,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.6073582172393799, timestamp=1659735728.2820606)      [(&#39;tile_f&#39;, [-1, 1, 4, 8]), (&#39;tile_y&#39;, [-1, 7, 1, 1]), (&#39;tile_x&#39;, [-1, 1, 1, 1]), (&#39;tile_rc&#39;, [-1, 2, 2]), (&#39;tile_ry&#39;, [-1, 1, 3]), (&#39;tile_rx&#39;, [-1, 1, 3]), (&#39;auto_unroll_max_step&#39;, 1500), (&#39;unroll_explicit&#39;, 0)],None,5072689
+No: 10  GFLOPS: 0.00/80.83      result: Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 588, in __call__
     func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 540, in _build_func_common
@@ -1560,8 +1560,8 @@ Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 871, in verify_pass
     raise InstantiationError(&quot;Skipped because of invalid gpu kernel&quot;)
 tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [(&#39;tile_f&#39;, [-1, 4, 4, 8]), (&#39;tile_y&#39;, [-1, 1, 1, 1]), (&#39;tile_x&#39;, [-1, 1, 1, 7]), (&#39;tile_rc&#39;, [-1, 64, 2]), (&#39;tile_ry&#39;, [-1, 1, 3]), (&#39;tile_rx&#39;, [-1, 1, 3]), (&#39;auto_unroll_max_step&#39;, 1500), (&#39;unroll_explicit&#39;, 0)],None,5092711
-No: 11  GFLOPS: 260.17/260.17   result: MeasureResult(costs=(0.0008897969889502763,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.746523380279541, timestamp=1659719908.6261435)       [(&#39;tile_f&#39;, [-1, 8, 2, 1]), (&#39;tile_y&#39;, [-1, 7, 1, 1]), (&#39;tile_x&#39;, [-1, 1, 7, 1]), (&#39;tile_rc&#39;, [-1, 2, 1]), (&#39;tile_ry&#39;, [-1, 3, 1]), (&#39;tile_rx&#39;, [-1, 3, 1]), (&#39;auto_unroll_max_step&#39;, 1500), (&#39;unroll_explicit&#39;, 0)],None,4264713
-No: 12  GFLOPS: 0.00/260.17     result: Traceback (most recent call last):
+No: 11  GFLOPS: 260.01/260.01   result: MeasureResult(costs=(0.0008903435745856354,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.7875351905822754, timestamp=1659735729.2097666)      [(&#39;tile_f&#39;, [-1, 8, 2, 1]), (&#39;tile_y&#39;, [-1, 7, 1, 1]), (&#39;tile_x&#39;, [-1, 1, 7, 1]), (&#39;tile_rc&#39;, [-1, 2, 1]), (&#39;tile_ry&#39;, [-1, 3, 1]), (&#39;tile_rx&#39;, [-1, 3, 1]), (&#39;auto_unroll_max_step&#39;, 1500), (&#39;unroll_explicit&#39;, 0)],None,4264713
+No: 12  GFLOPS: 0.00/260.01     result: Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 588, in __call__
     func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 540, in _build_func_common
@@ -1684,7 +1684,7 @@ Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 871, in verify_pass
     raise InstantiationError(&quot;Skipped because of invalid gpu kernel&quot;)
 tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [(&#39;tile_f&#39;, [-1, 128, 1, 2]), (&#39;tile_y&#39;, [-1, 1, 7, 1]), (&#39;tile_x&#39;, [-1, 1, 1, 1]), (&#39;tile_rc&#39;, [-1, 1, 256]), (&#39;tile_ry&#39;, [-1, 1, 1]), (&#39;tile_rx&#39;, [-1, 1, 1]), (&#39;auto_unroll_max_step&#39;, 0), (&#39;unroll_explicit&#39;, 0)],None,183542
-No: 13  GFLOPS: 0.00/260.17     result: Traceback (most recent call last):
+No: 13  GFLOPS: 0.00/260.01     result: Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 588, in __call__
     func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 540, in _build_func_common
@@ -1807,7 +1807,7 @@ Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 871, in verify_pass
     raise InstantiationError(&quot;Skipped because of invalid gpu kernel&quot;)
 tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [(&#39;tile_f&#39;, [-1, 4, 8, 8]), (&#39;tile_y&#39;, [-1, 1, 7, 1]), (&#39;tile_x&#39;, [-1, 1, 1, 1]), (&#39;tile_rc&#39;, [-1, 1, 64]), (&#39;tile_ry&#39;, [-1, 1, 1]), (&#39;tile_rx&#39;, [-1, 3, 1]), (&#39;auto_unroll_max_step&#39;, 512), (&#39;unroll_explicit&#39;, 0)],None,2482196
-No: 14  GFLOPS: 0.00/260.17     result: Traceback (most recent call last):
+No: 14  GFLOPS: 0.00/260.01     result: Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 588, in __call__
     func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 540, in _build_func_common
@@ -1930,9 +1930,9 @@ Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 871, in verify_pass
     raise InstantiationError(&quot;Skipped because of invalid gpu kernel&quot;)
 tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [(&#39;tile_f&#39;, [-1, 64, 1, 4]), (&#39;tile_y&#39;, [-1, 1, 7, 1]), (&#39;tile_x&#39;, [-1, 1, 1, 7]), (&#39;tile_rc&#39;, [-1, 4, 2]), (&#39;tile_ry&#39;, [-1, 1, 3]), (&#39;tile_rx&#39;, [-1, 1, 3]), (&#39;auto_unroll_max_step&#39;, 1500), (&#39;unroll_explicit&#39;, 1)],None,10306226
-No: 15  GFLOPS: 5.46/260.17     result: MeasureResult(costs=(0.04237869825,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.8544461727142334, timestamp=1659719913.216546)       [(&#39;tile_f&#39;, [-1, 2, 2, 8]), (&#39;tile_y&#39;, [-1, 1, 1, 7]), (&#39;tile_x&#39;, [-1, 7, 1, 1]), (&#39;tile_rc&#39;, [-1, 4, 8]), (&#39;tile_ry&#39;, [-1, 1, 1]), (&#39;tile_rx&#39;, [-1, 1, 1]), (&#39;auto_unroll_max_step&#39;, 0), (&#39;unroll_explicit&#39;, 1)],None,5330964
-No: 16  GFLOPS: 3.34/260.17     result: MeasureResult(costs=(0.06939853650000001,), error_no=MeasureErrorNo.NO_ERROR, all_cost=4.577344179153442, timestamp=1659719914.4559593) [(&#39;tile_f&#39;, [-1, 8, 4, 4]), (&#39;tile_y&#39;, [-1, 1, 1, 7]), (&#39;tile_x&#39;, [-1, 1, 1, 7]), (&#39;tile_rc&#39;, [-1, 4, 1]), (&#39;tile_ry&#39;, [-1, 1, 3]), (&#39;tile_rx&#39;, [-1, 1, 1]), (&#39;auto_unroll_max_step&#39;, 512), (&#39;unroll_explicit&#39;, 0)],None,2140058
-No: 17  GFLOPS: 0.00/260.17     result: Traceback (most recent call last):
+No: 15  GFLOPS: 5.26/260.01     result: MeasureResult(costs=(0.043974994,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.8457534313201904, timestamp=1659735733.7843628)        [(&#39;tile_f&#39;, [-1, 2, 2, 8]), (&#39;tile_y&#39;, [-1, 1, 1, 7]), (&#39;tile_x&#39;, [-1, 7, 1, 1]), (&#39;tile_rc&#39;, [-1, 4, 8]), (&#39;tile_ry&#39;, [-1, 1, 1]), (&#39;tile_rx&#39;, [-1, 1, 1]), (&#39;auto_unroll_max_step&#39;, 0), (&#39;unroll_explicit&#39;, 1)],None,5330964
+No: 16  GFLOPS: 3.34/260.01     result: MeasureResult(costs=(0.069222138,), error_no=MeasureErrorNo.NO_ERROR, all_cost=4.538715124130249, timestamp=1659735735.021886)  [(&#39;tile_f&#39;, [-1, 8, 4, 4]), (&#39;tile_y&#39;, [-1, 1, 1, 7]), (&#39;tile_x&#39;, [-1, 1, 1, 7]), (&#39;tile_rc&#39;, [-1, 4, 1]), (&#39;tile_ry&#39;, [-1, 1, 3]), (&#39;tile_rx&#39;, [-1, 1, 1]), (&#39;auto_unroll_max_step&#39;, 512), (&#39;unroll_explicit&#39;, 0)],None,2140058
+No: 17  GFLOPS: 0.00/260.01     result: Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 142, in build
     res = future.result()
   File &quot;/usr/lib/python3.7/concurrent/futures/_base.py&quot;, line 435, in result
@@ -1950,8 +1950,8 @@ No: 17  GFLOPS: 0.00/260.17     result: Traceback (most recent call last):
 TimeoutError
 
         [(&#39;tile_f&#39;, [-1, 2, 2, 1]), (&#39;tile_y&#39;, [-1, 1, 7, 1]), (&#39;tile_x&#39;, [-1, 7, 1, 1]), (&#39;tile_rc&#39;, [-1, 4, 16]), (&#39;tile_ry&#39;, [-1, 3, 1]), (&#39;tile_rx&#39;, [-1, 1, 3]), (&#39;auto_unroll_max_step&#39;, 1500), (&#39;unroll_explicit&#39;, 1)],None,10195251
-No: 18  GFLOPS: 27.07/260.17    result: MeasureResult(costs=(0.0085525213125,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.3080289363861084, timestamp=1659719925.5000262)    [(&#39;tile_f&#39;, [-1, 4, 8, 4]), (&#39;tile_y&#39;, [-1, 1, 1, 1]), (&#39;tile_x&#39;, [-1, 1, 1, 1]), (&#39;tile_rc&#39;, [-1, 1, 4]), (&#39;tile_ry&#39;, [-1, 3, 1]), (&#39;tile_rx&#39;, [-1, 3, 1]), (&#39;auto_unroll_max_step&#39;, 0), (&#39;unroll_explicit&#39;, 1)],None,6068603
-No: 19  GFLOPS: 0.00/260.17     result: Traceback (most recent call last):
+No: 18  GFLOPS: 27.98/260.01    result: MeasureResult(costs=(0.008272878785714286,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.3325583934783936, timestamp=1659735746.06702) [(&#39;tile_f&#39;, [-1, 4, 8, 4]), (&#39;tile_y&#39;, [-1, 1, 1, 1]), (&#39;tile_x&#39;, [-1, 1, 1, 1]), (&#39;tile_rc&#39;, [-1, 1, 4]), (&#39;tile_ry&#39;, [-1, 3, 1]), (&#39;tile_rx&#39;, [-1, 3, 1]), (&#39;auto_unroll_max_step&#39;, 0), (&#39;unroll_explicit&#39;, 1)],None,6068603
+No: 19  GFLOPS: 0.00/260.01     result: Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 588, in __call__
     func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 540, in _build_func_common
@@ -2074,7 +2074,7 @@ Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 871, in verify_pass
     raise InstantiationError(&quot;Skipped because of invalid gpu kernel&quot;)
 tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [(&#39;tile_f&#39;, [-1, 16, 4, 8]), (&#39;tile_y&#39;, [-1, 1, 7, 1]), (&#39;tile_x&#39;, [-1, 7, 1, 1]), (&#39;tile_rc&#39;, [-1, 4, 128]), (&#39;tile_ry&#39;, [-1, 1, 3]), (&#39;tile_rx&#39;, [-1, 1, 3]), (&#39;auto_unroll_max_step&#39;, 0), (&#39;unroll_explicit&#39;, 1)],None,6956993
-No: 20  GFLOPS: 0.00/260.17     result: Traceback (most recent call last):
+No: 20  GFLOPS: 0.00/260.01     result: Traceback (most recent call last):
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 588, in __call__
     func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
   File &quot;/workspace/python/tvm/autotvm/measure/measure_methods.py&quot;, line 540, in _build_func_common
@@ -2237,7 +2237,7 @@ and measure running time.</p>
 Best config:
 [(&#39;tile_f&#39;, [-1, 8, 2, 1]), (&#39;tile_y&#39;, [-1, 7, 1, 1]), (&#39;tile_x&#39;, [-1, 1, 7, 1]), (&#39;tile_rc&#39;, [-1, 2, 1]), (&#39;tile_ry&#39;, [-1, 3, 1]), (&#39;tile_rx&#39;, [-1, 3, 1]), (&#39;auto_unroll_max_step&#39;, 1500), (&#39;unroll_explicit&#39;, 0)],None,4264713
 Finish loading 20 records
-Time cost of this operator: 0.001215
+Time cost of this operator: 0.001283
 </pre></div>
 </div>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-tune-with-autotvm-tune-conv2d-cuda-py">
diff --git a/docs/how_to/work_with_microtvm/micro_autotune.html b/docs/how_to/work_with_microtvm/micro_autotune.html
index 369624068..d985cf34e 100644
--- a/docs/how_to/work_with_microtvm/micro_autotune.html
+++ b/docs/how_to/work_with_microtvm/micro_autotune.html
@@ -584,10 +584,10 @@ the tuned operator.</p>
 ########## Build without Autotuning ##########
 Node Name                                     Ops                                           Time(us)  Time(%)  Shape              Inputs  Outputs  Measurements(us)
 ---------                                     ---                                           --------  -------  -----              ------  -------  ----------------
-tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  311.0     98.721   (1, 2, 10, 10, 3)  2       1        [311.0]
-tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       3.074     0.976    (1, 6, 10, 10)     1       1        [3.074]
-tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.955     0.303    (1, 1, 10, 10, 3)  1       1        [0.955]
-Total_time                                    -                                             315.029   -        -                  -       -        -
+tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  311.1     98.724   (1, 2, 10, 10, 3)  2       1        [311.1]
+tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       3.05      0.968    (1, 6, 10, 10)     1       1        [3.05]
+tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.971     0.308    (1, 1, 10, 10, 3)  1       1        [0.971]
+Total_time                                    -                                             315.121   -        -                  -       -        -
 </pre></div>
 </div>
 </div>
@@ -640,10 +640,10 @@ Total_time                                    -
 ########## Build with Autotuning ##########
 Node Name                                     Ops                                           Time(us)  Time(%)  Shape              Inputs  Outputs  Measurements(us)
 ---------                                     ---                                           --------  -------  -----              ------  -------  ----------------
-tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  130.4     97.927   (1, 6, 10, 10, 1)  2       1        [130.4]
-tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       1.807     1.357    (1, 6, 10, 10)     1       1        [1.807]
-tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.953     0.716    (1, 1, 10, 10, 3)  1       1        [0.953]
-Total_time                                    -                                             133.16    -        -                  -       -        -
+tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  194.3     98.636   (1, 6, 10, 10, 1)  2       1        [194.3]
+tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       1.822     0.925    (1, 6, 10, 10)     1       1        [1.822]
+tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.866     0.44     (1, 3, 10, 10, 1)  1       1        [0.866]
+Total_time                                    -                                             196.988   -        -                  -       -        -
 </pre></div>
 </div>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-work-with-microtvm-micro-autotune-py">
diff --git a/docs/how_to/work_with_microtvm/micro_train.html b/docs/how_to/work_with_microtvm/micro_train.html
index a1b4bb905..487a2e124 100644
--- a/docs/how_to/work_with_microtvm/micro_train.html
+++ b/docs/how_to/work_with_microtvm/micro_train.html
@@ -516,7 +516,7 @@ take about <strong>2 minutes</strong> to download the Stanford Cars, while COCO
 <a href="https://docs.python.org/3/library/shutil.html#shutil.move" title="shutil.move" class="sphx-glr-backref-module-shutil sphx-glr-backref-type-py-function"><span class="n">shutil</span><span class="o">.</span><span class="n">move</span></a><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-typ [...]
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>&#39;/tmp/tmpgu8rltzn/images/random&#39;
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>&#39;/tmp/tmphy9g6amy/images/random&#39;
 </pre></div>
 </div>
 </div>
@@ -576,8 +576,8 @@ objects to other stuff? We can display some examples from our datasets using <co
     <span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s2">&quot;off&quot;</span><span class="p">)</span>
 </pre></div>
 </div>
-<img src="../../_images/sphx_glr_micro_train_001.png" srcset="../../_images/sphx_glr_micro_train_001.png" alt="[1.0, 0.0], [1.0, 0.0], [1.0, 0.0], [0.0, 1.0], [0.0, 1.0], [0.0, 1.0], [0.0, 1.0], [1.0, 0.0], [0.0, 1.0], [1.0, 0.0]" class = "sphx-glr-single-img"/><div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>/tmp/tmpgu8rltzn/images/target contains 8144 images
-/tmp/tmpgu8rltzn/images/random contains 5000 images
+<img src="../../_images/sphx_glr_micro_train_001.png" srcset="../../_images/sphx_glr_micro_train_001.png" alt="[1.0, 0.0], [1.0, 0.0], [1.0, 0.0], [0.0, 1.0], [0.0, 1.0], [0.0, 1.0], [0.0, 1.0], [1.0, 0.0], [0.0, 1.0], [1.0, 0.0]" class = "sphx-glr-single-img"/><div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>/tmp/tmphy9g6amy/images/target contains 8144 images
+/tmp/tmphy9g6amy/images/random contains 5000 images
 </pre></div>
 </div>
 </div>
@@ -689,13 +689,13 @@ the time on our validation set).</p>
 </pre></div>
 </div>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Epoch 1/3
-328/328 - 55s - loss: 0.2138 - accuracy: 0.9234 - val_loss: 0.1243 - val_accuracy: 0.9596
+328/328 - 55s - loss: 0.2269 - accuracy: 0.9256 - val_loss: 0.1412 - val_accuracy: 0.9566
 Epoch 2/3
-328/328 - 53s - loss: 0.0975 - accuracy: 0.9627 - val_loss: 0.1287 - val_accuracy: 0.9573
+328/328 - 52s - loss: 0.0985 - accuracy: 0.9612 - val_loss: 0.1254 - val_accuracy: 0.9596
 Epoch 3/3
-328/328 - 52s - loss: 0.0659 - accuracy: 0.9769 - val_loss: 0.1457 - val_accuracy: 0.9539
+328/328 - 52s - loss: 0.0717 - accuracy: 0.9724 - val_loss: 0.1058 - val_accuracy: 0.9622
 
-&lt;keras.callbacks.History object at 0x7f08a155a650&gt;
+&lt;keras.callbacks.History object at 0x7f6a50f13590&gt;
 </pre></div>
 </div>
 </div>
@@ -957,7 +957,7 @@ as intended.</p>
 <p>From here, we could modify the model to read live images from the camera - we have another
 Arduino tutorial for how to do that <a class="reference external" href="https://github.com/guberti/tvm-arduino-demos/tree/master/examples/person_detection">on GitHub</a>. Alternatively, we could also
 <a class="reference external" href="https://tvm.apache.org/docs/how_to/work_with_microtvm/micro_autotune.html">use TVM’s autotuning capabilities</a> to dramatically improve the model’s performance.</p>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 4 minutes  48.183 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 4 minutes  50.984 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-work-with-microtvm-micro-train-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/b52cec46baf4f78d6bcd94cbe269c8a6/micro_train.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">micro_train.py</span></code></a></p>
diff --git a/docs/how_to/work_with_microtvm/sg_execution_times.html b/docs/how_to/work_with_microtvm/sg_execution_times.html
index 69f45b1db..5edab92e5 100644
--- a/docs/how_to/work_with_microtvm/sg_execution_times.html
+++ b/docs/how_to/work_with_microtvm/sg_execution_times.html
@@ -327,7 +327,7 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-work-with-microtvm-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>05:41.334</strong> total execution time for <strong>how_to_work_with_microtvm</strong> files:</p>
+<p><strong>05:45.227</strong> total execution time for <strong>how_to_work_with_microtvm</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 83%" />
@@ -336,19 +336,19 @@
 </colgroup>
 <tbody>
 <tr class="row-odd"><td><p><a class="reference internal" href="micro_train.html#sphx-glr-how-to-work-with-microtvm-micro-train-py"><span class="std std-ref">Training Vision Models for microTVM on Arduino</span></a> (<code class="docutils literal notranslate"><span class="pre">micro_train.py</span></code>)</p></td>
-<td><p>04:48.183</p></td>
+<td><p>04:50.984</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="micro_autotune.html#sphx-glr-how-to-work-with-microtvm-micro-autotune-py"><span class="std std-ref">Autotuning with microTVM</span></a> (<code class="docutils literal notranslate"><span class="pre">micro_autotune.py</span></code>)</p></td>
-<td><p>00:42.314</p></td>
+<td><p>00:42.988</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="micro_aot.html#sphx-glr-how-to-work-with-microtvm-micro-aot-py"><span class="std std-ref">microTVM Host-Driven AoT</span></a> (<code class="docutils literal notranslate"><span class="pre">micro_aot.py</span></code>)</p></td>
-<td><p>00:07.554</p></td>
+<td><p>00:07.957</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="micro_tflite.html#sphx-glr-how-to-work-with-microtvm-micro-tflite-py"><span class="std std-ref">microTVM with TFLite Models</span></a> (<code class="docutils literal notranslate"><span class="pre">micro_tflite.py</span></code>)</p></td>
-<td><p>00:03.281</p></td>
+<td><p>00:03.297</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="micro_ethosu.html#sphx-glr-how-to-work-with-microtvm-micro-ethosu-py"><span class="std std-ref">Running TVM on bare metal Arm(R) Cortex(R)-M55 CPU and Ethos(TM)-U55 NPU with CMSIS-NN</span></a> (<code class="docutils literal notranslate"><span class="pre">micro_ethosu.py</span></code>)</p></td>
diff --git a/docs/how_to/work_with_relay/sg_execution_times.html b/docs/how_to/work_with_relay/sg_execution_times.html
index 2c614d0f6..f9801f31e 100644
--- a/docs/how_to/work_with_relay/sg_execution_times.html
+++ b/docs/how_to/work_with_relay/sg_execution_times.html
@@ -327,7 +327,7 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-work-with-relay-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>00:42.376</strong> total execution time for <strong>how_to_work_with_relay</strong> files:</p>
+<p><strong>00:41.632</strong> total execution time for <strong>how_to_work_with_relay</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 84%" />
@@ -336,15 +336,15 @@
 </colgroup>
 <tbody>
 <tr class="row-odd"><td><p><a class="reference internal" href="using_pipeline_executor.html#sphx-glr-how-to-work-with-relay-using-pipeline-executor-py"><span class="std std-ref">Using Pipeline Executor in Relay</span></a> (<code class="docutils literal notranslate"><span class="pre">using_pipeline_executor.py</span></code>)</p></td>
-<td><p>00:30.425</p></td>
+<td><p>00:30.268</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="using_external_lib.html#sphx-glr-how-to-work-with-relay-using-external-lib-py"><span class="std std-ref">Using External Libraries in Relay</span></a> (<code class="docutils literal notranslate"><span class="pre">using_external_lib.py</span></code>)</p></td>
-<td><p>00:09.852</p></td>
+<td><p>00:09.896</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="build_gcn.html#sphx-glr-how-to-work-with-relay-build-gcn-py"><span class="std std-ref">Building a Graph Convolutional Network</span></a> (<code class="docutils literal notranslate"><span class="pre">build_gcn.py</span></code>)</p></td>
-<td><p>00:02.091</p></td>
+<td><p>00:01.460</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="using_relay_viz.html#sphx-glr-how-to-work-with-relay-using-relay-viz-py"><span class="std std-ref">Use Relay Visualizer to Visualize Relay</span></a> (<code class="docutils literal notranslate"><span class="pre">using_relay_viz.py</span></code>)</p></td>
diff --git a/docs/how_to/work_with_schedules/intrin_math.html b/docs/how_to/work_with_schedules/intrin_math.html
index 741aa191d..3ad87b5c5 100644
--- a/docs/how_to/work_with_schedules/intrin_math.html
+++ b/docs/how_to/work_with_schedules/intrin_math.html
@@ -522,7 +522,7 @@ The following example customizes CUDA lowering rule for <code class="code docuti
 <a href="../../reference/api/python/ir.html#tvm.ir.register_intrin_lowering" title="tvm.ir.register_intrin_lowering" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-function"><span class="n">register_intrin_lowering</span></a><span class="p">(</span><span class="s2">&quot;tir.exp&quot;</span><span class="p">,</span> <span class="n">target</span><span class="o">=</span><span class="s2">&quot;cuda&quot;</span><span class="p">,</span> <span class="n">f</span><span class="o">= [...]
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>&lt;function my_cuda_math_rule at 0x7f08a0ffe0e0&gt;
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>&lt;function my_cuda_math_rule at 0x7f6a147cf050&gt;
 </pre></div>
 </div>
 <p>Register the rule to TVM with override option to override existing rule.
diff --git a/docs/how_to/work_with_schedules/sg_execution_times.html b/docs/how_to/work_with_schedules/sg_execution_times.html
index ade1bce43..0eb447230 100644
--- a/docs/how_to/work_with_schedules/sg_execution_times.html
+++ b/docs/how_to/work_with_schedules/sg_execution_times.html
@@ -327,7 +327,7 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-work-with-schedules-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>00:04.207</strong> total execution time for <strong>how_to_work_with_schedules</strong> files:</p>
+<p><strong>00:04.083</strong> total execution time for <strong>how_to_work_with_schedules</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 83%" />
@@ -336,23 +336,23 @@
 </colgroup>
 <tbody>
 <tr class="row-odd"><td><p><a class="reference internal" href="intrin_math.html#sphx-glr-how-to-work-with-schedules-intrin-math-py"><span class="std std-ref">Intrinsics and Math Functions</span></a> (<code class="docutils literal notranslate"><span class="pre">intrin_math.py</span></code>)</p></td>
-<td><p>00:01.901</p></td>
+<td><p>00:01.873</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="tensorize.html#sphx-glr-how-to-work-with-schedules-tensorize-py"><span class="std std-ref">Use Tensorize to Leverage Hardware Intrinsics</span></a> (<code class="docutils literal notranslate"><span class="pre">tensorize.py</span></code>)</p></td>
-<td><p>00:01.070</p></td>
+<td><p>00:00.986</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="reduction.html#sphx-glr-how-to-work-with-schedules-reduction-py"><span class="std std-ref">Reduction</span></a> (<code class="docutils literal notranslate"><span class="pre">reduction.py</span></code>)</p></td>
-<td><p>00:00.535</p></td>
+<td><p>00:00.529</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="scan.html#sphx-glr-how-to-work-with-schedules-scan-py"><span class="std std-ref">Scan and Recurrent Kernel</span></a> (<code class="docutils literal notranslate"><span class="pre">scan.py</span></code>)</p></td>
-<td><p>00:00.517</p></td>
+<td><p>00:00.512</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="extern_op.html#sphx-glr-how-to-work-with-schedules-extern-op-py"><span class="std std-ref">External Tensor Functions</span></a> (<code class="docutils literal notranslate"><span class="pre">extern_op.py</span></code>)</p></td>
-<td><p>00:00.102</p></td>
+<td><p>00:00.100</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="schedule_primitives.html#sphx-glr-how-to-work-with-schedules-schedule-primitives-py"><span class="std std-ref">Schedule Primitives in TVM</span></a> (<code class="docutils literal notranslate"><span class="pre">schedule_primitives.py</span></code>)</p></td>
diff --git a/docs/how_to/work_with_schedules/tensorize.html b/docs/how_to/work_with_schedules/tensorize.html
index 09df5c98a..1abba1c89 100644
--- a/docs/how_to/work_with_schedules/tensorize.html
+++ b/docs/how_to/work_with_schedules/tensorize.html
@@ -577,7 +577,7 @@ The importing needs to happen before the tensorized GEMV being executed.</p>
              C: Buffer(C_2: Pointer(float32), float32, [524288], [])}
   buffer_map = {A_1: A, B_1: B, C_1: C}
   preflattened_buffer_map = {A_1: A_3: Buffer(A_2, float32, [1024, 64], []), B_1: B_3: Buffer(B_2, float32, [512, 64], []), C_1: C_3: Buffer(C_2, float32, [1024, 512], [])} {
-  attr [IterVar(i: int32, (nullptr), &quot;DataPar&quot;, &quot;&quot;)] &quot;pragma_import_llvm&quot; = &quot;; ModuleID = &#39;/tmp/tmpt1mbau4e/input0.cc&#39;\nsource_filename = \&quot;/tmp/tmpt1mbau4e/input0.cc\&quot;\ntarget datalayout = \&quot;e-m:e-i64:64-f80:128-n8:16:32:64-S128\&quot;\ntarget triple = \&quot;x86_64-pc-linux-gnu\&quot;\n\n; Function Attrs: noinline nounwind optnone uwtable\ndefine dso_local i32 @gemv_update(float*, float*, float*, i32, i32, i32) #0 {\n  %7 = allo [...]
+  attr [IterVar(i: int32, (nullptr), &quot;DataPar&quot;, &quot;&quot;)] &quot;pragma_import_llvm&quot; = &quot;; ModuleID = &#39;/tmp/tmpa7b5_n3j/input0.cc&#39;\nsource_filename = \&quot;/tmp/tmpa7b5_n3j/input0.cc\&quot;\ntarget datalayout = \&quot;e-m:e-i64:64-f80:128-n8:16:32:64-S128\&quot;\ntarget triple = \&quot;x86_64-pc-linux-gnu\&quot;\n\n; Function Attrs: noinline nounwind optnone uwtable\ndefine dso_local i32 @gemv_update(float*, float*, float*, i32, i32, i32) #0 {\n  %7 = allo [...]
   for (i, 0, 1024) {
     for (j.outer: int32, 0, 32) {
       @tir.call_extern(&quot;gemv_update&quot;, @tir.tvm_access_ptr(@tir.type_annotation(, dtype=float32), C_2, ((i*512) + (j.outer*16)), 16, 2, dtype=handle), @tir.tvm_access_ptr(@tir.type_annotation(, dtype=float32), A_2, (i*64), 64, 1, dtype=handle), @tir.tvm_access_ptr(@tir.type_annotation(, dtype=float32), B_2, (j.outer*1024), 1024, 1, dtype=handle), 16, 64, 64, dtype=int32)
diff --git a/docs/reference/api/doxygen/classes.html b/docs/reference/api/doxygen/classes.html
index e96eb697a..8c3bd6642 100644
--- a/docs/reference/api/doxygen/classes.html
+++ b/docs/reference/api/doxygen/classes.html
@@ -129,15 +129,15 @@ $(function() {
 <tr><td valign="top"><a class="el" href="classtvm_1_1script_1_1printer_1_1AttrAccessDoc.html">AttrAccessDoc</a> (<a class="el" href="namespacetvm_1_1script_1_1printer.html">tvm::script::printer</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1relay_1_1DominatorPattern.html">DominatorPattern</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1LT.html">LT</a> (<a class= [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1script_1_1printer_1_1AttrAccessDocNode.html">AttrAccessDocNode</a> (<a class="el" href="namespacetvm_1_1script_1_1printer.html">tvm::script::printer</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1relay_1_1DominatorPatternNode.html">DominatorPatternNode</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1LTNode.htm [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1detail_1_1AttrDocEntry.html">AttrDocEntry</a> (<a class="el" href="namespacetvm_1_1detail.html">tvm::detail</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1DropoutAttrs.html">DropoutAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_m"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div clas [...]
-</td><td valign="top"><a class="el" href="classtvm_1_1relay_1_1RecClosure.html">RecClosure</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1meta__schedule_1_1TensorInfoNode.html">TensorInfoNode</a> (<a class="el" href="namespacetvm_1_1meta__schedule.html">tvm::meta_schedule</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classtvm_1_1detail_1_1AttrDocVisitor.html">AttrDocVisitor</a> (<a class="el" href="namespacetvm_1_1detail.html">tvm::detail</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1runtime_1_1profiling_1_1DurationNode.html">DurationNode</a> (<a class="el" href="namespacetvm_1_1runtime_1_1profiling.html">tvm::runtime::profiling</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1relay_1_1RecClosureObj.html [...]
+</td><td valign="top"><a class="el" href="classtvm_1_1relay_1_1RecClosure.html">RecClosure</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1runtime_1_1metadata_1_1TensorInfoNode.html">TensorInfoNode</a> (<a class="el" href="namespacetvm_1_1runtime_1_1metadata.html">tvm::runtime::metadata</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classtvm_1_1detail_1_1AttrDocVisitor.html">AttrDocVisitor</a> (<a class="el" href="namespacetvm_1_1detail.html">tvm::detail</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1runtime_1_1profiling_1_1DurationNode.html">DurationNode</a> (<a class="el" href="namespacetvm_1_1runtime_1_1profiling.html">tvm::runtime::profiling</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1relay_1_1RecClosureObj.html [...]
 <tr><td valign="top"><a class="el" href="structtvm_1_1AttrError.html">AttrError</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1DynExpandDimsAttrs.html">DynExpandDimsAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1runtime_1_1Map.html">Map</a> (<a class="el" href="namespacetvm_1_1runtime.html">tvm::runtime</ [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1detail_1_1AttrExistVisitor.html">AttrExistVisitor</a> (<a class="el" href="namespacetvm_1_1detail.html">tvm::detail</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_e"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;e&#160;&#160;</div></td></tr></table>
 </td><td valign="top"><a class="el" href="classtvm_1_1runtime_1_1MapNode.html">MapNode</a> (<a class="el" href="namespacetvm_1_1runtime.html">tvm::runtime</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1auto__scheduler_1_1RecordReaderNode.html">RecordReaderNode</a> (<a class="el" href="namespacetvm_1_1auto__scheduler.html">tvm::auto_scheduler</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1TensorIntrin.html">TensorIntrin</a>  [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1AttrFieldInfo.html">AttrFieldInfo</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1MapValuePath.html">MapValuePath</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1auto__scheduler_1_1RecordToFile.html">RecordToFile</a> (<a class="el" href="namespacetvm_1_1auto__scheduler.html">tvm::auto_s [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1AttrFieldInfoNode.html">AttrFieldInfoNode</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1EinsumAttrs.html">EinsumAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1MapValuePathNode.html">MapValuePathNode</a> (<a class="el" href="namespacetvm.html">tvm</a>)& [...]
-<tr><td valign="top"><a class="el" href="classtvm_1_1AttributeAccessPath.html">AttributeAccessPath</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1EnvFunc.html">EnvFunc</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1relay_1_1Match.html">Match</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td v [...]
-<tr><td valign="top"><a class="el" href="classtvm_1_1AttributeAccessPathNode.html">AttributeAccessPathNode</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1EnvFuncNode.html">EnvFuncNode</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1MatchBufferRegion.html">MatchBufferRegion</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::ti [...]
+<tr><td valign="top"><a class="el" href="classtvm_1_1AttributeAccessPath.html">AttributeAccessPath</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1EnvFunc.html">EnvFunc</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1relay_1_1Match.html">Match</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td v [...]
+<tr><td valign="top"><a class="el" href="classtvm_1_1AttributeAccessPathNode.html">AttributeAccessPathNode</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1EnvFuncNode.html">EnvFuncNode</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1MatchBufferRegion.html">MatchBufferRegion</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::ti [...]
 <tr><td valign="top"><a class="el" href="structtvm_1_1detail_1_1AttrInitEntry.html">AttrInitEntry</a> (<a class="el" href="namespacetvm_1_1detail.html">tvm::detail</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1EQ.html">EQ</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1MatchBufferRegionNode.html">MatchBufferRegionNode</a> (<a class="el" href="namespacetvm_1_ [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1detail_1_1AttrInitVisitor.html">AttrInitVisitor</a> (<a class="el" href="namespacetvm_1_1detail.html">tvm::detail</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1EQNode.html">EQNode</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1relay_1_1MatchNode.html">MatchNode</a> (<a class="el" href="namespacetvm_1_1relay.html [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1detail_1_1AttrNonDefaultVisitor.html">AttrNonDefaultVisitor</a> (<a class="el" href="namespacetvm_1_1detail.html">tvm::detail</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1ErrorBuilder.html">ErrorBuilder</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1MatmulAttrs.html">MatmulAttrs</a> (<a class="el" href="namespacetvm_1_ [...]
@@ -190,8 +190,8 @@ $(function() {
 <tr><td valign="top"><a class="el" href="classtvm_1_1tir_1_1BlockRealize.html">BlockRealize</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1auto__scheduler_1_1FollowFusedSplitStepNode.html">FollowFusedSplitStepNode</a> (<a class="el" href="namespacetvm_1_1auto__scheduler.html">tvm::auto_scheduler</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1runtime_1_1Module.html">Module [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1tir_1_1BlockRealizeNode.html">BlockRealizeNode</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1auto__scheduler_1_1FollowSplitStep.html">FollowSplitStep</a> (<a class="el" href="namespacetvm_1_1auto__scheduler.html">tvm::auto_scheduler</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1runtime_1_1ModuleNode.html">ModuleNode</ [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1tir_1_1BlockRV.html">BlockRV</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1auto__scheduler_1_1FollowSplitStepNode.html">FollowSplitStepNode</a> (<a class="el" href="namespacetvm_1_1auto__scheduler.html">tvm::auto_scheduler</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1Mul.html">Mul</a> (<a class="el" href="name [...]
-<tr><td valign="top"><a class="el" href="classtvm_1_1tir_1_1BlockRVNode.html">BlockRVNode</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1For.html">For</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1MulNode.html">MulNode</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#16 [...]
-<tr><td valign="top"><a class="el" href="classtvm_1_1tir_1_1BlockScope.html">BlockScope</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1script_1_1printer_1_1ForDoc.html">ForDoc</a> (<a class="el" href="namespacetvm_1_1script_1_1printer.html">tvm::script::printer</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1MultiBoxPriorAttrs.html">MultiBoxPriorAttrs</a> (<a cla [...]
+<tr><td valign="top"><a class="el" href="classtvm_1_1tir_1_1BlockRVNode.html">BlockRVNode</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1For.html">For</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1MulNode.html">MulNode</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#16 [...]
+<tr><td valign="top"><a class="el" href="classtvm_1_1tir_1_1BlockScope.html">BlockScope</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1script_1_1printer_1_1ForDoc.html">ForDoc</a> (<a class="el" href="namespacetvm_1_1script_1_1printer.html">tvm::script::printer</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1MultiBoxPriorAttrs.html">MultiBoxPriorAttrs</a> (<a cla [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1tir_1_1BlockScopeNode.html">BlockScopeNode</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1script_1_1printer_1_1ForDocNode.html">ForDocNode</a> (<a class="el" href="namespacetvm_1_1script_1_1printer.html">tvm::script::printer</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1relay_1_1MultiBoxTransformLocAttrs.html">MultiBo [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1Bool.html">Bool</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1ForNode.html">ForNode</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1meta__schedule_1_1Mutator.html">Mutator</a> (<a class="el" href="namespacetvm_1_1meta__schedule.html">tvm::meta_schedule</a>)&#160;&#1 [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1tir_1_1Broadcast.html">Broadcast</a> (<a class="el" href="namespacetvm_1_1tir.html">tvm::tir</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1runtime_1_1micro__rpc_1_1FrameBuffer.html">FrameBuffer</a> (<a class="el" href="namespacetvm_1_1runtime_1_1micro__rpc.html">tvm::runtime::micro_rpc</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1meta__schedule_1_1MutatorNode.html">MutatorNod [...]
@@ -300,8 +300,8 @@ $(function() {
 <tr><td valign="top"><a class="el" href="classtvm_1_1runtime_1_1NDArray_1_1Container.html">NDArray::Container</a> (<a class="el" href="namespacetvm_1_1runtime.html">tvm::runtime</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1arith_1_1IntSet.html">IntSet</a> (<a class="el" href="namespacetvm_1_1arith.html">tvm::arith</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1tir_1_1usmp_1_1PoolAllocation.html">PoolAllocation</a> (<a class="el" [...]
 <tr><td valign="top"><a class="el" href="classtvm_1_1runtime_1_1NDArray_1_1ContainerBase.html">NDArray::ContainerBase</a> (<a class="el" href="namespacetvm_1_1runtime.html">tvm::runtime</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1arith_1_1IntSetAnalyzer.html">IntSetAnalyzer</a> (<a class="el" href="namespacetvm_1_1arith.html">tvm::arith</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1tir_1_1usmp_1_1PoolAllocationNode.html">Pool [...]
 <tr><td valign="top"><a class="el" href="structtvm_1_1relay_1_1Conv1DAttrs.html">Conv1DAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1arith_1_1IntSetNode.html">IntSetNode</a> (<a class="el" href="namespacetvm_1_1arith.html">tvm::arith</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1PoolInfo.html">PoolInfo</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160; [...]
-<tr><td valign="top"><a class="el" href="structtvm_1_1relay_1_1Conv1DTransposeAttrs.html">Conv1DTransposeAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1IRModule.html">IRModule</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1PoolInfoNode.html">PoolInfoNode</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&# [...]
-<tr><td valign="top"><a class="el" href="structtvm_1_1relay_1_1Conv2DAttrs.html">Conv2DAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1IRModuleNode.html">IRModuleNode</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1PoolInfoProperties.html">PoolInfoProperties</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;& [...]
+<tr><td valign="top"><a class="el" href="structtvm_1_1relay_1_1Conv1DTransposeAttrs.html">Conv1DTransposeAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1IRModule.html">IRModule</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1PoolInfoNode.html">PoolInfoNode</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&# [...]
+<tr><td valign="top"><a class="el" href="structtvm_1_1relay_1_1Conv2DAttrs.html">Conv2DAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1IRModuleNode.html">IRModuleNode</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classtvm_1_1PoolInfoProperties.html">PoolInfoProperties</a> (<a class="el" href="namespacetvm.html">tvm</a>)&#160;& [...]
 </td></tr>
 <tr><td valign="top"><a class="el" href="structtvm_1_1relay_1_1Conv2DTransposeAttrs.html">Conv2DTransposeAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1detail_1_1is__specialized.html">is_specialized</a> (<a class="el" href="namespacetvm_1_1detail.html">tvm::detail</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1PoolInfoPropertiesNode.html">PoolInfoPropertiesNod [...]
 <tr><td valign="top"><a class="el" href="structtvm_1_1relay_1_1Conv2DWinogradAttrs.html">Conv2DWinogradAttrs</a> (<a class="el" href="namespacetvm_1_1relay.html">tvm::relay</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtvm_1_1detail_1_1is__specialized_3_01Container_3_01Args_8_8_8_01_4_00_01Container_01_4.html">is_specialized&lt; Container&lt; Args... &gt;, Container &gt;</a> (<a class="el" href="namespacetvm_1_1detail.html">tvm::detail</a>)&#160;&#160;&#160;</td>< [...]
diff --git a/docs/reference/api/doxygen/classtvm_1_1runtime_1_1ObjectRef.html b/docs/reference/api/doxygen/classtvm_1_1runtime_1_1ObjectRef.html
index 9cc2283f1..1f8628623 100644
--- a/docs/reference/api/doxygen/classtvm_1_1runtime_1_1ObjectRef.html
+++ b/docs/reference/api/doxygen/classtvm_1_1runtime_1_1ObjectRef.html
@@ -81,7 +81,7 @@ $(function() {
 
 <p><code>#include &lt;<a class="el" href="object_8h_source.html">object.h</a>&gt;</code></p>
 
-<p>Inherited by <a class="el" href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array&lt; Range &gt;</a>, <a class="el" href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array&lt; Region &gt;</a>, <a class="el" href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array&lt; T &gt;</a>, <a class="el" href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array&lt; tvm::arith::IterSplitExpr &gt;</a>, <a class="el" href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array&lt;  [...]
+<p>Inherited by <a class="el" href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array&lt; Range &gt;</a>, <a class="el" href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array&lt; Region &gt;</a>, <a class="el" href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array&lt; T &gt;</a>, <a class="el" href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array&lt; tvm::arith::IterSplitExpr &gt;</a>, <a class="el" href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array&lt;  [...]
 <div class="dynheader">
 Collaboration diagram for tvm::runtime::ObjectRef:</div>
 <div class="dyncontent">
diff --git a/docs/reference/api/doxygen/classtvm_1_1runtime_1_1ObjectRef__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1runtime_1_1ObjectRef__coll__graph.svg
index 2fedb06f2..7f789e5bf 100644
--- a/docs/reference/api/doxygen/classtvm_1_1runtime_1_1ObjectRef__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1runtime_1_1ObjectRef__coll__graph.svg
@@ -9,9 +9,9 @@
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 453)">
 <title>tvm::runtime::ObjectRef</title>
 <polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-453 144,-453 144,4 -4,4"/>
-<!-- Node447 -->
+<!-- Node448 -->
 <g id="node1" class="node">
-<title>Node447</title>
+<title>Node448</title>
 <polygon fill="#bfbfbf" stroke="#000000" points="3,-.5 3,-222.5 137,-222.5 137,-.5 3,-.5"/>
 <text text-anchor="middle" x="70" y="-210.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
 <polyline fill="none" stroke="#000000" points="3,-203.5 137,-203.5 "/>
@@ -34,9 +34,9 @@
 <text text-anchor="start" x="11" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
 <text text-anchor="start" x="11" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
 </g>
-<!-- Node448 -->
+<!-- Node449 -->
 <g id="node2" class="node">
-<title>Node448</title>
+<title>Node449</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title="{tvm::runtime::ObjectPtr\l\&lt; tvm::runtime::Object \&gt;\n||+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ~ObjectPtr()\l+ swap()\l+ get()\l+ operator&#45;\&gt;()\land 11 more...\l}">
 <polygon fill="#ffffff" stroke="#000000" points="0,-270.5 0,-448.5 140,-448.5 140,-270.5 0,-270.5"/>
 <text text-anchor="start" x="8" y="-436.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectPtr</text>
@@ -58,9 +58,9 @@
 </a>
 </g>
 </g>
-<!-- Node448&#45;&gt;Node447 -->
+<!-- Node449&#45;&gt;Node448 -->
 <g id="edge1" class="edge">
-<title>Node448&#45;&gt;Node447</title>
+<title>Node449&#45;&gt;Node448</title>
 <path fill="none" stroke="#404040" d="M70,-270.3167C70,-258.8765 70,-247.0062 70,-235.1402"/>
 <polygon fill="none" stroke="#404040" points="70.0001,-234.7944 66,-228.7944 70,-222.7944 74,-228.7943 70.0001,-234.7944"/>
 <text text-anchor="middle" x="89.5" y="-244" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #data_</text>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssertDocNode-members.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssertDocNode-members.html
index 6aa5e5737..f609c444b 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssertDocNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssertDocNode-members.html
@@ -96,18 +96,19 @@ $(function() {
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a0d492efee331e2239a093f4b2017c10f">ref_counter_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a55549a6c23987890246248682560a03d">RefCounterType</a> typedef</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#ad94d79729ac85aa7c976e23d39066383">RuntimeTypeIndex</a>()</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AssertDocNode.html#ac721eddf39251116e55dae1715f04635">test</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AssertDocNode.html">tvm::script::printer::AssertDocNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#a57275ce6ecf2615438470f80c723e327">TVM_DECLARE_BASE_OBJECT_INFO</a>(StmtDocNode, DocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html">tvm::script::printer::StmtDocNode</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a78585f033948da5d1a4121aa7b969c47">tvm::script::printer::DocNode::TVM_DECLARE_BASE_OBJECT_INFO</a>(DocNode, Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AssertDocNode.html#ad44c49551768696f54b290f79b66c0ef">TVM_DECLARE_FINAL_OBJECT_INFO</a>(AssertDocNode, StmtDocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AssertDocNode.html">tvm::script::printer::AssertDocNode</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a481f01923b14e1851ebd38506e9c66ea">type_index</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a4bfc2586cb55f2af47728187b3256255">type_index_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a817ba6c23b7ee1821c48a75edf255a30">TypeIndex2Key</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6ee32a02dd44257da105fbbe5d9c8622">TypeIndex2KeyHash</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6841f97e06e6614dd7e82c6dd41b818a">TypeKey2Index</a>(const std::string &amp;key)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#afd548730a6139d19fe24473ad66026d7">unique</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AssertDocNode.html#aa56a6f1036cf00b3b77e1b4f1eec3e88">VisitAttrs</a>(AttrVisitor *v)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AssertDocNode.html">tvm::script::printer::AssertDocNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a6202cee16104155937f3e64c703f6885">~DocNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">source_paths</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AssertDocNode.html#ac721eddf39251116e55dae1715f04635">test</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AssertDocNode.html">tvm::script::printer::AssertDocNode</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#a57275ce6ecf2615438470f80c723e327">TVM_DECLARE_BASE_OBJECT_INFO</a>(StmtDocNode, DocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html">tvm::script::printer::StmtDocNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a78585f033948da5d1a4121aa7b969c47">tvm::script::printer::DocNode::TVM_DECLARE_BASE_OBJECT_INFO</a>(DocNode, Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AssertDocNode.html#ad44c49551768696f54b290f79b66c0ef">TVM_DECLARE_FINAL_OBJECT_INFO</a>(AssertDocNode, StmtDocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AssertDocNode.html">tvm::script::printer::AssertDocNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a481f01923b14e1851ebd38506e9c66ea">type_index</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a4bfc2586cb55f2af47728187b3256255">type_index_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a817ba6c23b7ee1821c48a75edf255a30">TypeIndex2Key</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6ee32a02dd44257da105fbbe5d9c8622">TypeIndex2KeyHash</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6841f97e06e6614dd7e82c6dd41b818a">TypeKey2Index</a>(const std::string &amp;key)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#afd548730a6139d19fe24473ad66026d7">unique</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AssertDocNode.html#aa56a6f1036cf00b3b77e1b4f1eec3e88">VisitAttrs</a>(AttrVisitor *v)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AssertDocNode.html">tvm::script::printer::AssertDocNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a6202cee16104155937f3e64c703f6885">~DocNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssertDocNode.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssertDocNode.html
index d8eb4f864..c7adaf495 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssertDocNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssertDocNode.html
@@ -79,13 +79,13 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::script::printer::AssertDocNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1AssertDocNode__inherit__graph.svg" width="290" height="1066"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1AssertDocNode__inherit__graph.svg" width="290" height="1080"><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::script::printer::AssertDocNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1AssertDocNode__coll__graph.svg" width="868" height="1710"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1AssertDocNode__coll__graph.svg" width="947" height="2031"><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">
@@ -142,6 +142,10 @@ Public Attributes</h2></td></tr>
 <tr class="memitem:ab5825bdb8b993e7bcdbe592163d549a1 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1StmtDocNode"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Optional.html">Optional</a>&lt; <a class="el" href="classtvm_1_1runtime_1_1String.html">String</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#ab5825bdb8b993e7bcdbe592163d549a1">comment</a> {<a cla [...]
 <tr class="memdesc:ab5825bdb8b993e7bcdbe592163d549a1 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1StmtDocNode"><td class="mdescLeft">&#160;</td><td class="mdescRight">The comment of this doc.  <a href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#ab5825bdb8b993e7bcdbe592163d549a1">More...</a><br /></td></tr>
 <tr class="separator:ab5825bdb8b993e7bcdbe592163d549a1 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1StmtDocNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode')"><img src="closed.png" alt="-"/>&#160;Public Attributes inherited from <a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td></tr>
+<tr class="memitem:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Array.html">Array</a>&lt; <a class="el" href="classtvm_1_1ObjectPath.html">ObjectPath</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">source_paths</a></td></tr>
+<tr class="memdesc:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="mdescLeft">&#160;</td><td class="mdescRight">The list of object paths of the source IR node.  <a href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">More...</a><br /></td></tr>
+<tr class="separator:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
 Static Public Attributes</h2></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssertDocNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssertDocNode__coll__graph.svg
index 635364dba..7feb5175f 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssertDocNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssertDocNode__coll__graph.svg
@@ -4,306 +4,343 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: tvm::script::printer::AssertDocNode Pages: 1 -->
-<svg width="651pt" height="1282pt"
- viewBox="0.00 0.00 650.50 1282.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 1278)">
+<svg width="710pt" height="1523pt"
+ viewBox="0.00 0.00 709.50 1523.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 1519)">
 <title>tvm::script::printer::AssertDocNode</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1278 646.5,-1278 646.5,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1519 705.5,-1519 705.5,4 -4,4"/>
 <!-- Node4 -->
 <g id="node1" class="node">
 <title>Node4</title>
-<polygon fill="#bfbfbf" stroke="#000000" points="356,-.5 356,-79.5 565,-79.5 565,-.5 356,-.5"/>
-<text text-anchor="start" x="364" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="460.5" y="-56.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::AssertDocNode</text>
-<polyline fill="none" stroke="#000000" points="356,-49.5 565,-49.5 "/>
-<text text-anchor="start" x="364" y="-37.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="356,-30.5 565,-30.5 "/>
-<text text-anchor="start" x="364" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="364" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_FINAL_OBJECT_INFO()</text>
+<polygon fill="#bfbfbf" stroke="#000000" points="435,-.5 435,-79.5 644,-79.5 644,-.5 435,-.5"/>
+<text text-anchor="start" x="443" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="539.5" y="-56.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::AssertDocNode</text>
+<polyline fill="none" stroke="#000000" points="435,-49.5 644,-49.5 "/>
+<text text-anchor="start" x="443" y="-37.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="435,-30.5 644,-30.5 "/>
+<text text-anchor="start" x="443" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="443" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_FINAL_OBJECT_INFO()</text>
 </g>
 <!-- Node5 -->
 <g id="node2" class="node">
 <title>Node5</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html" target="_top" xlink:title="The base class of statement doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="152,-133 152,-212 359,-212 359,-133 152,-133"/>
-<text text-anchor="start" x="160" y="-200" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="255.5" y="-189" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::StmtDocNode</text>
-<polyline fill="none" stroke="#000000" points="152,-182 359,-182 "/>
-<text text-anchor="start" x="160" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="152,-163 359,-163 "/>
-<text text-anchor="start" x="160" y="-151" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="160" y="-140" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
+<polygon fill="#ffffff" stroke="#000000" points="296,-117.5 296,-196.5 503,-196.5 503,-117.5 296,-117.5"/>
+<text text-anchor="start" x="304" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="399.5" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::StmtDocNode</text>
+<polyline fill="none" stroke="#000000" points="296,-166.5 503,-166.5 "/>
+<text text-anchor="start" x="304" y="-154.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="296,-147.5 503,-147.5 "/>
+<text text-anchor="start" x="304" y="-135.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="304" y="-124.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node4 -->
 <g id="edge1" class="edge">
 <title>Node5&#45;&gt;Node4</title>
-<path fill="none" stroke="#191970" d="M325.4269,-127.3033C349.3912,-111.8142 376.0066,-94.6116 399.2324,-79.5998"/>
-<polygon fill="none" stroke="#191970" points="323.2276,-124.5573 316.7291,-132.9251 327.0275,-130.4363 323.2276,-124.5573"/>
+<path fill="none" stroke="#191970" d="M454.891,-110.709C467.2194,-100.4059 480.1806,-89.5741 492.1512,-79.5701"/>
+<polygon fill="none" stroke="#191970" points="452.3264,-108.2908 446.8976,-117.3891 456.8153,-113.6621 452.3264,-108.2908"/>
 </g>
 <!-- Node6 -->
 <g id="node3" class="node">
 <title>Node6</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1script_1_1printer_1_1DocNode.html" target="_top" xlink:title="The base class of all Doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="0,-488.5 0,-578.5 207,-578.5 207,-488.5 0,-488.5"/>
-<text text-anchor="start" x="8" y="-566.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="103.5" y="-555.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
-<polyline fill="none" stroke="#000000" points="0,-548.5 207,-548.5 "/>
-<text text-anchor="start" x="8" y="-536.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="0,-529.5 207,-529.5 "/>
-<text text-anchor="start" x="8" y="-517.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="8" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
-<text text-anchor="start" x="8" y="-495.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~DocNode()</text>
+<polygon fill="#ffffff" stroke="#000000" points="163,-324.5 163,-414.5 370,-414.5 370,-324.5 163,-324.5"/>
+<text text-anchor="start" x="171" y="-402.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="266.5" y="-391.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
+<polyline fill="none" stroke="#000000" points="163,-384.5 370,-384.5 "/>
+<text text-anchor="start" x="171" y="-372.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="163,-365.5 370,-365.5 "/>
+<text text-anchor="start" x="171" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="171" y="-342.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
+<text text-anchor="start" x="171" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~DocNode()</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node5 -->
 <g id="edge2" class="edge">
 <title>Node6&#45;&gt;Node5</title>
-<path fill="none" stroke="#191970" d="M126.6158,-478.6001C157.5246,-405.1915 211.5755,-276.8207 238.8095,-212.14"/>
-<polygon fill="none" stroke="#191970" points="123.2519,-477.5701 122.597,-488.1446 129.7034,-480.2865 123.2519,-477.5701"/>
+<path fill="none" stroke="#191970" d="M300.1404,-315.7512C323.3434,-278.6788 353.6753,-230.2162 374.6933,-196.6348"/>
+<polygon fill="none" stroke="#191970" points="297.0445,-314.1007 294.7059,-324.4342 302.9781,-317.8145 297.0445,-314.1007"/>
 </g>
 <!-- Node7 -->
 <g id="node4" class="node">
 <title>Node7</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers. ">
-<polygon fill="#ffffff" stroke="#000000" points="12,-660.5 12,-1047.5 195,-1047.5 195,-660.5 12,-660.5"/>
-<text text-anchor="middle" x="103.5" y="-1035.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
-<polyline fill="none" stroke="#000000" points="12,-1028.5 195,-1028.5 "/>
-<text text-anchor="start" x="20" y="-1016.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<text text-anchor="start" x="20" y="-1005.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
-<text text-anchor="start" x="20" y="-994.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
-<text text-anchor="start" x="20" y="-983.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
-<text text-anchor="start" x="20" y="-972.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
-<text text-anchor="start" x="20" y="-961.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
-<text text-anchor="start" x="20" y="-950.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
-<text text-anchor="start" x="20" y="-939.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="20" y="-928.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="20" y="-917.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
-<text text-anchor="start" x="20" y="-906.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="20" y="-895.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
-<text text-anchor="start" x="20" y="-884.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
-<text text-anchor="start" x="20" y="-873.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
-<polyline fill="none" stroke="#000000" points="12,-866.5 195,-866.5 "/>
-<text text-anchor="start" x="20" y="-854.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
-<text text-anchor="start" x="20" y="-843.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
-<text text-anchor="start" x="20" y="-832.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="20" y="-821.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
-<text text-anchor="start" x="20" y="-810.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
-<text text-anchor="start" x="20" y="-799.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-788.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-777.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-766.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="20" y="-755.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="20" y="-744.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="20" y="-733.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="20" y="-722.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
-<text text-anchor="start" x="20" y="-711.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="20" y="-700.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="20" y="-689.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
-<text text-anchor="start" x="20" y="-678.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
-<text text-anchor="start" x="20" y="-667.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
+<polygon fill="#ffffff" stroke="#000000" points="0,-641.5 0,-1028.5 183,-1028.5 183,-641.5 0,-641.5"/>
+<text text-anchor="middle" x="91.5" y="-1016.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
+<polyline fill="none" stroke="#000000" points="0,-1009.5 183,-1009.5 "/>
+<text text-anchor="start" x="8" y="-997.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<text text-anchor="start" x="8" y="-986.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
+<text text-anchor="start" x="8" y="-975.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-964.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-953.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
+<text text-anchor="start" x="8" y="-942.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-931.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
+<text text-anchor="start" x="8" y="-920.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-909.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="8" y="-898.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-887.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="8" y="-876.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
+<text text-anchor="start" x="8" y="-865.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
+<text text-anchor="start" x="8" y="-854.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
+<polyline fill="none" stroke="#000000" points="0,-847.5 183,-847.5 "/>
+<text text-anchor="start" x="8" y="-835.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
+<text text-anchor="start" x="8" y="-824.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-813.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-802.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-791.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="8" y="-780.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-769.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-758.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-747.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="8" y="-736.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="8" y="-725.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-714.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-703.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-692.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-681.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-670.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
+<text text-anchor="start" x="8" y="-659.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
+<text text-anchor="start" x="8" y="-648.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node6 -->
 <g id="edge3" class="edge">
 <title>Node7&#45;&gt;Node6</title>
-<path fill="none" stroke="#191970" d="M103.5,-649.8931C103.5,-623.284 103.5,-598.4228 103.5,-578.5654"/>
-<polygon fill="none" stroke="#191970" points="100.0001,-650.1701 103.5,-660.1701 107.0001,-650.1701 100.0001,-650.1701"/>
+<path fill="none" stroke="#191970" d="M168.0171,-631.4645C198.3984,-550.6504 230.5744,-465.0622 249.5807,-414.5053"/>
+<polygon fill="none" stroke="#191970" points="164.5648,-630.7015 164.322,-641.2935 171.1171,-633.1648 164.5648,-630.7015"/>
 </g>
 <!-- Node7&#45;&gt;Node7 -->
 <g id="edge4" class="edge">
 <title>Node7&#45;&gt;Node7</title>
-<path fill="none" stroke="#404040" d="M195.3625,-887.9248C206.0482,-881.6637 213,-870.3555 213,-854 213,-843.0112 209.8618,-834.3007 204.5615,-827.8687"/>
-<polygon fill="none" stroke="#404040" points="204.5184,-827.8322 197.3548,-827.0056 195.3625,-820.0752 202.5261,-820.9017 204.5184,-827.8322"/>
-<text text-anchor="middle" x="239" y="-851.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M183.3625,-868.9248C194.0482,-862.6637 201,-851.3555 201,-835 201,-824.0112 197.8618,-815.3007 192.5615,-808.8687"/>
+<polygon fill="none" stroke="#404040" points="192.5184,-808.8322 185.3548,-808.0056 183.3625,-801.0752 190.5261,-801.9017 192.5184,-808.8322"/>
+<text text-anchor="middle" x="227" y="-832.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #deleter_</text>
 </g>
 <!-- Node8 -->
 <g id="node5" class="node">
 <title>Node8</title>
-<g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="{tvm::runtime::Optional\l\&lt; tvm::runtime::String \&gt;\n|+ _type_is_nullable\l|+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ operator=()\l+ operator=()\land 15 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="225,-444.5 225,-622.5 362,-622.5 362,-444.5 225,-444.5"/>
-<text text-anchor="start" x="233" y="-610.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="middle" x="293.5" y="-599.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::String &gt;</text>
-<polyline fill="none" stroke="#000000" points="225,-592.5 362,-592.5 "/>
-<text text-anchor="start" x="233" y="-580.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
-<polyline fill="none" stroke="#000000" points="225,-573.5 362,-573.5 "/>
-<text text-anchor="start" x="233" y="-561.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-550.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-539.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-528.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-517.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-495.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-484.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-473.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="233" y="-462.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="233" y="-451.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 15 more...</text>
+<g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="{tvm::runtime::Array\l\&lt; tvm::ObjectPath \&gt;\n||+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ operator=()\l+ operator=()\land 24 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="271,-746 271,-924 388,-924 388,-746 271,-746"/>
+<text text-anchor="start" x="279" y="-912" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="329.5" y="-901" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::ObjectPath &gt;</text>
+<polyline fill="none" stroke="#000000" points="271,-894 388,-894 "/>
+<text text-anchor="middle" x="329.5" y="-882" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="271,-875 388,-875 "/>
+<text text-anchor="start" x="279" y="-863" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-852" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-841" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-830" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-819" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-808" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-797" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-786" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-775" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="279" y="-764" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="279" y="-753" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
 </a>
 </g>
 </g>
-<!-- Node8&#45;&gt;Node5 -->
+<!-- Node8&#45;&gt;Node6 -->
 <g id="edge5" class="edge">
-<title>Node8&#45;&gt;Node5</title>
-<path fill="none" stroke="#404040" d="M284.1067,-444.264C276.8173,-375.0146 266.9678,-281.4444 260.9338,-224.1209"/>
-<polygon fill="none" stroke="#404040" points="260.926,-224.046 256.3198,-218.4977 259.6697,-212.1119 264.2759,-217.6602 260.926,-224.046"/>
-<text text-anchor="middle" x="309.5" y="-328.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +comment</text>
+<title>Node8&#45;&gt;Node6</title>
+<path fill="none" stroke="#404040" d="M295.1916,-745.8866C282.5421,-708.5256 269.7731,-664.2539 263.5,-623 250.8052,-539.5152 261.5069,-517.4209 263.5,-433 263.5484,-430.9519 263.6055,-428.867 263.6698,-426.7613"/>
+<polygon fill="none" stroke="#404040" points="263.6763,-426.5791 259.8941,-420.4394 264.1069,-414.5868 267.889,-420.7265 263.6763,-426.5791"/>
+<text text-anchor="middle" x="301.5" y="-525.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +source_paths</text>
 </g>
 <!-- Node9 -->
 <g id="node6" class="node">
 <title>Node9</title>
 <g id="a_node6"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference. ">
-<polygon fill="#ffffff" stroke="#000000" points="396.5,-743 396.5,-965 530.5,-965 530.5,-743 396.5,-743"/>
-<text text-anchor="middle" x="463.5" y="-953" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="#000000" points="396.5,-946 530.5,-946 "/>
-<text text-anchor="start" x="404.5" y="-934" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
-<polyline fill="none" stroke="#000000" points="396.5,-927 530.5,-927 "/>
-<text text-anchor="start" x="404.5" y="-915" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
-<text text-anchor="start" x="404.5" y="-904" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
-<text text-anchor="start" x="404.5" y="-893" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
-<text text-anchor="start" x="404.5" y="-882" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
-<text text-anchor="start" x="404.5" y="-871" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
-<text text-anchor="start" x="404.5" y="-860" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
-<text text-anchor="start" x="404.5" y="-849" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
-<text text-anchor="start" x="404.5" y="-838" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
-<text text-anchor="start" x="404.5" y="-827" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="404.5" y="-816" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
-<text text-anchor="start" x="404.5" y="-805" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
-<text text-anchor="start" x="404.5" y="-794" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
-<text text-anchor="start" x="404.5" y="-783" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
-<text text-anchor="start" x="404.5" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
-<text text-anchor="start" x="404.5" y="-761" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="404.5" y="-750" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
+<polygon fill="#ffffff" stroke="#000000" points="383.5,-1066.5 383.5,-1288.5 517.5,-1288.5 517.5,-1066.5 383.5,-1066.5"/>
+<text text-anchor="middle" x="450.5" y="-1276.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="#000000" points="383.5,-1269.5 517.5,-1269.5 "/>
+<text text-anchor="start" x="391.5" y="-1257.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
+<polyline fill="none" stroke="#000000" points="383.5,-1250.5 517.5,-1250.5 "/>
+<text text-anchor="start" x="391.5" y="-1238.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="391.5" y="-1227.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="391.5" y="-1216.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
+<text text-anchor="start" x="391.5" y="-1205.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
+<text text-anchor="start" x="391.5" y="-1194.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
+<text text-anchor="start" x="391.5" y="-1183.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
+<text text-anchor="start" x="391.5" y="-1172.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
+<text text-anchor="start" x="391.5" y="-1161.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="391.5" y="-1150.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="391.5" y="-1139.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="391.5" y="-1128.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
+<text text-anchor="start" x="391.5" y="-1117.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
+<text text-anchor="start" x="391.5" y="-1106.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
+<text text-anchor="start" x="391.5" y="-1095.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
+<text text-anchor="start" x="391.5" y="-1084.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="391.5" y="-1073.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node9&#45;&gt;Node8 -->
 <g id="edge6" class="edge">
 <title>Node9&#45;&gt;Node8</title>
-<path fill="none" stroke="#191970" d="M399.5911,-733.513C380.0618,-696.6944 358.9468,-656.8864 340.7349,-622.5518"/>
-<polygon fill="none" stroke="#191970" points="396.7415,-735.61 404.5193,-742.8041 402.9254,-732.3299 396.7415,-735.61"/>
+<path fill="none" stroke="#191970" d="M405.6482,-1056.7905C404.5847,-1053.8326 403.5338,-1050.8989 402.5,-1048 388.0233,-1007.4067 372.4764,-962.2721 359.466,-924.0367"/>
+<polygon fill="none" stroke="#191970" points="402.3953,-1058.0876 409.0826,-1066.3054 408.9795,-1055.711 402.3953,-1058.0876"/>
 </g>
-<!-- Node12 -->
-<g id="node9" class="node">
-<title>Node12</title>
-<g id="a_node9"><a xlink:href="classtvm_1_1script_1_1printer_1_1Doc.html" target="_top" xlink:title="Reference type of DocNode. ">
-<polygon fill="#ffffff" stroke="#000000" points="380.5,-488.5 380.5,-578.5 546.5,-578.5 546.5,-488.5 380.5,-488.5"/>
-<text text-anchor="middle" x="463.5" y="-566.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer::Doc</text>
-<polyline fill="none" stroke="#000000" points="380.5,-559.5 546.5,-559.5 "/>
-<text text-anchor="middle" x="463.5" y="-547.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="380.5,-540.5 546.5,-540.5 "/>
-<text text-anchor="start" x="388.5" y="-528.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~Doc()</text>
-<text text-anchor="start" x="388.5" y="-517.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
-<text text-anchor="start" x="388.5" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
-<text text-anchor="start" x="388.5" y="-495.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># Doc()</text>
+<!-- Node11 -->
+<g id="node8" class="node">
+<title>Node11</title>
+<g id="a_node8"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="{tvm::runtime::Optional\l\&lt; tvm::runtime::String \&gt;\n|+ _type_is_nullable\l|+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ operator=()\l+ operator=()\land 15 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="348,-439 348,-617 485,-617 485,-439 348,-439"/>
+<text text-anchor="start" x="356" y="-605" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="416.5" y="-594" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::String &gt;</text>
+<polyline fill="none" stroke="#000000" points="348,-587 485,-587 "/>
+<text text-anchor="start" x="356" y="-575" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
+<polyline fill="none" stroke="#000000" points="348,-568 485,-568 "/>
+<text text-anchor="start" x="356" y="-556" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-545" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-534" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-523" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-512" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-501" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-490" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-479" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-468" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="356" y="-457" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="356" y="-446" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 15 more...</text>
 </a>
 </g>
 </g>
-<!-- Node9&#45;&gt;Node12 -->
-<g id="edge10" class="edge">
-<title>Node9&#45;&gt;Node12</title>
-<path fill="none" stroke="#191970" d="M463.5,-732.8025C463.5,-678.812 463.5,-618.5236 463.5,-578.539"/>
-<polygon fill="none" stroke="#191970" points="460.0001,-732.8041 463.5,-742.8041 467.0001,-732.8042 460.0001,-732.8041"/>
+<!-- Node9&#45;&gt;Node11 -->
+<g id="edge9" class="edge">
+<title>Node9&#45;&gt;Node11</title>
+<path fill="none" stroke="#191970" d="M437.635,-1056.4064C436.8441,-1047.1383 436.1192,-1037.9224 435.5,-1029 425.5118,-885.0746 420.4926,-717.4993 418.1951,-617.2332"/>
+<polygon fill="none" stroke="#191970" points="434.1573,-1056.816 438.5171,-1066.4723 441.1306,-1056.2048 434.1573,-1056.816"/>
 </g>
 <!-- Node13 -->
 <g id="node10" class="node">
 <title>Node13</title>
-<g id="a_node10"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="{tvm::runtime::Optional\l\&lt; tvm::script::printer\l::ExprDoc \&gt;\n|+ _type_is_nullable\l|+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ operator=()\l+ operator=()\land 15 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="514.5,-236.5 514.5,-425.5 642.5,-425.5 642.5,-236.5 514.5,-236.5"/>
-<text text-anchor="start" x="522.5" y="-413.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="start" x="522.5" y="-402.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::script::printer</text>
-<text text-anchor="middle" x="578.5" y="-391.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDoc &gt;</text>
-<polyline fill="none" stroke="#000000" points="514.5,-384.5 642.5,-384.5 "/>
-<text text-anchor="start" x="522.5" y="-372.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
-<polyline fill="none" stroke="#000000" points="514.5,-365.5 642.5,-365.5 "/>
-<text text-anchor="start" x="522.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="522.5" y="-342.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="522.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="522.5" y="-320.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="522.5" y="-309.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="522.5" y="-298.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="522.5" y="-287.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="522.5" y="-276.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="522.5" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="522.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="522.5" y="-243.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 15 more...</text>
+<g id="a_node10"><a xlink:href="classtvm_1_1script_1_1printer_1_1Doc.html" target="_top" xlink:title="Reference type of DocNode. ">
+<polygon fill="#ffffff" stroke="#000000" points="444.5,-790 444.5,-880 610.5,-880 610.5,-790 444.5,-790"/>
+<text text-anchor="middle" x="527.5" y="-868" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer::Doc</text>
+<polyline fill="none" stroke="#000000" points="444.5,-861 610.5,-861 "/>
+<text text-anchor="middle" x="527.5" y="-849" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="444.5,-842 610.5,-842 "/>
+<text text-anchor="start" x="452.5" y="-830" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~Doc()</text>
+<text text-anchor="start" x="452.5" y="-819" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
+<text text-anchor="start" x="452.5" y="-808" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
+<text text-anchor="start" x="452.5" y="-797" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># Doc()</text>
 </a>
 </g>
 </g>
 <!-- Node9&#45;&gt;Node13 -->
 <g id="edge12" class="edge">
 <title>Node9&#45;&gt;Node13</title>
-<path fill="none" stroke="#191970" d="M519.3889,-733.5229C533.4229,-698.5603 546.9164,-659.8572 555.5,-623 570.5807,-558.2446 576.2564,-483.4654 578.2003,-425.7935"/>
-<polygon fill="none" stroke="#191970" points="516.1403,-732.2204 515.6167,-742.8023 522.625,-734.8565 516.1403,-732.2204"/>
+<path fill="none" stroke="#191970" d="M477.7727,-1056.1895C491.5073,-995.0976 507.3308,-924.7137 517.3705,-880.0565"/>
+<polygon fill="none" stroke="#191970" points="474.2784,-1055.7759 475.4997,-1066.3001 481.108,-1057.3113 474.2784,-1055.7759"/>
+</g>
+<!-- Node14 -->
+<g id="node11" class="node">
+<title>Node14</title>
+<g id="a_node11"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="{tvm::runtime::Optional\l\&lt; tvm::script::printer\l::ExprDoc \&gt;\n|+ _type_is_nullable\l|+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ operator=()\l+ operator=()\land 15 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="573.5,-433.5 573.5,-622.5 701.5,-622.5 701.5,-433.5 573.5,-433.5"/>
+<text text-anchor="start" x="581.5" y="-610.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="start" x="581.5" y="-599.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::script::printer</text>
+<text text-anchor="middle" x="637.5" y="-588.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDoc &gt;</text>
+<polyline fill="none" stroke="#000000" points="573.5,-581.5 701.5,-581.5 "/>
+<text text-anchor="start" x="581.5" y="-569.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
+<polyline fill="none" stroke="#000000" points="573.5,-562.5 701.5,-562.5 "/>
+<text text-anchor="start" x="581.5" y="-550.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="581.5" y="-539.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="581.5" y="-528.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="581.5" y="-517.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="581.5" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="581.5" y="-495.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="581.5" y="-484.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="581.5" y="-473.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="581.5" y="-462.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="581.5" y="-451.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="581.5" y="-440.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 15 more...</text>
+</a>
+</g>
+</g>
+<!-- Node9&#45;&gt;Node14 -->
+<g id="edge14" class="edge">
+<title>Node9&#45;&gt;Node14</title>
+<path fill="none" stroke="#191970" d="M526.0027,-1132.0817C561.0958,-1106.558 599.4324,-1071.3081 619.5,-1029 681.2307,-898.8546 670.6685,-727.5942 655.486,-622.7724"/>
+<polygon fill="none" stroke="#191970" points="523.7573,-1129.3837 517.6362,-1138.0314 527.8141,-1135.0883 523.7573,-1129.3837"/>
 </g>
 <!-- Node10 -->
 <g id="node7" class="node">
 <title>Node10</title>
 <g id="a_node7"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title="{tvm::runtime::ObjectPtr\l\&lt; tvm::runtime::Object \&gt;\n||+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ~ObjectPtr()\l+ swap()\l+ get()\l+ operator&#45;\&gt;()\land 11 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="393.5,-1095.5 393.5,-1273.5 533.5,-1273.5 533.5,-1095.5 393.5,-1095.5"/>
-<text text-anchor="start" x="401.5" y="-1261.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="463.5" y="-1250.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="#000000" points="393.5,-1243.5 533.5,-1243.5 "/>
-<text text-anchor="middle" x="463.5" y="-1231.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="393.5,-1224.5 533.5,-1224.5 "/>
-<text text-anchor="start" x="401.5" y="-1212.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="401.5" y="-1201.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="401.5" y="-1190.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="401.5" y="-1179.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="401.5" y="-1168.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="401.5" y="-1157.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="401.5" y="-1146.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="401.5" y="-1135.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ swap()</text>
-<text text-anchor="start" x="401.5" y="-1124.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
-<text text-anchor="start" x="401.5" y="-1113.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="401.5" y="-1102.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 11 more...</text>
+<polygon fill="#ffffff" stroke="#000000" points="380.5,-1336.5 380.5,-1514.5 520.5,-1514.5 520.5,-1336.5 380.5,-1336.5"/>
+<text text-anchor="start" x="388.5" y="-1502.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="450.5" y="-1491.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="#000000" points="380.5,-1484.5 520.5,-1484.5 "/>
+<text text-anchor="middle" x="450.5" y="-1472.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="380.5,-1465.5 520.5,-1465.5 "/>
+<text text-anchor="start" x="388.5" y="-1453.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="388.5" y="-1442.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="388.5" y="-1431.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="388.5" y="-1420.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="388.5" y="-1409.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="388.5" y="-1398.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="388.5" y="-1387.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="388.5" y="-1376.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ swap()</text>
+<text text-anchor="start" x="388.5" y="-1365.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="388.5" y="-1354.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="388.5" y="-1343.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 11 more...</text>
 </a>
 </g>
 </g>
 <!-- Node10&#45;&gt;Node9 -->
 <g id="edge7" class="edge">
 <title>Node10&#45;&gt;Node9</title>
-<path fill="none" stroke="#404040" d="M463.5,-1095.4973C463.5,-1059.1115 463.5,-1016.409 463.5,-977.1129"/>
-<polygon fill="none" stroke="#404040" points="463.5001,-977.0376 459.5,-971.0377 463.5,-965.0376 467.5,-971.0376 463.5001,-977.0376"/>
-<text text-anchor="middle" x="483" y="-1069" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #data_</text>
+<path fill="none" stroke="#404040" d="M450.5,-1336.3167C450.5,-1324.8765 450.5,-1313.0062 450.5,-1301.1402"/>
+<polygon fill="none" stroke="#404040" points="450.5001,-1300.7944 446.5,-1294.7944 450.5,-1288.7944 454.5,-1294.7943 450.5001,-1300.7944"/>
+<text text-anchor="middle" x="470" y="-1310" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #data_</text>
 </g>
-<!-- Node11 -->
-<g id="node8" class="node">
-<title>Node11</title>
-<g id="a_node8"><a xlink:href="classtvm_1_1script_1_1printer_1_1ExprDoc.html" target="_top" xlink:title="Reference type of ExprDocNode. ">
-<polygon fill="#ffffff" stroke="#000000" points="377.5,-127.5 377.5,-217.5 543.5,-217.5 543.5,-127.5 377.5,-127.5"/>
-<text text-anchor="start" x="385.5" y="-205.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="460.5" y="-194.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDoc</text>
-<polyline fill="none" stroke="#000000" points="377.5,-187.5 543.5,-187.5 "/>
-<text text-anchor="middle" x="460.5" y="-175.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="377.5,-168.5 543.5,-168.5 "/>
-<text text-anchor="start" x="385.5" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
-<text text-anchor="start" x="385.5" y="-145.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
-<text text-anchor="start" x="385.5" y="-134.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ExprDoc()</text>
-</a>
+<!-- Node11&#45;&gt;Node5 -->
+<g id="edge8" class="edge">
+<title>Node11&#45;&gt;Node5</title>
+<path fill="none" stroke="#404040" d="M412.4064,-438.6641C409.1136,-366.8021 404.6012,-268.3262 401.877,-208.8738"/>
+<polygon fill="none" stroke="#404040" points="401.8732,-208.7906 397.6028,-202.98 401.3239,-196.8032 405.5944,-202.6138 401.8732,-208.7906"/>
+<text text-anchor="middle" x="439.5" y="-367" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +comment</text>
 </g>
+<!-- Node12 -->
+<g id="node9" class="node">
+<title>Node12</title>
+<g id="a_node9"><a xlink:href="classtvm_1_1script_1_1printer_1_1ExprDoc.html" target="_top" xlink:title="Reference type of ExprDocNode. ">
+<polygon fill="#ffffff" stroke="#000000" points="445.5,-215.5 445.5,-305.5 611.5,-305.5 611.5,-215.5 445.5,-215.5"/>
+<text text-anchor="start" x="453.5" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="528.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDoc</text>
+<polyline fill="none" stroke="#000000" points="445.5,-275.5 611.5,-275.5 "/>
+<text text-anchor="middle" x="528.5" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="445.5,-256.5 611.5,-256.5 "/>
+<text text-anchor="start" x="453.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
+<text text-anchor="start" x="453.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
+<text text-anchor="start" x="453.5" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ExprDoc()</text>
+</a>
 </g>
-<!-- Node11&#45;&gt;Node4 -->
-<g id="edge8" class="edge">
-<title>Node11&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M460.5,-127.2716C460.5,-115.9302 460.5,-103.6718 460.5,-92.0284"/>
-<polygon fill="none" stroke="#404040" points="460.5001,-91.7081 456.5,-85.7081 460.5,-79.7081 464.5,-85.708 460.5001,-91.7081"/>
-<text text-anchor="middle" x="476" y="-101" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +test</text>
 </g>
-<!-- Node12&#45;&gt;Node11 -->
-<g id="edge9" class="edge">
-<title>Node12&#45;&gt;Node11</title>
-<path fill="none" stroke="#191970" d="M463.0387,-477.9864C462.4448,-406.5238 461.4242,-283.7143 460.8754,-217.6698"/>
-<polygon fill="none" stroke="#191970" points="459.54,-478.1741 463.1231,-488.1446 466.5398,-478.1159 459.54,-478.1741"/>
+<!-- Node12&#45;&gt;Node4 -->
+<g id="edge10" class="edge">
+<title>Node12&#45;&gt;Node4</title>
+<path fill="none" stroke="#404040" d="M530.7526,-215.3465C532.5427,-179.4621 535.048,-129.2433 536.9188,-91.7409"/>
+<polygon fill="none" stroke="#404040" points="536.929,-91.5343 533.233,-85.3425 537.527,-79.5492 541.2231,-85.7411 536.929,-91.5343"/>
+<text text-anchor="middle" x="551" y="-154.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +test</text>
 </g>
-<!-- Node13&#45;&gt;Node4 -->
+<!-- Node13&#45;&gt;Node12 -->
 <g id="edge11" class="edge">
-<title>Node13&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M579.7356,-236.4317C576.869,-200.5548 569.439,-160.343 552.5,-127 545.2799,-112.7878 534.7682,-99.6465 523.4091,-88.1097"/>
-<polygon fill="none" stroke="#404040" points="523.2341,-87.9408 516.1388,-86.6536 514.598,-79.609 521.6933,-80.8962 523.2341,-87.9408"/>
-<text text-anchor="middle" x="593" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +msg</text>
+<title>Node13&#45;&gt;Node12</title>
+<path fill="none" stroke="#191970" d="M527.5962,-779.7415C527.7933,-666.4928 528.2398,-409.9649 528.4212,-305.7674"/>
+<polygon fill="none" stroke="#191970" points="524.096,-779.9138 527.5785,-789.9199 531.096,-779.9261 524.096,-779.9138"/>
+</g>
+<!-- Node14&#45;&gt;Node4 -->
+<g id="edge13" class="edge">
+<title>Node14&#45;&gt;Node4</title>
+<path fill="none" stroke="#404040" d="M638.1479,-433.284C636.6544,-370.5525 630.9632,-286.8929 613.5,-215 602.9369,-171.5136 582.7877,-124.9714 566.1789,-90.8247"/>
+<polygon fill="none" stroke="#404040" points="566.0183,-90.4997 559.7737,-86.8932 560.701,-79.742 566.9455,-83.3484 566.0183,-90.4997"/>
+<text text-anchor="middle" x="645" y="-258" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +msg</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssertDocNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssertDocNode__inherit__graph.svg
index c2a22d33b..fe4de2f59 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssertDocNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssertDocNode__inherit__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: tvm::script::printer::AssertDocNode Pages: 1 -->
-<svg width="217pt" height="799pt"
- viewBox="0.00 0.00 217.00 799.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 795)">
+<svg width="217pt" height="810pt"
+ viewBox="0.00 0.00 217.00 810.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 806)">
 <title>tvm::script::printer::AssertDocNode</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-795 213,-795 213,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-806 213,-806 213,4 -4,4"/>
 <!-- Node0 -->
 <g id="node1" class="node">
 <title>Node0</title>
@@ -49,10 +49,11 @@
 <g id="node3" class="node">
 <title>Node2</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1script_1_1printer_1_1DocNode.html" target="_top" xlink:title="The base class of all Doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="1,-265.5 1,-355.5 208,-355.5 208,-265.5 1,-265.5"/>
-<text text-anchor="start" x="9" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="104.5" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
-<polyline fill="none" stroke="#000000" points="1,-325.5 208,-325.5 "/>
+<polygon fill="#ffffff" stroke="#000000" points="1,-265.5 1,-366.5 208,-366.5 208,-265.5 1,-265.5"/>
+<text text-anchor="start" x="9" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="104.5" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
+<polyline fill="none" stroke="#000000" points="1,-336.5 208,-336.5 "/>
+<text text-anchor="start" x="9" y="-324.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ source_paths</text>
 <text text-anchor="start" x="9" y="-313.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
 <polyline fill="none" stroke="#000000" points="1,-306.5 208,-306.5 "/>
 <text text-anchor="start" x="9" y="-294.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
@@ -64,58 +65,58 @@
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge2" class="edge">
 <title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="#191970" d="M104.5,-255.2012C104.5,-246.4232 104.5,-237.4326 104.5,-228.9156"/>
-<polygon fill="none" stroke="#191970" points="101.0001,-255.3669 104.5,-265.367 108.0001,-255.367 101.0001,-255.3669"/>
+<path fill="none" stroke="#191970" d="M104.5,-254.9214C104.5,-246.1275 104.5,-237.2114 104.5,-228.7978"/>
+<polygon fill="none" stroke="#191970" points="101.0001,-255.1509 104.5,-265.151 108.0001,-255.151 101.0001,-255.1509"/>
 </g>
 <!-- Node3 -->
 <g id="node4" class="node">
 <title>Node3</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers. ">
-<polygon fill="#ffffff" stroke="#000000" points="13,-392.5 13,-790.5 196,-790.5 196,-392.5 13,-392.5"/>
-<text text-anchor="middle" x="104.5" y="-778.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
-<polyline fill="none" stroke="#000000" points="13,-771.5 196,-771.5 "/>
-<text text-anchor="start" x="21" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<text text-anchor="start" x="21" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
-<text text-anchor="start" x="21" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
-<text text-anchor="start" x="21" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
-<text text-anchor="start" x="21" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
-<text text-anchor="start" x="21" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
-<text text-anchor="start" x="21" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
-<text text-anchor="start" x="21" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="21" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="21" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
-<text text-anchor="start" x="21" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="21" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
-<text text-anchor="start" x="21" y="-627.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
-<text text-anchor="start" x="21" y="-616.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
-<text text-anchor="start" x="21" y="-605.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># deleter_</text>
-<polyline fill="none" stroke="#000000" points="13,-598.5 196,-598.5 "/>
-<text text-anchor="start" x="21" y="-586.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
-<text text-anchor="start" x="21" y="-575.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
-<text text-anchor="start" x="21" y="-564.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="21" y="-553.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
-<text text-anchor="start" x="21" y="-542.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<polygon fill="#ffffff" stroke="#000000" points="13,-403.5 13,-801.5 196,-801.5 196,-403.5 13,-403.5"/>
+<text text-anchor="middle" x="104.5" y="-789.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
+<polyline fill="none" stroke="#000000" points="13,-782.5 196,-782.5 "/>
+<text text-anchor="start" x="21" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<text text-anchor="start" x="21" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
+<text text-anchor="start" x="21" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
+<text text-anchor="start" x="21" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
+<text text-anchor="start" x="21" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
+<text text-anchor="start" x="21" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
+<text text-anchor="start" x="21" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
+<text text-anchor="start" x="21" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="21" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="21" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
+<text text-anchor="start" x="21" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="21" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
+<text text-anchor="start" x="21" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
+<text text-anchor="start" x="21" y="-627.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
+<text text-anchor="start" x="21" y="-616.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># deleter_</text>
+<polyline fill="none" stroke="#000000" points="13,-609.5 196,-609.5 "/>
+<text text-anchor="start" x="21" y="-597.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
+<text text-anchor="start" x="21" y="-586.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
+<text text-anchor="start" x="21" y="-575.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="21" y="-564.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
+<text text-anchor="start" x="21" y="-553.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="21" y="-542.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
 <text text-anchor="start" x="21" y="-531.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
 <text text-anchor="start" x="21" y="-520.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="21" y="-509.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="21" y="-509.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
 <text text-anchor="start" x="21" y="-498.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="21" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="21" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="21" y="-465.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="21" y="-454.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
-<text text-anchor="start" x="21" y="-443.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="21" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="21" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
-<text text-anchor="start" x="21" y="-410.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
-<text text-anchor="start" x="21" y="-399.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="21" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="21" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="21" y="-465.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
+<text text-anchor="start" x="21" y="-454.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="21" y="-443.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="21" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
+<text text-anchor="start" x="21" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
+<text text-anchor="start" x="21" y="-410.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node2 -->
 <g id="edge3" class="edge">
 <title>Node3&#45;&gt;Node2</title>
-<path fill="none" stroke="#191970" d="M104.5,-381.8999C104.5,-372.6327 104.5,-363.8995 104.5,-355.9342"/>
-<polygon fill="none" stroke="#191970" points="101.0001,-382.1543 104.5,-392.1543 108.0001,-382.1543 101.0001,-382.1543"/>
+<path fill="none" stroke="#191970" d="M104.5,-392.8341C104.5,-383.5137 104.5,-374.6751 104.5,-366.5365"/>
+<polygon fill="none" stroke="#191970" points="101.0001,-393.1263 104.5,-403.1263 108.0001,-393.1264 101.0001,-393.1263"/>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssignDocNode-members.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssignDocNode-members.html
index d495af01f..e9347e661 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssignDocNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssignDocNode-members.html
@@ -98,17 +98,18 @@ $(function() {
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a55549a6c23987890246248682560a03d">RefCounterType</a> typedef</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AssignDocNode.html#a436fcace00d445213fc367ece59c4067">rhs</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AssignDocNode.html">tvm::script::printer::AssignDocNode</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#ad94d79729ac85aa7c976e23d39066383">RuntimeTypeIndex</a>()</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#a57275ce6ecf2615438470f80c723e327">TVM_DECLARE_BASE_OBJECT_INFO</a>(StmtDocNode, DocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html">tvm::script::printer::StmtDocNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a78585f033948da5d1a4121aa7b969c47">tvm::script::printer::DocNode::TVM_DECLARE_BASE_OBJECT_INFO</a>(DocNode, Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AssignDocNode.html#aca1851d7238e375b1bc5208cdccad290">TVM_DECLARE_FINAL_OBJECT_INFO</a>(AssignDocNode, StmtDocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AssignDocNode.html">tvm::script::printer::AssignDocNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a481f01923b14e1851ebd38506e9c66ea">type_index</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a4bfc2586cb55f2af47728187b3256255">type_index_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a817ba6c23b7ee1821c48a75edf255a30">TypeIndex2Key</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6ee32a02dd44257da105fbbe5d9c8622">TypeIndex2KeyHash</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6841f97e06e6614dd7e82c6dd41b818a">TypeKey2Index</a>(const std::string &amp;key)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#afd548730a6139d19fe24473ad66026d7">unique</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AssignDocNode.html#adacd976d06e1e1fc8357133efbadb554">VisitAttrs</a>(AttrVisitor *v)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AssignDocNode.html">tvm::script::printer::AssignDocNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a6202cee16104155937f3e64c703f6885">~DocNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">source_paths</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#a57275ce6ecf2615438470f80c723e327">TVM_DECLARE_BASE_OBJECT_INFO</a>(StmtDocNode, DocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html">tvm::script::printer::StmtDocNode</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a78585f033948da5d1a4121aa7b969c47">tvm::script::printer::DocNode::TVM_DECLARE_BASE_OBJECT_INFO</a>(DocNode, Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AssignDocNode.html#aca1851d7238e375b1bc5208cdccad290">TVM_DECLARE_FINAL_OBJECT_INFO</a>(AssignDocNode, StmtDocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AssignDocNode.html">tvm::script::printer::AssignDocNode</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a481f01923b14e1851ebd38506e9c66ea">type_index</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a4bfc2586cb55f2af47728187b3256255">type_index_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a817ba6c23b7ee1821c48a75edf255a30">TypeIndex2Key</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6ee32a02dd44257da105fbbe5d9c8622">TypeIndex2KeyHash</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6841f97e06e6614dd7e82c6dd41b818a">TypeKey2Index</a>(const std::string &amp;key)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#afd548730a6139d19fe24473ad66026d7">unique</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AssignDocNode.html#adacd976d06e1e1fc8357133efbadb554">VisitAttrs</a>(AttrVisitor *v)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AssignDocNode.html">tvm::script::printer::AssignDocNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a6202cee16104155937f3e64c703f6885">~DocNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssignDocNode.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssignDocNode.html
index a4b59492a..3fef0b19c 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssignDocNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssignDocNode.html
@@ -79,13 +79,13 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::script::printer::AssignDocNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1AssignDocNode__inherit__graph.svg" width="290" height="1080"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1AssignDocNode__inherit__graph.svg" width="290" height="1095"><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::script::printer::AssignDocNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1AssignDocNode__coll__graph.svg" width="868" height="1710"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1AssignDocNode__coll__graph.svg" width="947" height="2031"><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">
@@ -145,6 +145,10 @@ Public Attributes</h2></td></tr>
 <tr class="memitem:ab5825bdb8b993e7bcdbe592163d549a1 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1StmtDocNode"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Optional.html">Optional</a>&lt; <a class="el" href="classtvm_1_1runtime_1_1String.html">String</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#ab5825bdb8b993e7bcdbe592163d549a1">comment</a> {<a cla [...]
 <tr class="memdesc:ab5825bdb8b993e7bcdbe592163d549a1 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1StmtDocNode"><td class="mdescLeft">&#160;</td><td class="mdescRight">The comment of this doc.  <a href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#ab5825bdb8b993e7bcdbe592163d549a1">More...</a><br /></td></tr>
 <tr class="separator:ab5825bdb8b993e7bcdbe592163d549a1 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1StmtDocNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode')"><img src="closed.png" alt="-"/>&#160;Public Attributes inherited from <a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td></tr>
+<tr class="memitem:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Array.html">Array</a>&lt; <a class="el" href="classtvm_1_1ObjectPath.html">ObjectPath</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">source_paths</a></td></tr>
+<tr class="memdesc:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="mdescLeft">&#160;</td><td class="mdescRight">The list of object paths of the source IR node.  <a href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">More...</a><br /></td></tr>
+<tr class="separator:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
 Static Public Attributes</h2></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssignDocNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssignDocNode__coll__graph.svg
index 12b2209ed..470ae6f04 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssignDocNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssignDocNode__coll__graph.svg
@@ -4,307 +4,344 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: tvm::script::printer::AssignDocNode Pages: 1 -->
-<svg width="651pt" height="1282pt"
- viewBox="0.00 0.00 650.50 1282.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 1278)">
+<svg width="710pt" height="1523pt"
+ viewBox="0.00 0.00 709.50 1523.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 1519)">
 <title>tvm::script::printer::AssignDocNode</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1278 646.5,-1278 646.5,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1519 705.5,-1519 705.5,4 -4,4"/>
 <!-- Node4 -->
 <g id="node1" class="node">
 <title>Node4</title>
-<polygon fill="#bfbfbf" stroke="#000000" points="356,-.5 356,-79.5 565,-79.5 565,-.5 356,-.5"/>
-<text text-anchor="start" x="364" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="460.5" y="-56.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::AssignDocNode</text>
-<polyline fill="none" stroke="#000000" points="356,-49.5 565,-49.5 "/>
-<text text-anchor="start" x="364" y="-37.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="356,-30.5 565,-30.5 "/>
-<text text-anchor="start" x="364" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="364" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_FINAL_OBJECT_INFO()</text>
+<polygon fill="#bfbfbf" stroke="#000000" points="435,-.5 435,-79.5 644,-79.5 644,-.5 435,-.5"/>
+<text text-anchor="start" x="443" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="539.5" y="-56.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::AssignDocNode</text>
+<polyline fill="none" stroke="#000000" points="435,-49.5 644,-49.5 "/>
+<text text-anchor="start" x="443" y="-37.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="435,-30.5 644,-30.5 "/>
+<text text-anchor="start" x="443" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="443" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_FINAL_OBJECT_INFO()</text>
 </g>
 <!-- Node5 -->
 <g id="node2" class="node">
 <title>Node5</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html" target="_top" xlink:title="The base class of statement doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="152,-133 152,-212 359,-212 359,-133 152,-133"/>
-<text text-anchor="start" x="160" y="-200" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="255.5" y="-189" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::StmtDocNode</text>
-<polyline fill="none" stroke="#000000" points="152,-182 359,-182 "/>
-<text text-anchor="start" x="160" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="152,-163 359,-163 "/>
-<text text-anchor="start" x="160" y="-151" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="160" y="-140" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
+<polygon fill="#ffffff" stroke="#000000" points="296,-117.5 296,-196.5 503,-196.5 503,-117.5 296,-117.5"/>
+<text text-anchor="start" x="304" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="399.5" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::StmtDocNode</text>
+<polyline fill="none" stroke="#000000" points="296,-166.5 503,-166.5 "/>
+<text text-anchor="start" x="304" y="-154.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="296,-147.5 503,-147.5 "/>
+<text text-anchor="start" x="304" y="-135.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="304" y="-124.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node4 -->
 <g id="edge1" class="edge">
 <title>Node5&#45;&gt;Node4</title>
-<path fill="none" stroke="#191970" d="M325.4269,-127.3033C349.3912,-111.8142 376.0066,-94.6116 399.2324,-79.5998"/>
-<polygon fill="none" stroke="#191970" points="323.2276,-124.5573 316.7291,-132.9251 327.0275,-130.4363 323.2276,-124.5573"/>
+<path fill="none" stroke="#191970" d="M454.891,-110.709C467.2194,-100.4059 480.1806,-89.5741 492.1512,-79.5701"/>
+<polygon fill="none" stroke="#191970" points="452.3264,-108.2908 446.8976,-117.3891 456.8153,-113.6621 452.3264,-108.2908"/>
 </g>
 <!-- Node6 -->
 <g id="node3" class="node">
 <title>Node6</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1script_1_1printer_1_1DocNode.html" target="_top" xlink:title="The base class of all Doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="0,-488.5 0,-578.5 207,-578.5 207,-488.5 0,-488.5"/>
-<text text-anchor="start" x="8" y="-566.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="103.5" y="-555.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
-<polyline fill="none" stroke="#000000" points="0,-548.5 207,-548.5 "/>
-<text text-anchor="start" x="8" y="-536.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="0,-529.5 207,-529.5 "/>
-<text text-anchor="start" x="8" y="-517.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="8" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
-<text text-anchor="start" x="8" y="-495.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~DocNode()</text>
+<polygon fill="#ffffff" stroke="#000000" points="163,-324.5 163,-414.5 370,-414.5 370,-324.5 163,-324.5"/>
+<text text-anchor="start" x="171" y="-402.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="266.5" y="-391.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
+<polyline fill="none" stroke="#000000" points="163,-384.5 370,-384.5 "/>
+<text text-anchor="start" x="171" y="-372.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="163,-365.5 370,-365.5 "/>
+<text text-anchor="start" x="171" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="171" y="-342.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
+<text text-anchor="start" x="171" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~DocNode()</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node5 -->
 <g id="edge2" class="edge">
 <title>Node6&#45;&gt;Node5</title>
-<path fill="none" stroke="#191970" d="M126.6158,-478.6001C157.5246,-405.1915 211.5755,-276.8207 238.8095,-212.14"/>
-<polygon fill="none" stroke="#191970" points="123.2519,-477.5701 122.597,-488.1446 129.7034,-480.2865 123.2519,-477.5701"/>
+<path fill="none" stroke="#191970" d="M300.1404,-315.7512C323.3434,-278.6788 353.6753,-230.2162 374.6933,-196.6348"/>
+<polygon fill="none" stroke="#191970" points="297.0445,-314.1007 294.7059,-324.4342 302.9781,-317.8145 297.0445,-314.1007"/>
 </g>
 <!-- Node7 -->
 <g id="node4" class="node">
 <title>Node7</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers. ">
-<polygon fill="#ffffff" stroke="#000000" points="12,-660.5 12,-1047.5 195,-1047.5 195,-660.5 12,-660.5"/>
-<text text-anchor="middle" x="103.5" y="-1035.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
-<polyline fill="none" stroke="#000000" points="12,-1028.5 195,-1028.5 "/>
-<text text-anchor="start" x="20" y="-1016.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<text text-anchor="start" x="20" y="-1005.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
-<text text-anchor="start" x="20" y="-994.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
-<text text-anchor="start" x="20" y="-983.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
-<text text-anchor="start" x="20" y="-972.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
-<text text-anchor="start" x="20" y="-961.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
-<text text-anchor="start" x="20" y="-950.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
-<text text-anchor="start" x="20" y="-939.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="20" y="-928.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="20" y="-917.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
-<text text-anchor="start" x="20" y="-906.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="20" y="-895.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
-<text text-anchor="start" x="20" y="-884.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
-<text text-anchor="start" x="20" y="-873.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
-<polyline fill="none" stroke="#000000" points="12,-866.5 195,-866.5 "/>
-<text text-anchor="start" x="20" y="-854.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
-<text text-anchor="start" x="20" y="-843.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
-<text text-anchor="start" x="20" y="-832.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="20" y="-821.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
-<text text-anchor="start" x="20" y="-810.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
-<text text-anchor="start" x="20" y="-799.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-788.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-777.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-766.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="20" y="-755.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="20" y="-744.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="20" y="-733.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="20" y="-722.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
-<text text-anchor="start" x="20" y="-711.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="20" y="-700.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="20" y="-689.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
-<text text-anchor="start" x="20" y="-678.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
-<text text-anchor="start" x="20" y="-667.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
+<polygon fill="#ffffff" stroke="#000000" points="0,-641.5 0,-1028.5 183,-1028.5 183,-641.5 0,-641.5"/>
+<text text-anchor="middle" x="91.5" y="-1016.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
+<polyline fill="none" stroke="#000000" points="0,-1009.5 183,-1009.5 "/>
+<text text-anchor="start" x="8" y="-997.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<text text-anchor="start" x="8" y="-986.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
+<text text-anchor="start" x="8" y="-975.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-964.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-953.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
+<text text-anchor="start" x="8" y="-942.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-931.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
+<text text-anchor="start" x="8" y="-920.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-909.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="8" y="-898.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-887.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="8" y="-876.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
+<text text-anchor="start" x="8" y="-865.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
+<text text-anchor="start" x="8" y="-854.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
+<polyline fill="none" stroke="#000000" points="0,-847.5 183,-847.5 "/>
+<text text-anchor="start" x="8" y="-835.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
+<text text-anchor="start" x="8" y="-824.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-813.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-802.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-791.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="8" y="-780.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-769.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-758.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-747.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="8" y="-736.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="8" y="-725.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-714.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-703.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-692.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-681.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-670.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
+<text text-anchor="start" x="8" y="-659.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
+<text text-anchor="start" x="8" y="-648.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node6 -->
 <g id="edge3" class="edge">
 <title>Node7&#45;&gt;Node6</title>
-<path fill="none" stroke="#191970" d="M103.5,-649.8931C103.5,-623.284 103.5,-598.4228 103.5,-578.5654"/>
-<polygon fill="none" stroke="#191970" points="100.0001,-650.1701 103.5,-660.1701 107.0001,-650.1701 100.0001,-650.1701"/>
+<path fill="none" stroke="#191970" d="M168.0171,-631.4645C198.3984,-550.6504 230.5744,-465.0622 249.5807,-414.5053"/>
+<polygon fill="none" stroke="#191970" points="164.5648,-630.7015 164.322,-641.2935 171.1171,-633.1648 164.5648,-630.7015"/>
 </g>
 <!-- Node7&#45;&gt;Node7 -->
 <g id="edge4" class="edge">
 <title>Node7&#45;&gt;Node7</title>
-<path fill="none" stroke="#404040" d="M195.3625,-887.9248C206.0482,-881.6637 213,-870.3555 213,-854 213,-843.0112 209.8618,-834.3007 204.5615,-827.8687"/>
-<polygon fill="none" stroke="#404040" points="204.5184,-827.8322 197.3548,-827.0056 195.3625,-820.0752 202.5261,-820.9017 204.5184,-827.8322"/>
-<text text-anchor="middle" x="239" y="-851.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M183.3625,-868.9248C194.0482,-862.6637 201,-851.3555 201,-835 201,-824.0112 197.8618,-815.3007 192.5615,-808.8687"/>
+<polygon fill="none" stroke="#404040" points="192.5184,-808.8322 185.3548,-808.0056 183.3625,-801.0752 190.5261,-801.9017 192.5184,-808.8322"/>
+<text text-anchor="middle" x="227" y="-832.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #deleter_</text>
 </g>
 <!-- Node8 -->
 <g id="node5" class="node">
 <title>Node8</title>
-<g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="{tvm::runtime::Optional\l\&lt; tvm::runtime::String \&gt;\n|+ _type_is_nullable\l|+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ operator=()\l+ operator=()\land 15 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="225,-444.5 225,-622.5 362,-622.5 362,-444.5 225,-444.5"/>
-<text text-anchor="start" x="233" y="-610.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="middle" x="293.5" y="-599.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::String &gt;</text>
-<polyline fill="none" stroke="#000000" points="225,-592.5 362,-592.5 "/>
-<text text-anchor="start" x="233" y="-580.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
-<polyline fill="none" stroke="#000000" points="225,-573.5 362,-573.5 "/>
-<text text-anchor="start" x="233" y="-561.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-550.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-539.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-528.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-517.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-495.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-484.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-473.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="233" y="-462.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="233" y="-451.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 15 more...</text>
+<g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="{tvm::runtime::Array\l\&lt; tvm::ObjectPath \&gt;\n||+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ operator=()\l+ operator=()\land 24 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="271,-746 271,-924 388,-924 388,-746 271,-746"/>
+<text text-anchor="start" x="279" y="-912" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="329.5" y="-901" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::ObjectPath &gt;</text>
+<polyline fill="none" stroke="#000000" points="271,-894 388,-894 "/>
+<text text-anchor="middle" x="329.5" y="-882" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="271,-875 388,-875 "/>
+<text text-anchor="start" x="279" y="-863" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-852" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-841" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-830" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-819" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-808" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-797" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-786" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-775" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="279" y="-764" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="279" y="-753" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
 </a>
 </g>
 </g>
-<!-- Node8&#45;&gt;Node5 -->
+<!-- Node8&#45;&gt;Node6 -->
 <g id="edge5" class="edge">
-<title>Node8&#45;&gt;Node5</title>
-<path fill="none" stroke="#404040" d="M284.1067,-444.264C276.8173,-375.0146 266.9678,-281.4444 260.9338,-224.1209"/>
-<polygon fill="none" stroke="#404040" points="260.926,-224.046 256.3198,-218.4977 259.6697,-212.1119 264.2759,-217.6602 260.926,-224.046"/>
-<text text-anchor="middle" x="309.5" y="-328.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +comment</text>
+<title>Node8&#45;&gt;Node6</title>
+<path fill="none" stroke="#404040" d="M295.1916,-745.8866C282.5421,-708.5256 269.7731,-664.2539 263.5,-623 250.8052,-539.5152 261.5069,-517.4209 263.5,-433 263.5484,-430.9519 263.6055,-428.867 263.6698,-426.7613"/>
+<polygon fill="none" stroke="#404040" points="263.6763,-426.5791 259.8941,-420.4394 264.1069,-414.5868 267.889,-420.7265 263.6763,-426.5791"/>
+<text text-anchor="middle" x="301.5" y="-525.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +source_paths</text>
 </g>
 <!-- Node9 -->
 <g id="node6" class="node">
 <title>Node9</title>
 <g id="a_node6"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference. ">
-<polygon fill="#ffffff" stroke="#000000" points="396.5,-743 396.5,-965 530.5,-965 530.5,-743 396.5,-743"/>
-<text text-anchor="middle" x="463.5" y="-953" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="#000000" points="396.5,-946 530.5,-946 "/>
-<text text-anchor="start" x="404.5" y="-934" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
-<polyline fill="none" stroke="#000000" points="396.5,-927 530.5,-927 "/>
-<text text-anchor="start" x="404.5" y="-915" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
-<text text-anchor="start" x="404.5" y="-904" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
-<text text-anchor="start" x="404.5" y="-893" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
-<text text-anchor="start" x="404.5" y="-882" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
-<text text-anchor="start" x="404.5" y="-871" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
-<text text-anchor="start" x="404.5" y="-860" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
-<text text-anchor="start" x="404.5" y="-849" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
-<text text-anchor="start" x="404.5" y="-838" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
-<text text-anchor="start" x="404.5" y="-827" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="404.5" y="-816" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
-<text text-anchor="start" x="404.5" y="-805" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
-<text text-anchor="start" x="404.5" y="-794" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
-<text text-anchor="start" x="404.5" y="-783" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
-<text text-anchor="start" x="404.5" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
-<text text-anchor="start" x="404.5" y="-761" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="404.5" y="-750" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
+<polygon fill="#ffffff" stroke="#000000" points="383.5,-1066.5 383.5,-1288.5 517.5,-1288.5 517.5,-1066.5 383.5,-1066.5"/>
+<text text-anchor="middle" x="450.5" y="-1276.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="#000000" points="383.5,-1269.5 517.5,-1269.5 "/>
+<text text-anchor="start" x="391.5" y="-1257.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
+<polyline fill="none" stroke="#000000" points="383.5,-1250.5 517.5,-1250.5 "/>
+<text text-anchor="start" x="391.5" y="-1238.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="391.5" y="-1227.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="391.5" y="-1216.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
+<text text-anchor="start" x="391.5" y="-1205.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
+<text text-anchor="start" x="391.5" y="-1194.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
+<text text-anchor="start" x="391.5" y="-1183.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
+<text text-anchor="start" x="391.5" y="-1172.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
+<text text-anchor="start" x="391.5" y="-1161.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="391.5" y="-1150.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="391.5" y="-1139.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="391.5" y="-1128.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
+<text text-anchor="start" x="391.5" y="-1117.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
+<text text-anchor="start" x="391.5" y="-1106.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
+<text text-anchor="start" x="391.5" y="-1095.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
+<text text-anchor="start" x="391.5" y="-1084.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="391.5" y="-1073.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node9&#45;&gt;Node8 -->
 <g id="edge6" class="edge">
 <title>Node9&#45;&gt;Node8</title>
-<path fill="none" stroke="#191970" d="M399.5911,-733.513C380.0618,-696.6944 358.9468,-656.8864 340.7349,-622.5518"/>
-<polygon fill="none" stroke="#191970" points="396.7415,-735.61 404.5193,-742.8041 402.9254,-732.3299 396.7415,-735.61"/>
+<path fill="none" stroke="#191970" d="M405.6482,-1056.7905C404.5847,-1053.8326 403.5338,-1050.8989 402.5,-1048 388.0233,-1007.4067 372.4764,-962.2721 359.466,-924.0367"/>
+<polygon fill="none" stroke="#191970" points="402.3953,-1058.0876 409.0826,-1066.3054 408.9795,-1055.711 402.3953,-1058.0876"/>
 </g>
-<!-- Node12 -->
-<g id="node9" class="node">
-<title>Node12</title>
-<g id="a_node9"><a xlink:href="classtvm_1_1script_1_1printer_1_1Doc.html" target="_top" xlink:title="Reference type of DocNode. ">
-<polygon fill="#ffffff" stroke="#000000" points="380.5,-488.5 380.5,-578.5 546.5,-578.5 546.5,-488.5 380.5,-488.5"/>
-<text text-anchor="middle" x="463.5" y="-566.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer::Doc</text>
-<polyline fill="none" stroke="#000000" points="380.5,-559.5 546.5,-559.5 "/>
-<text text-anchor="middle" x="463.5" y="-547.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="380.5,-540.5 546.5,-540.5 "/>
-<text text-anchor="start" x="388.5" y="-528.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~Doc()</text>
-<text text-anchor="start" x="388.5" y="-517.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
-<text text-anchor="start" x="388.5" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
-<text text-anchor="start" x="388.5" y="-495.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># Doc()</text>
+<!-- Node11 -->
+<g id="node8" class="node">
+<title>Node11</title>
+<g id="a_node8"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="{tvm::runtime::Optional\l\&lt; tvm::runtime::String \&gt;\n|+ _type_is_nullable\l|+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ operator=()\l+ operator=()\land 15 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="348,-439 348,-617 485,-617 485,-439 348,-439"/>
+<text text-anchor="start" x="356" y="-605" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="416.5" y="-594" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::String &gt;</text>
+<polyline fill="none" stroke="#000000" points="348,-587 485,-587 "/>
+<text text-anchor="start" x="356" y="-575" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
+<polyline fill="none" stroke="#000000" points="348,-568 485,-568 "/>
+<text text-anchor="start" x="356" y="-556" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-545" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-534" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-523" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-512" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-501" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-490" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-479" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-468" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="356" y="-457" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="356" y="-446" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 15 more...</text>
 </a>
 </g>
 </g>
-<!-- Node9&#45;&gt;Node12 -->
-<g id="edge10" class="edge">
-<title>Node9&#45;&gt;Node12</title>
-<path fill="none" stroke="#191970" d="M463.5,-732.8025C463.5,-678.812 463.5,-618.5236 463.5,-578.539"/>
-<polygon fill="none" stroke="#191970" points="460.0001,-732.8041 463.5,-742.8041 467.0001,-732.8042 460.0001,-732.8041"/>
+<!-- Node9&#45;&gt;Node11 -->
+<g id="edge9" class="edge">
+<title>Node9&#45;&gt;Node11</title>
+<path fill="none" stroke="#191970" d="M437.635,-1056.4064C436.8441,-1047.1383 436.1192,-1037.9224 435.5,-1029 425.5118,-885.0746 420.4926,-717.4993 418.1951,-617.2332"/>
+<polygon fill="none" stroke="#191970" points="434.1573,-1056.816 438.5171,-1066.4723 441.1306,-1056.2048 434.1573,-1056.816"/>
 </g>
 <!-- Node13 -->
 <g id="node10" class="node">
 <title>Node13</title>
-<g id="a_node10"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="{tvm::runtime::Optional\l\&lt; tvm::script::printer\l::ExprDoc \&gt;\n|+ _type_is_nullable\l|+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ operator=()\l+ operator=()\land 15 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="514.5,-236.5 514.5,-425.5 642.5,-425.5 642.5,-236.5 514.5,-236.5"/>
-<text text-anchor="start" x="522.5" y="-413.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="start" x="522.5" y="-402.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::script::printer</text>
-<text text-anchor="middle" x="578.5" y="-391.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDoc &gt;</text>
-<polyline fill="none" stroke="#000000" points="514.5,-384.5 642.5,-384.5 "/>
-<text text-anchor="start" x="522.5" y="-372.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
-<polyline fill="none" stroke="#000000" points="514.5,-365.5 642.5,-365.5 "/>
-<text text-anchor="start" x="522.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="522.5" y="-342.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="522.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="522.5" y="-320.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="522.5" y="-309.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="522.5" y="-298.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="522.5" y="-287.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="522.5" y="-276.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="522.5" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="522.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="522.5" y="-243.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 15 more...</text>
+<g id="a_node10"><a xlink:href="classtvm_1_1script_1_1printer_1_1Doc.html" target="_top" xlink:title="Reference type of DocNode. ">
+<polygon fill="#ffffff" stroke="#000000" points="444.5,-790 444.5,-880 610.5,-880 610.5,-790 444.5,-790"/>
+<text text-anchor="middle" x="527.5" y="-868" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer::Doc</text>
+<polyline fill="none" stroke="#000000" points="444.5,-861 610.5,-861 "/>
+<text text-anchor="middle" x="527.5" y="-849" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="444.5,-842 610.5,-842 "/>
+<text text-anchor="start" x="452.5" y="-830" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~Doc()</text>
+<text text-anchor="start" x="452.5" y="-819" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
+<text text-anchor="start" x="452.5" y="-808" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
+<text text-anchor="start" x="452.5" y="-797" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># Doc()</text>
 </a>
 </g>
 </g>
 <!-- Node9&#45;&gt;Node13 -->
 <g id="edge12" class="edge">
 <title>Node9&#45;&gt;Node13</title>
-<path fill="none" stroke="#191970" d="M519.3889,-733.5229C533.4229,-698.5603 546.9164,-659.8572 555.5,-623 570.5807,-558.2446 576.2564,-483.4654 578.2003,-425.7935"/>
-<polygon fill="none" stroke="#191970" points="516.1403,-732.2204 515.6167,-742.8023 522.625,-734.8565 516.1403,-732.2204"/>
+<path fill="none" stroke="#191970" d="M477.7727,-1056.1895C491.5073,-995.0976 507.3308,-924.7137 517.3705,-880.0565"/>
+<polygon fill="none" stroke="#191970" points="474.2784,-1055.7759 475.4997,-1066.3001 481.108,-1057.3113 474.2784,-1055.7759"/>
+</g>
+<!-- Node14 -->
+<g id="node11" class="node">
+<title>Node14</title>
+<g id="a_node11"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="{tvm::runtime::Optional\l\&lt; tvm::script::printer\l::ExprDoc \&gt;\n|+ _type_is_nullable\l|+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ operator=()\l+ operator=()\land 15 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="573.5,-433.5 573.5,-622.5 701.5,-622.5 701.5,-433.5 573.5,-433.5"/>
+<text text-anchor="start" x="581.5" y="-610.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="start" x="581.5" y="-599.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::script::printer</text>
+<text text-anchor="middle" x="637.5" y="-588.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDoc &gt;</text>
+<polyline fill="none" stroke="#000000" points="573.5,-581.5 701.5,-581.5 "/>
+<text text-anchor="start" x="581.5" y="-569.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
+<polyline fill="none" stroke="#000000" points="573.5,-562.5 701.5,-562.5 "/>
+<text text-anchor="start" x="581.5" y="-550.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="581.5" y="-539.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="581.5" y="-528.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="581.5" y="-517.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="581.5" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="581.5" y="-495.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="581.5" y="-484.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="581.5" y="-473.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="581.5" y="-462.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="581.5" y="-451.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="581.5" y="-440.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 15 more...</text>
+</a>
+</g>
+</g>
+<!-- Node9&#45;&gt;Node14 -->
+<g id="edge14" class="edge">
+<title>Node9&#45;&gt;Node14</title>
+<path fill="none" stroke="#191970" d="M526.0027,-1132.0817C561.0958,-1106.558 599.4324,-1071.3081 619.5,-1029 681.2307,-898.8546 670.6685,-727.5942 655.486,-622.7724"/>
+<polygon fill="none" stroke="#191970" points="523.7573,-1129.3837 517.6362,-1138.0314 527.8141,-1135.0883 523.7573,-1129.3837"/>
 </g>
 <!-- Node10 -->
 <g id="node7" class="node">
 <title>Node10</title>
 <g id="a_node7"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title="{tvm::runtime::ObjectPtr\l\&lt; tvm::runtime::Object \&gt;\n||+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ~ObjectPtr()\l+ swap()\l+ get()\l+ operator&#45;\&gt;()\land 11 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="393.5,-1095.5 393.5,-1273.5 533.5,-1273.5 533.5,-1095.5 393.5,-1095.5"/>
-<text text-anchor="start" x="401.5" y="-1261.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="463.5" y="-1250.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="#000000" points="393.5,-1243.5 533.5,-1243.5 "/>
-<text text-anchor="middle" x="463.5" y="-1231.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="393.5,-1224.5 533.5,-1224.5 "/>
-<text text-anchor="start" x="401.5" y="-1212.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="401.5" y="-1201.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="401.5" y="-1190.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="401.5" y="-1179.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="401.5" y="-1168.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="401.5" y="-1157.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="401.5" y="-1146.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="401.5" y="-1135.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ swap()</text>
-<text text-anchor="start" x="401.5" y="-1124.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
-<text text-anchor="start" x="401.5" y="-1113.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="401.5" y="-1102.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 11 more...</text>
+<polygon fill="#ffffff" stroke="#000000" points="380.5,-1336.5 380.5,-1514.5 520.5,-1514.5 520.5,-1336.5 380.5,-1336.5"/>
+<text text-anchor="start" x="388.5" y="-1502.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="450.5" y="-1491.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="#000000" points="380.5,-1484.5 520.5,-1484.5 "/>
+<text text-anchor="middle" x="450.5" y="-1472.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="380.5,-1465.5 520.5,-1465.5 "/>
+<text text-anchor="start" x="388.5" y="-1453.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="388.5" y="-1442.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="388.5" y="-1431.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="388.5" y="-1420.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="388.5" y="-1409.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="388.5" y="-1398.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="388.5" y="-1387.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="388.5" y="-1376.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ swap()</text>
+<text text-anchor="start" x="388.5" y="-1365.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="388.5" y="-1354.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="388.5" y="-1343.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 11 more...</text>
 </a>
 </g>
 </g>
 <!-- Node10&#45;&gt;Node9 -->
 <g id="edge7" class="edge">
 <title>Node10&#45;&gt;Node9</title>
-<path fill="none" stroke="#404040" d="M463.5,-1095.4973C463.5,-1059.1115 463.5,-1016.409 463.5,-977.1129"/>
-<polygon fill="none" stroke="#404040" points="463.5001,-977.0376 459.5,-971.0377 463.5,-965.0376 467.5,-971.0376 463.5001,-977.0376"/>
-<text text-anchor="middle" x="483" y="-1069" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #data_</text>
+<path fill="none" stroke="#404040" d="M450.5,-1336.3167C450.5,-1324.8765 450.5,-1313.0062 450.5,-1301.1402"/>
+<polygon fill="none" stroke="#404040" points="450.5001,-1300.7944 446.5,-1294.7944 450.5,-1288.7944 454.5,-1294.7943 450.5001,-1300.7944"/>
+<text text-anchor="middle" x="470" y="-1310" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #data_</text>
 </g>
-<!-- Node11 -->
-<g id="node8" class="node">
-<title>Node11</title>
-<g id="a_node8"><a xlink:href="classtvm_1_1script_1_1printer_1_1ExprDoc.html" target="_top" xlink:title="Reference type of ExprDocNode. ">
-<polygon fill="#ffffff" stroke="#000000" points="377.5,-127.5 377.5,-217.5 543.5,-217.5 543.5,-127.5 377.5,-127.5"/>
-<text text-anchor="start" x="385.5" y="-205.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="460.5" y="-194.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDoc</text>
-<polyline fill="none" stroke="#000000" points="377.5,-187.5 543.5,-187.5 "/>
-<text text-anchor="middle" x="460.5" y="-175.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="377.5,-168.5 543.5,-168.5 "/>
-<text text-anchor="start" x="385.5" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
-<text text-anchor="start" x="385.5" y="-145.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
-<text text-anchor="start" x="385.5" y="-134.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ExprDoc()</text>
-</a>
+<!-- Node11&#45;&gt;Node5 -->
+<g id="edge8" class="edge">
+<title>Node11&#45;&gt;Node5</title>
+<path fill="none" stroke="#404040" d="M412.4064,-438.6641C409.1136,-366.8021 404.6012,-268.3262 401.877,-208.8738"/>
+<polygon fill="none" stroke="#404040" points="401.8732,-208.7906 397.6028,-202.98 401.3239,-196.8032 405.5944,-202.6138 401.8732,-208.7906"/>
+<text text-anchor="middle" x="439.5" y="-367" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +comment</text>
 </g>
+<!-- Node12 -->
+<g id="node9" class="node">
+<title>Node12</title>
+<g id="a_node9"><a xlink:href="classtvm_1_1script_1_1printer_1_1ExprDoc.html" target="_top" xlink:title="Reference type of ExprDocNode. ">
+<polygon fill="#ffffff" stroke="#000000" points="445.5,-215.5 445.5,-305.5 611.5,-305.5 611.5,-215.5 445.5,-215.5"/>
+<text text-anchor="start" x="453.5" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="528.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDoc</text>
+<polyline fill="none" stroke="#000000" points="445.5,-275.5 611.5,-275.5 "/>
+<text text-anchor="middle" x="528.5" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="445.5,-256.5 611.5,-256.5 "/>
+<text text-anchor="start" x="453.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
+<text text-anchor="start" x="453.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
+<text text-anchor="start" x="453.5" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ExprDoc()</text>
+</a>
 </g>
-<!-- Node11&#45;&gt;Node4 -->
-<g id="edge8" class="edge">
-<title>Node11&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M460.5,-127.2716C460.5,-115.9302 460.5,-103.6718 460.5,-92.0284"/>
-<polygon fill="none" stroke="#404040" points="460.5001,-91.7081 456.5,-85.7081 460.5,-79.7081 464.5,-85.708 460.5001,-91.7081"/>
-<text text-anchor="middle" x="473.5" y="-101" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +lhs</text>
 </g>
-<!-- Node12&#45;&gt;Node11 -->
-<g id="edge9" class="edge">
-<title>Node12&#45;&gt;Node11</title>
-<path fill="none" stroke="#191970" d="M463.0387,-477.9864C462.4448,-406.5238 461.4242,-283.7143 460.8754,-217.6698"/>
-<polygon fill="none" stroke="#191970" points="459.54,-478.1741 463.1231,-488.1446 466.5398,-478.1159 459.54,-478.1741"/>
+<!-- Node12&#45;&gt;Node4 -->
+<g id="edge10" class="edge">
+<title>Node12&#45;&gt;Node4</title>
+<path fill="none" stroke="#404040" d="M530.7526,-215.3465C532.5427,-179.4621 535.048,-129.2433 536.9188,-91.7409"/>
+<polygon fill="none" stroke="#404040" points="536.929,-91.5343 533.233,-85.3425 537.527,-79.5492 541.2231,-85.7411 536.929,-91.5343"/>
+<text text-anchor="middle" x="548.5" y="-154.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +lhs</text>
 </g>
-<!-- Node13&#45;&gt;Node4 -->
+<!-- Node13&#45;&gt;Node12 -->
 <g id="edge11" class="edge">
-<title>Node13&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M579.7356,-236.4317C576.869,-200.5548 569.439,-160.343 552.5,-127 545.2799,-112.7878 534.7682,-99.6465 523.4091,-88.1097"/>
-<polygon fill="none" stroke="#404040" points="523.2341,-87.9408 516.1388,-86.6536 514.598,-79.609 521.6933,-80.8962 523.2341,-87.9408"/>
-<text text-anchor="middle" x="608.5" y="-175.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +annotation</text>
-<text text-anchor="middle" x="608.5" y="-164.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+rhs</text>
+<title>Node13&#45;&gt;Node12</title>
+<path fill="none" stroke="#191970" d="M527.5962,-779.7415C527.7933,-666.4928 528.2398,-409.9649 528.4212,-305.7674"/>
+<polygon fill="none" stroke="#191970" points="524.096,-779.9138 527.5785,-789.9199 531.096,-779.9261 524.096,-779.9138"/>
+</g>
+<!-- Node14&#45;&gt;Node4 -->
+<g id="edge13" class="edge">
+<title>Node14&#45;&gt;Node4</title>
+<path fill="none" stroke="#404040" d="M638.1479,-433.284C636.6544,-370.5525 630.9632,-286.8929 613.5,-215 602.9369,-171.5136 582.7877,-124.9714 566.1789,-90.8247"/>
+<polygon fill="none" stroke="#404040" points="566.0183,-90.4997 559.7737,-86.8932 560.701,-79.742 566.9455,-83.3484 566.0183,-90.4997"/>
+<text text-anchor="middle" x="660.5" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +annotation</text>
+<text text-anchor="middle" x="660.5" y="-252.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+rhs</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssignDocNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssignDocNode__inherit__graph.svg
index e76ba813d..ab5c0f592 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssignDocNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AssignDocNode__inherit__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: tvm::script::printer::AssignDocNode Pages: 1 -->
-<svg width="217pt" height="810pt"
- viewBox="0.00 0.00 217.00 810.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 806)">
+<svg width="217pt" height="821pt"
+ viewBox="0.00 0.00 217.00 821.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 817)">
 <title>tvm::script::printer::AssignDocNode</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-806 213,-806 213,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-817 213,-817 213,4 -4,4"/>
 <!-- Node0 -->
 <g id="node1" class="node">
 <title>Node0</title>
@@ -50,10 +50,11 @@
 <g id="node3" class="node">
 <title>Node2</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1script_1_1printer_1_1DocNode.html" target="_top" xlink:title="The base class of all Doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="1,-276.5 1,-366.5 208,-366.5 208,-276.5 1,-276.5"/>
-<text text-anchor="start" x="9" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="104.5" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
-<polyline fill="none" stroke="#000000" points="1,-336.5 208,-336.5 "/>
+<polygon fill="#ffffff" stroke="#000000" points="1,-276.5 1,-377.5 208,-377.5 208,-276.5 1,-276.5"/>
+<text text-anchor="start" x="9" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="104.5" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
+<polyline fill="none" stroke="#000000" points="1,-347.5 208,-347.5 "/>
+<text text-anchor="start" x="9" y="-335.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ source_paths</text>
 <text text-anchor="start" x="9" y="-324.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
 <polyline fill="none" stroke="#000000" points="1,-317.5 208,-317.5 "/>
 <text text-anchor="start" x="9" y="-305.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
@@ -65,58 +66,58 @@
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge2" class="edge">
 <title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="#191970" d="M104.5,-266.2012C104.5,-257.4232 104.5,-248.4326 104.5,-239.9156"/>
-<polygon fill="none" stroke="#191970" points="101.0001,-266.3669 104.5,-276.367 108.0001,-266.367 101.0001,-266.3669"/>
+<path fill="none" stroke="#191970" d="M104.5,-265.9214C104.5,-257.1275 104.5,-248.2114 104.5,-239.7978"/>
+<polygon fill="none" stroke="#191970" points="101.0001,-266.1509 104.5,-276.151 108.0001,-266.151 101.0001,-266.1509"/>
 </g>
 <!-- Node3 -->
 <g id="node4" class="node">
 <title>Node3</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers. ">
-<polygon fill="#ffffff" stroke="#000000" points="13,-403.5 13,-801.5 196,-801.5 196,-403.5 13,-403.5"/>
-<text text-anchor="middle" x="104.5" y="-789.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
-<polyline fill="none" stroke="#000000" points="13,-782.5 196,-782.5 "/>
-<text text-anchor="start" x="21" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<text text-anchor="start" x="21" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
-<text text-anchor="start" x="21" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
-<text text-anchor="start" x="21" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
-<text text-anchor="start" x="21" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
-<text text-anchor="start" x="21" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
-<text text-anchor="start" x="21" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
-<text text-anchor="start" x="21" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="21" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="21" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
-<text text-anchor="start" x="21" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="21" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
-<text text-anchor="start" x="21" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
-<text text-anchor="start" x="21" y="-627.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
-<text text-anchor="start" x="21" y="-616.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># deleter_</text>
-<polyline fill="none" stroke="#000000" points="13,-609.5 196,-609.5 "/>
-<text text-anchor="start" x="21" y="-597.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
-<text text-anchor="start" x="21" y="-586.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
-<text text-anchor="start" x="21" y="-575.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="21" y="-564.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
-<text text-anchor="start" x="21" y="-553.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<polygon fill="#ffffff" stroke="#000000" points="13,-414.5 13,-812.5 196,-812.5 196,-414.5 13,-414.5"/>
+<text text-anchor="middle" x="104.5" y="-800.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
+<polyline fill="none" stroke="#000000" points="13,-793.5 196,-793.5 "/>
+<text text-anchor="start" x="21" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<text text-anchor="start" x="21" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
+<text text-anchor="start" x="21" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
+<text text-anchor="start" x="21" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
+<text text-anchor="start" x="21" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
+<text text-anchor="start" x="21" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
+<text text-anchor="start" x="21" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
+<text text-anchor="start" x="21" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="21" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="21" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
+<text text-anchor="start" x="21" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="21" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
+<text text-anchor="start" x="21" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
+<text text-anchor="start" x="21" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
+<text text-anchor="start" x="21" y="-627.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># deleter_</text>
+<polyline fill="none" stroke="#000000" points="13,-620.5 196,-620.5 "/>
+<text text-anchor="start" x="21" y="-608.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
+<text text-anchor="start" x="21" y="-597.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
+<text text-anchor="start" x="21" y="-586.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="21" y="-575.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
+<text text-anchor="start" x="21" y="-564.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="21" y="-553.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
 <text text-anchor="start" x="21" y="-542.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
 <text text-anchor="start" x="21" y="-531.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="21" y="-520.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="21" y="-520.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
 <text text-anchor="start" x="21" y="-509.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="21" y="-498.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="21" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="21" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="21" y="-465.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
-<text text-anchor="start" x="21" y="-454.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="21" y="-443.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="21" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
-<text text-anchor="start" x="21" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
-<text text-anchor="start" x="21" y="-410.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="21" y="-498.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="21" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="21" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
+<text text-anchor="start" x="21" y="-465.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="21" y="-454.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="21" y="-443.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
+<text text-anchor="start" x="21" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
+<text text-anchor="start" x="21" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node2 -->
 <g id="edge3" class="edge">
 <title>Node3&#45;&gt;Node2</title>
-<path fill="none" stroke="#191970" d="M104.5,-392.8999C104.5,-383.6327 104.5,-374.8995 104.5,-366.9342"/>
-<polygon fill="none" stroke="#191970" points="101.0001,-393.1543 104.5,-403.1543 108.0001,-393.1543 101.0001,-393.1543"/>
+<path fill="none" stroke="#191970" d="M104.5,-403.8341C104.5,-394.5137 104.5,-385.6751 104.5,-377.5365"/>
+<polygon fill="none" stroke="#191970" points="101.0001,-404.1263 104.5,-414.1263 108.0001,-404.1264 101.0001,-404.1263"/>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AttrAccessDocNode-members.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AttrAccessDocNode-members.html
index e73c4cced..7759c783a 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AttrAccessDocNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AttrAccessDocNode-members.html
@@ -99,18 +99,19 @@ $(function() {
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a0d492efee331e2239a093f4b2017c10f">ref_counter_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a55549a6c23987890246248682560a03d">RefCounterType</a> typedef</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#ad94d79729ac85aa7c976e23d39066383">RuntimeTypeIndex</a>()</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</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_1script_1_1printer_1_1ExprDocNode.html#a234d665c202a31c9ded07695673b8625">TVM_DECLARE_BASE_OBJECT_INFO</a>(ExprDocNode, DocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html">tvm::script::printer::ExprDocNode</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a78585f033948da5d1a4121aa7b969c47">tvm::script::printer::DocNode::TVM_DECLARE_BASE_OBJECT_INFO</a>(DocNode, Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AttrAccessDocNode.html#ae0b0973363bb7ea469944a7ddf3894d3">TVM_DECLARE_FINAL_OBJECT_INFO</a>(AttrAccessDocNode, ExprDocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AttrAccessDocNode.html">tvm::script::printer::AttrAccessDocNode</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a481f01923b14e1851ebd38506e9c66ea">type_index</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a4bfc2586cb55f2af47728187b3256255">type_index_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a817ba6c23b7ee1821c48a75edf255a30">TypeIndex2Key</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6ee32a02dd44257da105fbbe5d9c8622">TypeIndex2KeyHash</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6841f97e06e6614dd7e82c6dd41b818a">TypeKey2Index</a>(const std::string &amp;key)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#afd548730a6139d19fe24473ad66026d7">unique</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AttrAccessDocNode.html#a8c7e3a71fc9e1cde3a3e518ba7c95c47">value</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AttrAccessDocNode.html">tvm::script::printer::AttrAccessDocNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AttrAccessDocNode.html#a5c61272c44976dd9df6daf34cb26fb81">VisitAttrs</a>(AttrVisitor *v)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AttrAccessDocNode.html">tvm::script::printer::AttrAccessDocNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a6202cee16104155937f3e64c703f6885">~DocNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">source_paths</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html#a234d665c202a31c9ded07695673b8625">TVM_DECLARE_BASE_OBJECT_INFO</a>(ExprDocNode, DocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html">tvm::script::printer::ExprDocNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a78585f033948da5d1a4121aa7b969c47">tvm::script::printer::DocNode::TVM_DECLARE_BASE_OBJECT_INFO</a>(DocNode, Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AttrAccessDocNode.html#ae0b0973363bb7ea469944a7ddf3894d3">TVM_DECLARE_FINAL_OBJECT_INFO</a>(AttrAccessDocNode, ExprDocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AttrAccessDocNode.html">tvm::script::printer::AttrAccessDocNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a481f01923b14e1851ebd38506e9c66ea">type_index</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a4bfc2586cb55f2af47728187b3256255">type_index_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a817ba6c23b7ee1821c48a75edf255a30">TypeIndex2Key</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6ee32a02dd44257da105fbbe5d9c8622">TypeIndex2KeyHash</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6841f97e06e6614dd7e82c6dd41b818a">TypeKey2Index</a>(const std::string &amp;key)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#afd548730a6139d19fe24473ad66026d7">unique</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AttrAccessDocNode.html#a8c7e3a71fc9e1cde3a3e518ba7c95c47">value</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AttrAccessDocNode.html">tvm::script::printer::AttrAccessDocNode</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AttrAccessDocNode.html#a5c61272c44976dd9df6daf34cb26fb81">VisitAttrs</a>(AttrVisitor *v)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1AttrAccessDocNode.html">tvm::script::printer::AttrAccessDocNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a6202cee16104155937f3e64c703f6885">~DocNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AttrAccessDocNode.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AttrAccessDocNode.html
index aff6392d4..2e5204735 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AttrAccessDocNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AttrAccessDocNode.html
@@ -79,13 +79,13 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::script::printer::AttrAccessDocNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1AttrAccessDocNode__inherit__graph.svg" width="290" height="1110"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1AttrAccessDocNode__inherit__graph.svg" width="290" height="1124"><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::script::printer::AttrAccessDocNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1AttrAccessDocNode__coll__graph.svg" width="658" height="1636"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1AttrAccessDocNode__coll__graph.svg" width="887" height="2090"><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">
@@ -150,6 +150,10 @@ Public Attributes</h2></td></tr>
 <tr class="memitem:a67040f2d50d56e161b1f7aa3876e3e20"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1String.html">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1AttrAccessDocNode.html#a67040f2d50d56e161b1f7aa3876e3e20">name</a></td></tr>
 <tr class="memdesc:a67040f2d50d56e161b1f7aa3876e3e20"><td class="mdescLeft">&#160;</td><td class="mdescRight">The attribute to be accessed.  <a href="#a67040f2d50d56e161b1f7aa3876e3e20">More...</a><br /></td></tr>
 <tr class="separator:a67040f2d50d56e161b1f7aa3876e3e20"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode')"><img src="closed.png" alt="-"/>&#160;Public Attributes inherited from <a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td></tr>
+<tr class="memitem:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Array.html">Array</a>&lt; <a class="el" href="classtvm_1_1ObjectPath.html">ObjectPath</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">source_paths</a></td></tr>
+<tr class="memdesc:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="mdescLeft">&#160;</td><td class="mdescRight">The list of object paths of the source IR node.  <a href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">More...</a><br /></td></tr>
+<tr class="separator:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
 Static Public Attributes</h2></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AttrAccessDocNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AttrAccessDocNode__coll__graph.svg
index c00bd9ad1..958f967e1 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AttrAccessDocNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AttrAccessDocNode__coll__graph.svg
@@ -4,273 +4,310 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: tvm::script::printer::AttrAccessDocNode Pages: 1 -->
-<svg width="493pt" height="1227pt"
- viewBox="0.00 0.00 492.50 1227.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 1223)">
+<svg width="665pt" height="1567pt"
+ viewBox="0.00 0.00 664.50 1567.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 1563)">
 <title>tvm::script::printer::AttrAccessDocNode</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1223 488.5,-1223 488.5,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1563 660.5,-1563 660.5,4 -4,4"/>
 <!-- Node4 -->
 <g id="node1" class="node">
 <title>Node4</title>
-<polygon fill="#bfbfbf" stroke="#000000" points="204,-.5 204,-79.5 413,-79.5 413,-.5 204,-.5"/>
-<text text-anchor="start" x="212" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="308.5" y="-56.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::AttrAccessDocNode</text>
-<polyline fill="none" stroke="#000000" points="204,-49.5 413,-49.5 "/>
-<text text-anchor="start" x="212" y="-37.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="204,-30.5 413,-30.5 "/>
-<text text-anchor="start" x="212" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="212" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_FINAL_OBJECT_INFO()</text>
+<polygon fill="#bfbfbf" stroke="#000000" points="385,-.5 385,-79.5 594,-79.5 594,-.5 385,-.5"/>
+<text text-anchor="start" x="393" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="489.5" y="-56.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::AttrAccessDocNode</text>
+<polyline fill="none" stroke="#000000" points="385,-49.5 594,-49.5 "/>
+<text text-anchor="start" x="393" y="-37.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="385,-30.5 594,-30.5 "/>
+<text text-anchor="start" x="393" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="393" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_FINAL_OBJECT_INFO()</text>
 </g>
 <!-- Node5 -->
 <g id="node2" class="node">
 <title>Node5</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html" target="_top" xlink:title="The base class of expression doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="0,-127.5 0,-250.5 207,-250.5 207,-127.5 0,-127.5"/>
-<text text-anchor="start" x="8" y="-238.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="103.5" y="-227.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDocNode</text>
-<polyline fill="none" stroke="#000000" points="0,-220.5 207,-220.5 "/>
-<text text-anchor="start" x="8" y="-208.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="0,-201.5 207,-201.5 "/>
-<text text-anchor="start" x="8" y="-189.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Attr()</text>
-<text text-anchor="start" x="8" y="-178.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator[]()</text>
-<text text-anchor="start" x="8" y="-167.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Call()</text>
-<text text-anchor="start" x="8" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Call()</text>
-<text text-anchor="start" x="8" y="-145.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="8" y="-134.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
+<polygon fill="#ffffff" stroke="#000000" points="241,-117.5 241,-240.5 448,-240.5 448,-117.5 241,-117.5"/>
+<text text-anchor="start" x="249" y="-228.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="344.5" y="-217.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDocNode</text>
+<polyline fill="none" stroke="#000000" points="241,-210.5 448,-210.5 "/>
+<text text-anchor="start" x="249" y="-198.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="241,-191.5 448,-191.5 "/>
+<text text-anchor="start" x="249" y="-179.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Attr()</text>
+<text text-anchor="start" x="249" y="-168.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator[]()</text>
+<text text-anchor="start" x="249" y="-157.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Call()</text>
+<text text-anchor="start" x="249" y="-146.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Call()</text>
+<text text-anchor="start" x="249" y="-135.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="249" y="-124.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node4 -->
 <g id="edge1" class="edge">
 <title>Node5&#45;&gt;Node4</title>
-<path fill="none" stroke="#191970" d="M196.7084,-121.2534C216.2698,-107.0356 236.2864,-92.487 253.8767,-79.7018"/>
-<polygon fill="none" stroke="#191970" points="194.3924,-118.6099 188.3611,-127.3204 198.508,-124.2722 194.3924,-118.6099"/>
+<path fill="none" stroke="#191970" d="M416.4582,-110.0194C427.3339,-99.5937 438.2258,-89.1525 448.155,-79.6342"/>
+<polygon fill="none" stroke="#191970" points="413.7403,-107.7763 408.9435,-117.2231 418.5845,-112.8295 413.7403,-107.7763"/>
 </g>
 <!-- Node6 -->
 <g id="node3" class="node">
 <title>Node6</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1script_1_1printer_1_1DocNode.html" target="_top" xlink:title="The base class of all Doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="0,-477.5 0,-567.5 207,-567.5 207,-477.5 0,-477.5"/>
-<text text-anchor="start" x="8" y="-555.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="103.5" y="-544.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
-<polyline fill="none" stroke="#000000" points="0,-537.5 207,-537.5 "/>
-<text text-anchor="start" x="8" y="-525.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="0,-518.5 207,-518.5 "/>
-<text text-anchor="start" x="8" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="8" y="-495.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
-<text text-anchor="start" x="8" y="-484.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~DocNode()</text>
+<polygon fill="#ffffff" stroke="#000000" points="226,-368.5 226,-458.5 433,-458.5 433,-368.5 226,-368.5"/>
+<text text-anchor="start" x="234" y="-446.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="329.5" y="-435.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
+<polyline fill="none" stroke="#000000" points="226,-428.5 433,-428.5 "/>
+<text text-anchor="start" x="234" y="-416.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="226,-409.5 433,-409.5 "/>
+<text text-anchor="start" x="234" y="-397.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="234" y="-386.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
+<text text-anchor="start" x="234" y="-375.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~DocNode()</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node5 -->
 <g id="edge2" class="edge">
 <title>Node6&#45;&gt;Node5</title>
-<path fill="none" stroke="#191970" d="M103.5,-466.8134C103.5,-407.1131 103.5,-312.5835 103.5,-250.671"/>
-<polygon fill="none" stroke="#191970" points="100.0001,-467.1756 103.5,-477.1756 107.0001,-467.1757 100.0001,-467.1756"/>
+<path fill="none" stroke="#191970" d="M333.0382,-358.1855C335.29,-322.9825 338.2101,-277.3317 340.5393,-240.9189"/>
+<polygon fill="none" stroke="#191970" points="329.5377,-358.083 332.3922,-368.286 336.5235,-358.5299 329.5377,-358.083"/>
 </g>
 <!-- Node7 -->
 <g id="node4" class="node">
 <title>Node7</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers. ">
-<polygon fill="#ffffff" stroke="#000000" points="12,-605.5 12,-992.5 195,-992.5 195,-605.5 12,-605.5"/>
-<text text-anchor="middle" x="103.5" y="-980.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
-<polyline fill="none" stroke="#000000" points="12,-973.5 195,-973.5 "/>
-<text text-anchor="start" x="20" y="-961.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<text text-anchor="start" x="20" y="-950.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
-<text text-anchor="start" x="20" y="-939.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
-<text text-anchor="start" x="20" y="-928.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
-<text text-anchor="start" x="20" y="-917.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
-<text text-anchor="start" x="20" y="-906.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
-<text text-anchor="start" x="20" y="-895.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
-<text text-anchor="start" x="20" y="-884.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="20" y="-873.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="20" y="-862.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
-<text text-anchor="start" x="20" y="-851.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="20" y="-840.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
-<text text-anchor="start" x="20" y="-829.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
-<text text-anchor="start" x="20" y="-818.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
-<polyline fill="none" stroke="#000000" points="12,-811.5 195,-811.5 "/>
-<text text-anchor="start" x="20" y="-799.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
-<text text-anchor="start" x="20" y="-788.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
-<text text-anchor="start" x="20" y="-777.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="20" y="-766.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
-<text text-anchor="start" x="20" y="-755.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
-<text text-anchor="start" x="20" y="-744.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-733.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-722.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-711.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="20" y="-700.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="20" y="-689.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="20" y="-678.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="20" y="-667.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
-<text text-anchor="start" x="20" y="-656.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="20" y="-645.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="20" y="-634.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
-<text text-anchor="start" x="20" y="-623.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
-<text text-anchor="start" x="20" y="-612.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
+<polygon fill="#ffffff" stroke="#000000" points="0,-685.5 0,-1072.5 183,-1072.5 183,-685.5 0,-685.5"/>
+<text text-anchor="middle" x="91.5" y="-1060.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
+<polyline fill="none" stroke="#000000" points="0,-1053.5 183,-1053.5 "/>
+<text text-anchor="start" x="8" y="-1041.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<text text-anchor="start" x="8" y="-1030.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
+<text text-anchor="start" x="8" y="-1019.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-1008.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-997.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
+<text text-anchor="start" x="8" y="-986.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-975.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
+<text text-anchor="start" x="8" y="-964.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-953.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="8" y="-942.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-931.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="8" y="-920.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
+<text text-anchor="start" x="8" y="-909.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
+<text text-anchor="start" x="8" y="-898.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
+<polyline fill="none" stroke="#000000" points="0,-891.5 183,-891.5 "/>
+<text text-anchor="start" x="8" y="-879.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
+<text text-anchor="start" x="8" y="-868.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-857.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-846.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-835.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="8" y="-824.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-813.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-802.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-791.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="8" y="-780.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="8" y="-769.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-758.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-747.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-736.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-725.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-714.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
+<text text-anchor="start" x="8" y="-703.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
+<text text-anchor="start" x="8" y="-692.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node6 -->
 <g id="edge3" class="edge">
 <title>Node7&#45;&gt;Node6</title>
-<path fill="none" stroke="#191970" d="M103.5,-595.4197C103.5,-585.5618 103.5,-576.2793 103.5,-567.8536"/>
-<polygon fill="none" stroke="#191970" points="100.0001,-595.4591 103.5,-605.4591 107.0001,-595.4592 100.0001,-595.4591"/>
+<path fill="none" stroke="#191970" d="M187.6057,-691.0286C231.0865,-605.9852 278.8052,-512.6531 306.3436,-458.7911"/>
+<polygon fill="none" stroke="#191970" points="184.4425,-689.5271 183.0064,-700.0242 190.6751,-692.7137 184.4425,-689.5271"/>
 </g>
 <!-- Node7&#45;&gt;Node7 -->
 <g id="edge4" class="edge">
 <title>Node7&#45;&gt;Node7</title>
-<path fill="none" stroke="#404040" d="M195.3625,-832.9248C206.0482,-826.6637 213,-815.3555 213,-799 213,-788.0112 209.8618,-779.3007 204.5615,-772.8687"/>
-<polygon fill="none" stroke="#404040" points="204.5184,-772.8322 197.3548,-772.0056 195.3625,-765.0752 202.5261,-765.9017 204.5184,-772.8322"/>
-<text text-anchor="middle" x="239" y="-796.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M183.3625,-912.9248C194.0482,-906.6637 201,-895.3555 201,-879 201,-868.0112 197.8618,-859.3007 192.5615,-852.8687"/>
+<polygon fill="none" stroke="#404040" points="192.5184,-852.8322 185.3548,-852.0056 183.3625,-845.0752 190.5261,-845.9017 192.5184,-852.8322"/>
+<text text-anchor="middle" x="227" y="-876.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #deleter_</text>
 </g>
 <!-- Node8 -->
 <g id="node5" class="node">
 <title>Node8</title>
-<g id="a_node5"><a xlink:href="classtvm_1_1script_1_1printer_1_1ExprDoc.html" target="_top" xlink:title="Reference type of ExprDocNode. ">
-<polygon fill="#ffffff" stroke="#000000" points="225.5,-144 225.5,-234 391.5,-234 391.5,-144 225.5,-144"/>
-<text text-anchor="start" x="233.5" y="-222" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="308.5" y="-211" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDoc</text>
-<polyline fill="none" stroke="#000000" points="225.5,-204 391.5,-204 "/>
-<text text-anchor="middle" x="308.5" y="-192" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="225.5,-185 391.5,-185 "/>
-<text text-anchor="start" x="233.5" y="-173" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
-<text text-anchor="start" x="233.5" y="-162" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
-<text text-anchor="start" x="233.5" y="-151" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ExprDoc()</text>
+<g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="{tvm::runtime::Array\l\&lt; tvm::ObjectPath \&gt;\n||+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ operator=()\l+ operator=()\land 24 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="271,-790 271,-968 388,-968 388,-790 271,-790"/>
+<text text-anchor="start" x="279" y="-956" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="329.5" y="-945" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::ObjectPath &gt;</text>
+<polyline fill="none" stroke="#000000" points="271,-938 388,-938 "/>
+<text text-anchor="middle" x="329.5" y="-926" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="271,-919 388,-919 "/>
+<text text-anchor="start" x="279" y="-907" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-896" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-885" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-874" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-863" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-852" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-841" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-830" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-819" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="279" y="-808" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="279" y="-797" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
 </a>
 </g>
 </g>
-<!-- Node8&#45;&gt;Node4 -->
+<!-- Node8&#45;&gt;Node6 -->
 <g id="edge5" class="edge">
-<title>Node8&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M308.5,-143.8907C308.5,-127.646 308.5,-109.181 308.5,-92.3695"/>
-<polygon fill="none" stroke="#404040" points="308.5001,-91.9002 304.5,-85.9002 308.5,-79.9002 312.5,-85.9002 308.5001,-91.9002"/>
-<text text-anchor="middle" x="328" y="-101" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +value</text>
+<title>Node8&#45;&gt;Node6</title>
+<path fill="none" stroke="#404040" d="M329.5,-789.7977C329.5,-695.8266 329.5,-550.6375 329.5,-470.8671"/>
+<polygon fill="none" stroke="#404040" points="329.5001,-470.644 325.5,-464.644 329.5,-458.644 333.5,-464.644 329.5001,-470.644"/>
+<text text-anchor="middle" x="367.5" y="-569.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +source_paths</text>
 </g>
 <!-- Node9 -->
 <g id="node6" class="node">
 <title>Node9</title>
-<g id="a_node6"><a xlink:href="classtvm_1_1script_1_1printer_1_1Doc.html" target="_top" xlink:title="Reference type of DocNode. ">
-<polygon fill="#ffffff" stroke="#000000" points="229.5,-477.5 229.5,-567.5 395.5,-567.5 395.5,-477.5 229.5,-477.5"/>
-<text text-anchor="middle" x="312.5" y="-555.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer::Doc</text>
-<polyline fill="none" stroke="#000000" points="229.5,-548.5 395.5,-548.5 "/>
-<text text-anchor="middle" x="312.5" y="-536.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="229.5,-529.5 395.5,-529.5 "/>
-<text text-anchor="start" x="237.5" y="-517.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~Doc()</text>
-<text text-anchor="start" x="237.5" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
-<text text-anchor="start" x="237.5" y="-495.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
-<text text-anchor="start" x="237.5" y="-484.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># Doc()</text>
+<g id="a_node6"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference. ">
+<polygon fill="#ffffff" stroke="#000000" points="422.5,-1110.5 422.5,-1332.5 556.5,-1332.5 556.5,-1110.5 422.5,-1110.5"/>
+<text text-anchor="middle" x="489.5" y="-1320.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="#000000" points="422.5,-1313.5 556.5,-1313.5 "/>
+<text text-anchor="start" x="430.5" y="-1301.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
+<polyline fill="none" stroke="#000000" points="422.5,-1294.5 556.5,-1294.5 "/>
+<text text-anchor="start" x="430.5" y="-1282.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="430.5" y="-1271.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="430.5" y="-1260.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
+<text text-anchor="start" x="430.5" y="-1249.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
+<text text-anchor="start" x="430.5" y="-1238.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
+<text text-anchor="start" x="430.5" y="-1227.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
+<text text-anchor="start" x="430.5" y="-1216.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
+<text text-anchor="start" x="430.5" y="-1205.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="430.5" y="-1194.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="430.5" y="-1183.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="430.5" y="-1172.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
+<text text-anchor="start" x="430.5" y="-1161.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
+<text text-anchor="start" x="430.5" y="-1150.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
+<text text-anchor="start" x="430.5" y="-1139.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
+<text text-anchor="start" x="430.5" y="-1128.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="430.5" y="-1117.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node9&#45;&gt;Node8 -->
 <g id="edge6" class="edge">
 <title>Node9&#45;&gt;Node8</title>
-<path fill="none" stroke="#191970" d="M311.8352,-467.0758C311.0526,-401.8217 309.7677,-294.695 309.0424,-234.2253"/>
-<polygon fill="none" stroke="#191970" points="308.3366,-467.2184 311.9564,-477.1756 315.3361,-467.1343 308.3366,-467.2184"/>
+<path fill="none" stroke="#191970" d="M417.4459,-1110.9933C410.3135,-1098.3925 403.5043,-1085.5612 397.5,-1073 381.5696,-1039.6729 367.4054,-1001.5834 356.1832,-968.0299"/>
+<polygon fill="none" stroke="#191970" points="414.4152,-1112.7441 422.4295,-1119.6739 420.4859,-1109.2589 414.4152,-1112.7441"/>
+</g>
+<!-- Node12 -->
+<g id="node9" class="node">
+<title>Node12</title>
+<g id="a_node9"><a xlink:href="classtvm_1_1script_1_1printer_1_1Doc.html" target="_top" xlink:title="Reference type of DocNode. ">
+<polygon fill="#ffffff" stroke="#000000" points="406.5,-834 406.5,-924 572.5,-924 572.5,-834 406.5,-834"/>
+<text text-anchor="middle" x="489.5" y="-912" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer::Doc</text>
+<polyline fill="none" stroke="#000000" points="406.5,-905 572.5,-905 "/>
+<text text-anchor="middle" x="489.5" y="-893" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="406.5,-886 572.5,-886 "/>
+<text text-anchor="start" x="414.5" y="-874" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~Doc()</text>
+<text text-anchor="start" x="414.5" y="-863" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
+<text text-anchor="start" x="414.5" y="-852" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
+<text text-anchor="start" x="414.5" y="-841" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># Doc()</text>
+</a>
+</g>
+</g>
+<!-- Node9&#45;&gt;Node12 -->
+<g id="edge10" class="edge">
+<title>Node9&#45;&gt;Node12</title>
+<path fill="none" stroke="#191970" d="M489.5,-1100.1895C489.5,-1039.0976 489.5,-968.7137 489.5,-924.0565"/>
+<polygon fill="none" stroke="#191970" points="486.0001,-1100.3 489.5,-1110.3001 493.0001,-1100.3001 486.0001,-1100.3"/>
+</g>
+<!-- Node13 -->
+<g id="node10" class="node">
+<title>Node13</title>
+<g id="a_node10"><a xlink:href="classtvm_1_1runtime_1_1String.html" target="_top" xlink:title="Reference to string objects. ">
+<polygon fill="#ffffff" stroke="#000000" points="540.5,-477.5 540.5,-666.5 656.5,-666.5 656.5,-477.5 540.5,-477.5"/>
+<text text-anchor="middle" x="598.5" y="-654.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::String</text>
+<polyline fill="none" stroke="#000000" points="540.5,-647.5 656.5,-647.5 "/>
+<text text-anchor="middle" x="598.5" y="-635.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="540.5,-628.5 656.5,-628.5 "/>
+<text text-anchor="start" x="548.5" y="-616.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ String()</text>
+<text text-anchor="start" x="548.5" y="-605.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ String()</text>
+<text text-anchor="start" x="548.5" y="-594.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ String()</text>
+<text text-anchor="start" x="548.5" y="-583.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ String()</text>
+<text text-anchor="start" x="548.5" y="-572.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="548.5" y="-561.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="548.5" y="-550.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ compare()</text>
+<text text-anchor="start" x="548.5" y="-539.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ compare()</text>
+<text text-anchor="start" x="548.5" y="-528.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ compare()</text>
+<text text-anchor="start" x="548.5" y="-517.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ c_str()</text>
+<text text-anchor="start" x="548.5" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 6 more...</text>
+<text text-anchor="start" x="548.5" y="-495.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ CanConvertFrom()</text>
+<text text-anchor="start" x="548.5" y="-484.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ HashBytes()</text>
+</a>
+</g>
+</g>
+<!-- Node9&#45;&gt;Node13 -->
+<g id="edge12" class="edge">
+<title>Node9&#45;&gt;Node13</title>
+<path fill="none" stroke="#191970" d="M561.562,-1120.2834C569.6121,-1105.0215 576.6466,-1089.0132 581.5,-1073 622.8993,-936.4081 618.2326,-769.214 609.5316,-666.6841"/>
+<polygon fill="none" stroke="#191970" points="558.4269,-1118.722 556.7136,-1129.1774 564.573,-1122.0724 558.4269,-1118.722"/>
 </g>
 <!-- Node10 -->
 <g id="node7" class="node">
 <title>Node10</title>
-<g id="a_node7"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference. ">
-<polygon fill="#ffffff" stroke="#000000" points="324.5,-688 324.5,-910 458.5,-910 458.5,-688 324.5,-688"/>
-<text text-anchor="middle" x="391.5" y="-898" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="#000000" points="324.5,-891 458.5,-891 "/>
-<text text-anchor="start" x="332.5" y="-879" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
-<polyline fill="none" stroke="#000000" points="324.5,-872 458.5,-872 "/>
-<text text-anchor="start" x="332.5" y="-860" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
-<text text-anchor="start" x="332.5" y="-849" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
-<text text-anchor="start" x="332.5" y="-838" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
-<text text-anchor="start" x="332.5" y="-827" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
-<text text-anchor="start" x="332.5" y="-816" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
-<text text-anchor="start" x="332.5" y="-805" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
-<text text-anchor="start" x="332.5" y="-794" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
-<text text-anchor="start" x="332.5" y="-783" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
-<text text-anchor="start" x="332.5" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="332.5" y="-761" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
-<text text-anchor="start" x="332.5" y="-750" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
-<text text-anchor="start" x="332.5" y="-739" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
-<text text-anchor="start" x="332.5" y="-728" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
-<text text-anchor="start" x="332.5" y="-717" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
-<text text-anchor="start" x="332.5" y="-706" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="332.5" y="-695" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
+<g id="a_node7"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title="{tvm::runtime::ObjectPtr\l\&lt; tvm::runtime::Object \&gt;\n||+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ~ObjectPtr()\l+ swap()\l+ get()\l+ operator&#45;\&gt;()\land 11 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="419.5,-1380.5 419.5,-1558.5 559.5,-1558.5 559.5,-1380.5 419.5,-1380.5"/>
+<text text-anchor="start" x="427.5" y="-1546.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="489.5" y="-1535.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="#000000" points="419.5,-1528.5 559.5,-1528.5 "/>
+<text text-anchor="middle" x="489.5" y="-1516.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="419.5,-1509.5 559.5,-1509.5 "/>
+<text text-anchor="start" x="427.5" y="-1497.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="427.5" y="-1486.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="427.5" y="-1475.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="427.5" y="-1464.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="427.5" y="-1453.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="427.5" y="-1442.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="427.5" y="-1431.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="427.5" y="-1420.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ swap()</text>
+<text text-anchor="start" x="427.5" y="-1409.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="427.5" y="-1398.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="427.5" y="-1387.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 11 more...</text>
 </a>
 </g>
 </g>
 <!-- Node10&#45;&gt;Node9 -->
 <g id="edge7" class="edge">
 <title>Node10&#45;&gt;Node9</title>
-<path fill="none" stroke="#191970" d="M356.8796,-677.8287C345.6964,-638.6874 333.9833,-597.6915 325.4002,-567.6508"/>
-<polygon fill="none" stroke="#191970" points="353.5965,-679.0784 359.7092,-687.7321 360.3272,-677.1553 353.5965,-679.0784"/>
-</g>
-<!-- Node12 -->
-<g id="node9" class="node">
-<title>Node12</title>
-<g id="a_node9"><a xlink:href="classtvm_1_1runtime_1_1String.html" target="_top" xlink:title="Reference to string objects. ">
-<polygon fill="#ffffff" stroke="#000000" points="368.5,-269.5 368.5,-458.5 484.5,-458.5 484.5,-269.5 368.5,-269.5"/>
-<text text-anchor="middle" x="426.5" y="-446.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::String</text>
-<polyline fill="none" stroke="#000000" points="368.5,-439.5 484.5,-439.5 "/>
-<text text-anchor="middle" x="426.5" y="-427.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="368.5,-420.5 484.5,-420.5 "/>
-<text text-anchor="start" x="376.5" y="-408.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ String()</text>
-<text text-anchor="start" x="376.5" y="-397.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ String()</text>
-<text text-anchor="start" x="376.5" y="-386.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ String()</text>
-<text text-anchor="start" x="376.5" y="-375.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ String()</text>
-<text text-anchor="start" x="376.5" y="-364.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="376.5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="376.5" y="-342.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ compare()</text>
-<text text-anchor="start" x="376.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ compare()</text>
-<text text-anchor="start" x="376.5" y="-320.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ compare()</text>
-<text text-anchor="start" x="376.5" y="-309.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ c_str()</text>
-<text text-anchor="start" x="376.5" y="-298.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 6 more...</text>
-<text text-anchor="start" x="376.5" y="-287.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ CanConvertFrom()</text>
-<text text-anchor="start" x="376.5" y="-276.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ HashBytes()</text>
-</a>
-</g>
-</g>
-<!-- Node10&#45;&gt;Node12 -->
-<g id="edge10" class="edge">
-<title>Node10&#45;&gt;Node12</title>
-<path fill="none" stroke="#191970" d="M401.2572,-677.7318C406.8276,-608.4999 413.7089,-522.9746 418.8792,-458.7151"/>
-<polygon fill="none" stroke="#191970" points="397.7586,-677.5752 400.4452,-687.8237 404.736,-678.1366 397.7586,-677.5752"/>
+<path fill="none" stroke="#404040" d="M489.5,-1380.3167C489.5,-1368.8765 489.5,-1357.0062 489.5,-1345.1402"/>
+<polygon fill="none" stroke="#404040" points="489.5001,-1344.7944 485.5,-1338.7944 489.5,-1332.7944 493.5,-1338.7943 489.5001,-1344.7944"/>
+<text text-anchor="middle" x="509" y="-1354" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #data_</text>
 </g>
 <!-- Node11 -->
 <g id="node8" class="node">
 <title>Node11</title>
-<g id="a_node8"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title="{tvm::runtime::ObjectPtr\l\&lt; tvm::runtime::Object \&gt;\n||+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ~ObjectPtr()\l+ swap()\l+ get()\l+ operator&#45;\&gt;()\land 11 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="321.5,-1040.5 321.5,-1218.5 461.5,-1218.5 461.5,-1040.5 321.5,-1040.5"/>
-<text text-anchor="start" x="329.5" y="-1206.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="391.5" y="-1195.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="#000000" points="321.5,-1188.5 461.5,-1188.5 "/>
-<text text-anchor="middle" x="391.5" y="-1176.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="321.5,-1169.5 461.5,-1169.5 "/>
-<text text-anchor="start" x="329.5" y="-1157.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="329.5" y="-1146.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="329.5" y="-1135.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="329.5" y="-1124.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="329.5" y="-1113.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="329.5" y="-1102.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="329.5" y="-1091.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="329.5" y="-1080.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ swap()</text>
-<text text-anchor="start" x="329.5" y="-1069.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
-<text text-anchor="start" x="329.5" y="-1058.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="329.5" y="-1047.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 11 more...</text>
+<g id="a_node8"><a xlink:href="classtvm_1_1script_1_1printer_1_1ExprDoc.html" target="_top" xlink:title="Reference type of ExprDocNode. ">
+<polygon fill="#ffffff" stroke="#000000" points="406.5,-259.5 406.5,-349.5 572.5,-349.5 572.5,-259.5 406.5,-259.5"/>
+<text text-anchor="start" x="414.5" y="-337.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="489.5" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDoc</text>
+<polyline fill="none" stroke="#000000" points="406.5,-319.5 572.5,-319.5 "/>
+<text text-anchor="middle" x="489.5" y="-307.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="406.5,-300.5 572.5,-300.5 "/>
+<text text-anchor="start" x="414.5" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
+<text text-anchor="start" x="414.5" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
+<text text-anchor="start" x="414.5" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ExprDoc()</text>
 </a>
 </g>
 </g>
-<!-- Node11&#45;&gt;Node10 -->
+<!-- Node11&#45;&gt;Node4 -->
 <g id="edge8" class="edge">
-<title>Node11&#45;&gt;Node10</title>
-<path fill="none" stroke="#404040" d="M391.5,-1040.4973C391.5,-1004.1115 391.5,-961.409 391.5,-922.1129"/>
-<polygon fill="none" stroke="#404040" points="391.5001,-922.0376 387.5,-916.0377 391.5,-910.0376 395.5,-916.0376 391.5001,-922.0376"/>
-<text text-anchor="middle" x="411" y="-1014" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #data_</text>
+<title>Node11&#45;&gt;Node4</title>
+<path fill="none" stroke="#404040" d="M489.5,-259.3314C489.5,-212.9109 489.5,-140.7231 489.5,-91.9626"/>
+<polygon fill="none" stroke="#404040" points="489.5001,-91.794 485.5,-85.794 489.5,-79.794 493.5,-85.794 489.5001,-91.794"/>
+<text text-anchor="middle" x="509" y="-176.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +value</text>
 </g>
-<!-- Node12&#45;&gt;Node4 -->
+<!-- Node12&#45;&gt;Node11 -->
 <g id="edge9" class="edge">
-<title>Node12&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M430.923,-269.4831C429.4325,-224.2812 422.1946,-170.6454 400.5,-127 393.4045,-112.7252 382.9469,-99.5567 371.6011,-88.0132"/>
-<polygon fill="none" stroke="#404040" points="371.4269,-87.845 364.3319,-86.5561 362.7929,-79.5111 369.8879,-80.8 371.4269,-87.845"/>
-<text text-anchor="middle" x="449.5" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +name</text>
+<title>Node12&#45;&gt;Node11</title>
+<path fill="none" stroke="#191970" d="M489.5,-823.7415C489.5,-710.4928 489.5,-453.9649 489.5,-349.7674"/>
+<polygon fill="none" stroke="#191970" points="486.0001,-823.9199 489.5,-833.9199 493.0001,-823.92 486.0001,-823.9199"/>
+</g>
+<!-- Node13&#45;&gt;Node4 -->
+<g id="edge11" class="edge">
+<title>Node13&#45;&gt;Node4</title>
+<path fill="none" stroke="#404040" d="M596.9735,-477.4869C594.6393,-415.0229 588.986,-331.5875 575.5,-259 563.4549,-194.1682 558.2801,-177.6929 532.5,-117 528.754,-108.1811 524.2701,-99.0726 519.6327,-90.3431"/>
+<polygon fill="none" stroke="#404040" points="519.481,-90.0659 513.0918,-86.7224 513.7206,-79.5388 520.1098,-82.8822 519.481,-90.0659"/>
+<text text-anchor="middle" x="607.5" y="-302" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +name</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AttrAccessDocNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AttrAccessDocNode__inherit__graph.svg
index e8633df1b..32e33f5a1 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AttrAccessDocNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1AttrAccessDocNode__inherit__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: tvm::script::printer::AttrAccessDocNode Pages: 1 -->
-<svg width="217pt" height="832pt"
- viewBox="0.00 0.00 217.00 832.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 828)">
+<svg width="217pt" height="843pt"
+ viewBox="0.00 0.00 217.00 843.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 839)">
 <title>tvm::script::printer::AttrAccessDocNode</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-828 213,-828 213,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-839 213,-839 213,4 -4,4"/>
 <!-- Node0 -->
 <g id="node1" class="node">
 <title>Node0</title>
@@ -52,10 +52,11 @@
 <g id="node3" class="node">
 <title>Node2</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1script_1_1printer_1_1DocNode.html" target="_top" xlink:title="The base class of all Doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="1,-298.5 1,-388.5 208,-388.5 208,-298.5 1,-298.5"/>
-<text text-anchor="start" x="9" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="104.5" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
-<polyline fill="none" stroke="#000000" points="1,-358.5 208,-358.5 "/>
+<polygon fill="#ffffff" stroke="#000000" points="1,-298.5 1,-399.5 208,-399.5 208,-298.5 1,-298.5"/>
+<text text-anchor="start" x="9" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="104.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
+<polyline fill="none" stroke="#000000" points="1,-369.5 208,-369.5 "/>
+<text text-anchor="start" x="9" y="-357.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ source_paths</text>
 <text text-anchor="start" x="9" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
 <polyline fill="none" stroke="#000000" points="1,-339.5 208,-339.5 "/>
 <text text-anchor="start" x="9" y="-327.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
@@ -67,58 +68,58 @@
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge2" class="edge">
 <title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="#191970" d="M104.5,-288.4136C104.5,-279.665 104.5,-270.5665 104.5,-261.6783"/>
-<polygon fill="none" stroke="#191970" points="101.0001,-288.4894 104.5,-298.4894 108.0001,-288.4895 101.0001,-288.4894"/>
+<path fill="none" stroke="#191970" d="M104.5,-288.0751C104.5,-279.3766 104.5,-270.4225 104.5,-261.709"/>
+<polygon fill="none" stroke="#191970" points="101.0001,-288.1394 104.5,-298.1394 108.0001,-288.1394 101.0001,-288.1394"/>
 </g>
 <!-- Node3 -->
 <g id="node4" class="node">
 <title>Node3</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers. ">
-<polygon fill="#ffffff" stroke="#000000" points="13,-425.5 13,-823.5 196,-823.5 196,-425.5 13,-425.5"/>
-<text text-anchor="middle" x="104.5" y="-811.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
-<polyline fill="none" stroke="#000000" points="13,-804.5 196,-804.5 "/>
-<text text-anchor="start" x="21" y="-792.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<text text-anchor="start" x="21" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
-<text text-anchor="start" x="21" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
-<text text-anchor="start" x="21" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
-<text text-anchor="start" x="21" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
-<text text-anchor="start" x="21" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
-<text text-anchor="start" x="21" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
-<text text-anchor="start" x="21" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="21" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="21" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
-<text text-anchor="start" x="21" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="21" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
-<text text-anchor="start" x="21" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
-<text text-anchor="start" x="21" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
-<text text-anchor="start" x="21" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># deleter_</text>
-<polyline fill="none" stroke="#000000" points="13,-631.5 196,-631.5 "/>
-<text text-anchor="start" x="21" y="-619.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
-<text text-anchor="start" x="21" y="-608.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
-<text text-anchor="start" x="21" y="-597.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="21" y="-586.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
-<text text-anchor="start" x="21" y="-575.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<polygon fill="#ffffff" stroke="#000000" points="13,-436.5 13,-834.5 196,-834.5 196,-436.5 13,-436.5"/>
+<text text-anchor="middle" x="104.5" y="-822.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
+<polyline fill="none" stroke="#000000" points="13,-815.5 196,-815.5 "/>
+<text text-anchor="start" x="21" y="-803.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<text text-anchor="start" x="21" y="-792.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
+<text text-anchor="start" x="21" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
+<text text-anchor="start" x="21" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
+<text text-anchor="start" x="21" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
+<text text-anchor="start" x="21" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
+<text text-anchor="start" x="21" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
+<text text-anchor="start" x="21" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="21" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="21" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
+<text text-anchor="start" x="21" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="21" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
+<text text-anchor="start" x="21" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
+<text text-anchor="start" x="21" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
+<text text-anchor="start" x="21" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># deleter_</text>
+<polyline fill="none" stroke="#000000" points="13,-642.5 196,-642.5 "/>
+<text text-anchor="start" x="21" y="-630.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
+<text text-anchor="start" x="21" y="-619.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
+<text text-anchor="start" x="21" y="-608.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="21" y="-597.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
+<text text-anchor="start" x="21" y="-586.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="21" y="-575.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
 <text text-anchor="start" x="21" y="-564.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
 <text text-anchor="start" x="21" y="-553.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="21" y="-542.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="21" y="-542.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
 <text text-anchor="start" x="21" y="-531.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="21" y="-520.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="21" y="-509.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="21" y="-498.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="21" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
-<text text-anchor="start" x="21" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="21" y="-465.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="21" y="-454.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
-<text text-anchor="start" x="21" y="-443.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
-<text text-anchor="start" x="21" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="21" y="-520.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="21" y="-509.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="21" y="-498.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
+<text text-anchor="start" x="21" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="21" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="21" y="-465.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
+<text text-anchor="start" x="21" y="-454.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
+<text text-anchor="start" x="21" y="-443.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node2 -->
 <g id="edge3" class="edge">
 <title>Node3&#45;&gt;Node2</title>
-<path fill="none" stroke="#191970" d="M104.5,-414.8999C104.5,-405.6327 104.5,-396.8995 104.5,-388.9342"/>
-<polygon fill="none" stroke="#191970" points="101.0001,-415.1543 104.5,-425.1543 108.0001,-415.1543 101.0001,-415.1543"/>
+<path fill="none" stroke="#191970" d="M104.5,-425.8341C104.5,-416.5137 104.5,-407.6751 104.5,-399.5365"/>
+<polygon fill="none" stroke="#191970" points="101.0001,-426.1263 104.5,-436.1263 108.0001,-426.1264 101.0001,-426.1263"/>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1CallDocNode-members.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1CallDocNode-members.html
index ed4ae8f53..a026be318 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1CallDocNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1CallDocNode-members.html
@@ -102,17 +102,18 @@ $(function() {
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a0d492efee331e2239a093f4b2017c10f">ref_counter_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a55549a6c23987890246248682560a03d">RefCounterType</a> typedef</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#ad94d79729ac85aa7c976e23d39066383">RuntimeTypeIndex</a>()</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html#a234d665c202a31c9ded07695673b8625">TVM_DECLARE_BASE_OBJECT_INFO</a>(ExprDocNode, DocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html">tvm::script::printer::ExprDocNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a78585f033948da5d1a4121aa7b969c47">tvm::script::printer::DocNode::TVM_DECLARE_BASE_OBJECT_INFO</a>(DocNode, Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1CallDocNode.html#a4b95494c871ff2bc43a7c27d39707130">TVM_DECLARE_FINAL_OBJECT_INFO</a>(CallDocNode, ExprDocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1CallDocNode.html">tvm::script::printer::CallDocNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a481f01923b14e1851ebd38506e9c66ea">type_index</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a4bfc2586cb55f2af47728187b3256255">type_index_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a817ba6c23b7ee1821c48a75edf255a30">TypeIndex2Key</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6ee32a02dd44257da105fbbe5d9c8622">TypeIndex2KeyHash</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6841f97e06e6614dd7e82c6dd41b818a">TypeKey2Index</a>(const std::string &amp;key)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#afd548730a6139d19fe24473ad66026d7">unique</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1CallDocNode.html#a6754bea55b2973ee06141454881521a0">VisitAttrs</a>(AttrVisitor *v)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1CallDocNode.html">tvm::script::printer::CallDocNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a6202cee16104155937f3e64c703f6885">~DocNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">source_paths</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html#a234d665c202a31c9ded07695673b8625">TVM_DECLARE_BASE_OBJECT_INFO</a>(ExprDocNode, DocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html">tvm::script::printer::ExprDocNode</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a78585f033948da5d1a4121aa7b969c47">tvm::script::printer::DocNode::TVM_DECLARE_BASE_OBJECT_INFO</a>(DocNode, Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1CallDocNode.html#a4b95494c871ff2bc43a7c27d39707130">TVM_DECLARE_FINAL_OBJECT_INFO</a>(CallDocNode, ExprDocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1CallDocNode.html">tvm::script::printer::CallDocNode</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a481f01923b14e1851ebd38506e9c66ea">type_index</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a4bfc2586cb55f2af47728187b3256255">type_index_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a817ba6c23b7ee1821c48a75edf255a30">TypeIndex2Key</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6ee32a02dd44257da105fbbe5d9c8622">TypeIndex2KeyHash</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6841f97e06e6614dd7e82c6dd41b818a">TypeKey2Index</a>(const std::string &amp;key)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#afd548730a6139d19fe24473ad66026d7">unique</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1CallDocNode.html#a6754bea55b2973ee06141454881521a0">VisitAttrs</a>(AttrVisitor *v)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1CallDocNode.html">tvm::script::printer::CallDocNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a6202cee16104155937f3e64c703f6885">~DocNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1CallDocNode.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1CallDocNode.html
index cef6b2f6f..fdd5bd126 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1CallDocNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1CallDocNode.html
@@ -79,13 +79,13 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::script::printer::CallDocNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1CallDocNode__inherit__graph.svg" width="290" height="1139"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1CallDocNode__inherit__graph.svg" width="290" height="1154"><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::script::printer::CallDocNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1CallDocNode__coll__graph.svg" width="840" height="1636"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1CallDocNode__coll__graph.svg" width="938" height="2207"><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">
@@ -156,6 +156,10 @@ Public Attributes</h2></td></tr>
 <tr class="memitem:a2e02a9e2b7d03c975c0a7286219efa17"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Array.html">Array</a>&lt; <a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDoc.html">ExprDoc</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1CallDocNode.html#a2e02a9e2b7d03c975c0a7286219efa17">kwargs_values</a></td></tr>
 <tr class="memdesc:a2e02a9e2b7d03c975c0a7286219efa17"><td class="mdescLeft">&#160;</td><td class="mdescRight">The values of keyword arguments.  <a href="#a2e02a9e2b7d03c975c0a7286219efa17">More...</a><br /></td></tr>
 <tr class="separator:a2e02a9e2b7d03c975c0a7286219efa17"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode')"><img src="closed.png" alt="-"/>&#160;Public Attributes inherited from <a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td></tr>
+<tr class="memitem:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Array.html">Array</a>&lt; <a class="el" href="classtvm_1_1ObjectPath.html">ObjectPath</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">source_paths</a></td></tr>
+<tr class="memdesc:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="mdescLeft">&#160;</td><td class="mdescRight">The list of object paths of the source IR node.  <a href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">More...</a><br /></td></tr>
+<tr class="separator:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
 Static Public Attributes</h2></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1CallDocNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1CallDocNode__coll__graph.svg
index 199d6fa46..a2ab846fd 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1CallDocNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1CallDocNode__coll__graph.svg
@@ -4,311 +4,348 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: tvm::script::printer::CallDocNode Pages: 1 -->
-<svg width="630pt" height="1227pt"
- viewBox="0.00 0.00 629.50 1227.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 1223)">
+<svg width="703pt" height="1655pt"
+ viewBox="0.00 0.00 702.50 1655.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 1651)">
 <title>tvm::script::printer::CallDocNode</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1223 625.5,-1223 625.5,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1651 698.5,-1651 698.5,4 -4,4"/>
 <!-- Node4 -->
 <g id="node1" class="node">
 <title>Node4</title>
-<polygon fill="#bfbfbf" stroke="#000000" points="198,-.5 198,-79.5 407,-79.5 407,-.5 198,-.5"/>
-<text text-anchor="start" x="206" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="302.5" y="-56.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::CallDocNode</text>
-<polyline fill="none" stroke="#000000" points="198,-49.5 407,-49.5 "/>
-<text text-anchor="start" x="206" y="-37.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="198,-30.5 407,-30.5 "/>
-<text text-anchor="start" x="206" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="206" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_FINAL_OBJECT_INFO()</text>
+<polygon fill="#bfbfbf" stroke="#000000" points="244,-.5 244,-79.5 453,-79.5 453,-.5 244,-.5"/>
+<text text-anchor="start" x="252" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="348.5" y="-56.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::CallDocNode</text>
+<polyline fill="none" stroke="#000000" points="244,-49.5 453,-49.5 "/>
+<text text-anchor="start" x="252" y="-37.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="244,-30.5 453,-30.5 "/>
+<text text-anchor="start" x="252" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="252" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_FINAL_OBJECT_INFO()</text>
 </g>
 <!-- Node5 -->
 <g id="node2" class="node">
 <title>Node5</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html" target="_top" xlink:title="The base class of expression doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="0,-127.5 0,-250.5 207,-250.5 207,-127.5 0,-127.5"/>
-<text text-anchor="start" x="8" y="-238.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="103.5" y="-227.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDocNode</text>
-<polyline fill="none" stroke="#000000" points="0,-220.5 207,-220.5 "/>
-<text text-anchor="start" x="8" y="-208.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="0,-201.5 207,-201.5 "/>
-<text text-anchor="start" x="8" y="-189.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Attr()</text>
-<text text-anchor="start" x="8" y="-178.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator[]()</text>
-<text text-anchor="start" x="8" y="-167.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Call()</text>
-<text text-anchor="start" x="8" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Call()</text>
-<text text-anchor="start" x="8" y="-145.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="8" y="-134.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
+<polygon fill="#ffffff" stroke="#000000" points="63,-117.5 63,-240.5 270,-240.5 270,-117.5 63,-117.5"/>
+<text text-anchor="start" x="71" y="-228.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="166.5" y="-217.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDocNode</text>
+<polyline fill="none" stroke="#000000" points="63,-210.5 270,-210.5 "/>
+<text text-anchor="start" x="71" y="-198.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="63,-191.5 270,-191.5 "/>
+<text text-anchor="start" x="71" y="-179.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Attr()</text>
+<text text-anchor="start" x="71" y="-168.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator[]()</text>
+<text text-anchor="start" x="71" y="-157.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Call()</text>
+<text text-anchor="start" x="71" y="-146.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Call()</text>
+<text text-anchor="start" x="71" y="-135.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="71" y="-124.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node4 -->
 <g id="edge1" class="edge">
 <title>Node5&#45;&gt;Node4</title>
-<path fill="none" stroke="#191970" d="M193.9803,-121.2534C212.9692,-107.0356 232.3999,-92.487 249.4754,-79.7018"/>
-<polygon fill="none" stroke="#191970" points="191.7845,-118.5251 185.8774,-127.3204 195.98,-124.1285 191.7845,-118.5251"/>
+<path fill="none" stroke="#191970" d="M255.4343,-111.0777C269.5815,-100.2729 283.7953,-89.4173 296.7071,-79.5561"/>
+<polygon fill="none" stroke="#191970" points="252.9456,-108.5743 247.1226,-117.4256 257.1943,-114.1374 252.9456,-108.5743"/>
 </g>
 <!-- Node6 -->
 <g id="node3" class="node">
 <title>Node6</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1script_1_1printer_1_1DocNode.html" target="_top" xlink:title="The base class of all Doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="0,-477.5 0,-567.5 207,-567.5 207,-477.5 0,-477.5"/>
-<text text-anchor="start" x="8" y="-555.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="103.5" y="-544.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
-<polyline fill="none" stroke="#000000" points="0,-537.5 207,-537.5 "/>
-<text text-anchor="start" x="8" y="-525.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="0,-518.5 207,-518.5 "/>
-<text text-anchor="start" x="8" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="8" y="-495.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
-<text text-anchor="start" x="8" y="-484.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~DocNode()</text>
+<polygon fill="#ffffff" stroke="#000000" points="63,-456.5 63,-546.5 270,-546.5 270,-456.5 63,-456.5"/>
+<text text-anchor="start" x="71" y="-534.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="166.5" y="-523.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
+<polyline fill="none" stroke="#000000" points="63,-516.5 270,-516.5 "/>
+<text text-anchor="start" x="71" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="63,-497.5 270,-497.5 "/>
+<text text-anchor="start" x="71" y="-485.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="71" y="-474.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
+<text text-anchor="start" x="71" y="-463.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~DocNode()</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node5 -->
 <g id="edge2" class="edge">
 <title>Node6&#45;&gt;Node5</title>
-<path fill="none" stroke="#191970" d="M103.5,-466.8134C103.5,-407.1131 103.5,-312.5835 103.5,-250.671"/>
-<polygon fill="none" stroke="#191970" points="100.0001,-467.1756 103.5,-477.1756 107.0001,-467.1757 100.0001,-467.1756"/>
+<path fill="none" stroke="#191970" d="M166.5,-446.0318C166.5,-388.8894 166.5,-300.0292 166.5,-240.7018"/>
+<polygon fill="none" stroke="#191970" points="163.0001,-446.3181 166.5,-456.3182 170.0001,-446.3182 163.0001,-446.3181"/>
 </g>
 <!-- Node7 -->
 <g id="node4" class="node">
 <title>Node7</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers. ">
-<polygon fill="#ffffff" stroke="#000000" points="12,-605.5 12,-992.5 195,-992.5 195,-605.5 12,-605.5"/>
-<text text-anchor="middle" x="103.5" y="-980.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
-<polyline fill="none" stroke="#000000" points="12,-973.5 195,-973.5 "/>
-<text text-anchor="start" x="20" y="-961.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<text text-anchor="start" x="20" y="-950.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
-<text text-anchor="start" x="20" y="-939.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
-<text text-anchor="start" x="20" y="-928.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
-<text text-anchor="start" x="20" y="-917.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
-<text text-anchor="start" x="20" y="-906.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
-<text text-anchor="start" x="20" y="-895.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
-<text text-anchor="start" x="20" y="-884.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="20" y="-873.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="20" y="-862.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
-<text text-anchor="start" x="20" y="-851.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="20" y="-840.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
-<text text-anchor="start" x="20" y="-829.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
-<text text-anchor="start" x="20" y="-818.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
-<polyline fill="none" stroke="#000000" points="12,-811.5 195,-811.5 "/>
-<text text-anchor="start" x="20" y="-799.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
-<text text-anchor="start" x="20" y="-788.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
-<text text-anchor="start" x="20" y="-777.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="20" y="-766.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
-<text text-anchor="start" x="20" y="-755.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
-<text text-anchor="start" x="20" y="-744.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-733.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-722.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-711.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="20" y="-700.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="20" y="-689.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="20" y="-678.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="20" y="-667.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
-<text text-anchor="start" x="20" y="-656.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="20" y="-645.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="20" y="-634.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
-<text text-anchor="start" x="20" y="-623.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
-<text text-anchor="start" x="20" y="-612.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
+<polygon fill="#ffffff" stroke="#000000" points="0,-773.5 0,-1160.5 183,-1160.5 183,-773.5 0,-773.5"/>
+<text text-anchor="middle" x="91.5" y="-1148.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
+<polyline fill="none" stroke="#000000" points="0,-1141.5 183,-1141.5 "/>
+<text text-anchor="start" x="8" y="-1129.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<text text-anchor="start" x="8" y="-1118.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
+<text text-anchor="start" x="8" y="-1107.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-1096.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-1085.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
+<text text-anchor="start" x="8" y="-1074.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-1063.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
+<text text-anchor="start" x="8" y="-1052.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-1041.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="8" y="-1030.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-1019.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="8" y="-1008.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
+<text text-anchor="start" x="8" y="-997.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
+<text text-anchor="start" x="8" y="-986.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
+<polyline fill="none" stroke="#000000" points="0,-979.5 183,-979.5 "/>
+<text text-anchor="start" x="8" y="-967.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
+<text text-anchor="start" x="8" y="-956.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-945.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-934.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-923.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="8" y="-912.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-901.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-890.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-879.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="8" y="-868.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="8" y="-857.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-846.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-835.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-824.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-813.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-802.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
+<text text-anchor="start" x="8" y="-791.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
+<text text-anchor="start" x="8" y="-780.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node6 -->
 <g id="edge3" class="edge">
 <title>Node7&#45;&gt;Node6</title>
-<path fill="none" stroke="#191970" d="M103.5,-595.4197C103.5,-585.5618 103.5,-576.2793 103.5,-567.8536"/>
-<polygon fill="none" stroke="#191970" points="100.0001,-595.4591 103.5,-605.4591 107.0001,-595.4592 100.0001,-595.4591"/>
+<path fill="none" stroke="#191970" d="M124.3724,-762.9717C137.3696,-682.3026 151.1199,-596.9595 159.2489,-546.5053"/>
+<polygon fill="none" stroke="#191970" points="120.8447,-762.8641 122.7094,-773.2935 127.7556,-763.9776 120.8447,-762.8641"/>
 </g>
 <!-- Node7&#45;&gt;Node7 -->
 <g id="edge4" class="edge">
 <title>Node7&#45;&gt;Node7</title>
-<path fill="none" stroke="#404040" d="M195.3625,-832.9248C206.0482,-826.6637 213,-815.3555 213,-799 213,-788.0112 209.8618,-779.3007 204.5615,-772.8687"/>
-<polygon fill="none" stroke="#404040" points="204.5184,-772.8322 197.3548,-772.0056 195.3625,-765.0752 202.5261,-765.9017 204.5184,-772.8322"/>
-<text text-anchor="middle" x="239" y="-796.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M183.3625,-1000.9248C194.0482,-994.6637 201,-983.3555 201,-967 201,-956.0112 197.8618,-947.3007 192.5615,-940.8687"/>
+<polygon fill="none" stroke="#404040" points="192.5184,-940.8322 185.3548,-940.0056 183.3625,-933.0752 190.5261,-933.9017 192.5184,-940.8322"/>
+<text text-anchor="middle" x="227" y="-964.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #deleter_</text>
 </g>
 <!-- Node8 -->
 <g id="node5" class="node">
 <title>Node8</title>
-<g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="{tvm::runtime::Array\l\&lt; tvm::script::printer\l::ExprDoc \&gt;\n||+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ operator=()\l+ operator=()\land 24 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="184,-269.5 184,-458.5 303,-458.5 303,-269.5 184,-269.5"/>
-<text text-anchor="start" x="192" y="-446.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="start" x="192" y="-435.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::script::printer</text>
-<text text-anchor="middle" x="243.5" y="-424.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDoc &gt;</text>
-<polyline fill="none" stroke="#000000" points="184,-417.5 303,-417.5 "/>
-<text text-anchor="middle" x="243.5" y="-405.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="184,-398.5 303,-398.5 "/>
-<text text-anchor="start" x="192" y="-386.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="192" y="-375.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="192" y="-364.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="192" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="192" y="-342.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="192" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="192" y="-320.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="192" y="-309.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="192" y="-298.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="192" y="-287.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="192" y="-276.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
+<g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="{tvm::runtime::Array\l\&lt; tvm::ObjectPath \&gt;\n||+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ operator=()\l+ operator=()\land 24 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="271,-878 271,-1056 388,-1056 388,-878 271,-878"/>
+<text text-anchor="start" x="279" y="-1044" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="329.5" y="-1033" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::ObjectPath &gt;</text>
+<polyline fill="none" stroke="#000000" points="271,-1026 388,-1026 "/>
+<text text-anchor="middle" x="329.5" y="-1014" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="271,-1007 388,-1007 "/>
+<text text-anchor="start" x="279" y="-995" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-984" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-973" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-962" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-951" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-940" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-929" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-918" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-907" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="279" y="-896" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="279" y="-885" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
 </a>
 </g>
 </g>
-<!-- Node8&#45;&gt;Node4 -->
+<!-- Node8&#45;&gt;Node6 -->
 <g id="edge5" class="edge">
-<title>Node8&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M240.1278,-269.3918C240.8218,-225.4021 244.913,-172.8053 257.5,-127 260.8804,-114.6983 266.1443,-102.1349 271.8974,-90.5197"/>
-<polygon fill="none" stroke="#404040" points="271.9805,-90.3598 271.2004,-83.191 277.5176,-79.7136 278.2978,-86.8824 271.9805,-90.3598"/>
-<text text-anchor="middle" x="298.5" y="-192" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +args</text>
-<text text-anchor="middle" x="298.5" y="-181" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+kwargs_values</text>
+<title>Node8&#45;&gt;Node6</title>
+<path fill="none" stroke="#404040" d="M315.4991,-877.8519C305.863,-841.5429 289.6659,-801.5014 262.5,-773 247.6381,-757.4075 231.2846,-771.5525 217.5,-755 171.6956,-699.9982 163.1638,-615.1754 163.2441,-559.013"/>
+<polygon fill="none" stroke="#404040" points="163.2469,-558.7865 159.3226,-552.7367 163.3977,-546.7874 167.322,-552.8372 163.2469,-558.7865"/>
+<text text-anchor="middle" x="255.5" y="-657.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +source_paths</text>
 </g>
 <!-- Node9 -->
 <g id="node6" class="node">
 <title>Node9</title>
 <g id="a_node6"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference. ">
-<polygon fill="#ffffff" stroke="#000000" points="309.5,-688 309.5,-910 443.5,-910 443.5,-688 309.5,-688"/>
-<text text-anchor="middle" x="376.5" y="-898" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="#000000" points="309.5,-891 443.5,-891 "/>
-<text text-anchor="start" x="317.5" y="-879" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
-<polyline fill="none" stroke="#000000" points="309.5,-872 443.5,-872 "/>
-<text text-anchor="start" x="317.5" y="-860" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
-<text text-anchor="start" x="317.5" y="-849" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
-<text text-anchor="start" x="317.5" y="-838" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
-<text text-anchor="start" x="317.5" y="-827" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
-<text text-anchor="start" x="317.5" y="-816" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
-<text text-anchor="start" x="317.5" y="-805" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
-<text text-anchor="start" x="317.5" y="-794" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
-<text text-anchor="start" x="317.5" y="-783" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
-<text text-anchor="start" x="317.5" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="317.5" y="-761" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
-<text text-anchor="start" x="317.5" y="-750" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
-<text text-anchor="start" x="317.5" y="-739" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
-<text text-anchor="start" x="317.5" y="-728" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
-<text text-anchor="start" x="317.5" y="-717" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
-<text text-anchor="start" x="317.5" y="-706" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="317.5" y="-695" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
+<polygon fill="#ffffff" stroke="#000000" points="368.5,-1198.5 368.5,-1420.5 502.5,-1420.5 502.5,-1198.5 368.5,-1198.5"/>
+<text text-anchor="middle" x="435.5" y="-1408.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="#000000" points="368.5,-1401.5 502.5,-1401.5 "/>
+<text text-anchor="start" x="376.5" y="-1389.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
+<polyline fill="none" stroke="#000000" points="368.5,-1382.5 502.5,-1382.5 "/>
+<text text-anchor="start" x="376.5" y="-1370.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="376.5" y="-1359.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="376.5" y="-1348.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
+<text text-anchor="start" x="376.5" y="-1337.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
+<text text-anchor="start" x="376.5" y="-1326.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
+<text text-anchor="start" x="376.5" y="-1315.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
+<text text-anchor="start" x="376.5" y="-1304.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
+<text text-anchor="start" x="376.5" y="-1293.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="376.5" y="-1282.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="376.5" y="-1271.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="376.5" y="-1260.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
+<text text-anchor="start" x="376.5" y="-1249.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
+<text text-anchor="start" x="376.5" y="-1238.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
+<text text-anchor="start" x="376.5" y="-1227.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
+<text text-anchor="start" x="376.5" y="-1216.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="376.5" y="-1205.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node9&#45;&gt;Node8 -->
 <g id="edge6" class="edge">
 <title>Node9&#45;&gt;Node8</title>
-<path fill="none" stroke="#191970" d="M339.5527,-678.1572C318.3623,-608.8505 292.1463,-523.1062 272.4589,-458.7151"/>
-<polygon fill="none" stroke="#191970" points="336.2372,-679.2841 342.5082,-687.8237 342.9313,-677.2373 336.2372,-679.2841"/>
+<path fill="none" stroke="#191970" d="M398.0532,-1188.5043C384.5725,-1144.9464 369.6189,-1096.6293 357.1267,-1056.2656"/>
+<polygon fill="none" stroke="#191970" points="394.7847,-1189.7819 401.0848,-1198.3001 401.4718,-1187.7123 394.7847,-1189.7819"/>
 </g>
 <!-- Node11 -->
 <g id="node8" class="node">
 <title>Node11</title>
-<g id="a_node8"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="{tvm::runtime::Array\l\&lt; tvm::runtime::String \&gt;\n||+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ operator=()\l+ operator=()\land 24 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="308,-275 308,-453 445,-453 445,-275 308,-275"/>
-<text text-anchor="start" x="316" y="-441" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="middle" x="376.5" y="-430" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::String &gt;</text>
-<polyline fill="none" stroke="#000000" points="308,-423 445,-423 "/>
-<text text-anchor="middle" x="376.5" y="-411" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="308,-404 445,-404 "/>
-<text text-anchor="start" x="316" y="-392" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="316" y="-381" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="316" y="-370" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="316" y="-359" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="316" y="-348" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="316" y="-337" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="316" y="-326" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="316" y="-315" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="316" y="-304" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="316" y="-293" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="316" y="-282" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
+<g id="a_node8"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="{tvm::runtime::Array\l\&lt; tvm::script::printer\l::ExprDoc \&gt;\n||+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ operator=()\l+ operator=()\land 24 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="302,-565.5 302,-754.5 421,-754.5 421,-565.5 302,-565.5"/>
+<text text-anchor="start" x="310" y="-742.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="start" x="310" y="-731.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::script::printer</text>
+<text text-anchor="middle" x="361.5" y="-720.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDoc &gt;</text>
+<polyline fill="none" stroke="#000000" points="302,-713.5 421,-713.5 "/>
+<text text-anchor="middle" x="361.5" y="-701.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="302,-694.5 421,-694.5 "/>
+<text text-anchor="start" x="310" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="310" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="310" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="310" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="310" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="310" y="-627.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="310" y="-616.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="310" y="-605.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="310" y="-594.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="310" y="-583.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="310" y="-572.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
 </a>
 </g>
 </g>
 <!-- Node9&#45;&gt;Node11 -->
 <g id="edge9" class="edge">
 <title>Node9&#45;&gt;Node11</title>
-<path fill="none" stroke="#191970" d="M376.5,-677.4415C376.5,-606.1952 376.5,-517.7719 376.5,-453.0248"/>
-<polygon fill="none" stroke="#191970" points="373.0001,-677.8237 376.5,-687.8237 380.0001,-677.8237 373.0001,-677.8237"/>
+<path fill="none" stroke="#191970" d="M435.0955,-1188.221C432.7985,-1078.7827 424.5223,-913.8379 397.5,-773 396.3361,-766.9338 394.9506,-760.7375 393.4114,-754.525"/>
+<polygon fill="none" stroke="#191970" points="431.5978,-1188.3765 435.2935,-1198.3058 438.5964,-1188.239 431.5978,-1188.3765"/>
 </g>
-<!-- Node13 -->
-<g id="node10" class="node">
-<title>Node13</title>
-<g id="a_node10"><a xlink:href="classtvm_1_1script_1_1printer_1_1Doc.html" target="_top" xlink:title="Reference type of DocNode. ">
-<polygon fill="#ffffff" stroke="#000000" points="417.5,-477.5 417.5,-567.5 583.5,-567.5 583.5,-477.5 417.5,-477.5"/>
-<text text-anchor="middle" x="500.5" y="-555.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer::Doc</text>
-<polyline fill="none" stroke="#000000" points="417.5,-548.5 583.5,-548.5 "/>
-<text text-anchor="middle" x="500.5" y="-536.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="417.5,-529.5 583.5,-529.5 "/>
-<text text-anchor="start" x="425.5" y="-517.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~Doc()</text>
-<text text-anchor="start" x="425.5" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
-<text text-anchor="start" x="425.5" y="-495.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
-<text text-anchor="start" x="425.5" y="-484.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># Doc()</text>
+<!-- Node12 -->
+<g id="node9" class="node">
+<title>Node12</title>
+<g id="a_node9"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="{tvm::runtime::Array\l\&lt; tvm::runtime::String \&gt;\n||+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ operator=()\l+ operator=()\land 24 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="386,-259.5 386,-437.5 523,-437.5 523,-259.5 386,-259.5"/>
+<text text-anchor="start" x="394" y="-425.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="454.5" y="-414.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::String &gt;</text>
+<polyline fill="none" stroke="#000000" points="386,-407.5 523,-407.5 "/>
+<text text-anchor="middle" x="454.5" y="-395.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="386,-388.5 523,-388.5 "/>
+<text text-anchor="start" x="394" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="394" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="394" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="394" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="394" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="394" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="394" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="394" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="394" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="394" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="394" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
 </a>
 </g>
 </g>
-<!-- Node9&#45;&gt;Node13 -->
-<g id="edge12" class="edge">
-<title>Node9&#45;&gt;Node13</title>
-<path fill="none" stroke="#191970" d="M430.6178,-678.3261C448.2384,-639.035 466.7223,-597.8188 480.2515,-567.6508"/>
-<polygon fill="none" stroke="#191970" points="427.298,-677.1754 426.3995,-687.7321 433.6851,-680.0398 427.298,-677.1754"/>
+<!-- Node9&#45;&gt;Node12 -->
+<g id="edge11" class="edge">
+<title>Node9&#45;&gt;Node12</title>
+<path fill="none" stroke="#191970" d="M440.264,-1188.1877C440.3463,-1185.4329 440.4251,-1182.7006 440.5,-1180 447.9912,-909.7558 452.0138,-589.9866 453.6341,-437.7261"/>
+<polygon fill="none" stroke="#191970" points="436.7638,-1188.1419 439.952,-1198.2457 443.7605,-1188.359 436.7638,-1188.1419"/>
+</g>
+<!-- Node14 -->
+<g id="node11" class="node">
+<title>Node14</title>
+<g id="a_node11"><a xlink:href="classtvm_1_1script_1_1printer_1_1Doc.html" target="_top" xlink:title="Reference type of DocNode. ">
+<polygon fill="#ffffff" stroke="#000000" points="505.5,-922 505.5,-1012 671.5,-1012 671.5,-922 505.5,-922"/>
+<text text-anchor="middle" x="588.5" y="-1000" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer::Doc</text>
+<polyline fill="none" stroke="#000000" points="505.5,-993 671.5,-993 "/>
+<text text-anchor="middle" x="588.5" y="-981" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="505.5,-974 671.5,-974 "/>
+<text text-anchor="start" x="513.5" y="-962" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~Doc()</text>
+<text text-anchor="start" x="513.5" y="-951" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
+<text text-anchor="start" x="513.5" y="-940" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
+<text text-anchor="start" x="513.5" y="-929" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># Doc()</text>
+</a>
+</g>
+</g>
+<!-- Node9&#45;&gt;Node14 -->
+<g id="edge14" class="edge">
+<title>Node9&#45;&gt;Node14</title>
+<path fill="none" stroke="#191970" d="M489.3538,-1188.9448C516.7224,-1127.6785 548.3412,-1056.8979 568.3726,-1012.0565"/>
+<polygon fill="none" stroke="#191970" points="486.0578,-1187.7421 485.1747,-1198.3001 492.4491,-1190.5972 486.0578,-1187.7421"/>
 </g>
 <!-- Node10 -->
 <g id="node7" class="node">
 <title>Node10</title>
 <g id="a_node7"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title="{tvm::runtime::ObjectPtr\l\&lt; tvm::runtime::Object \&gt;\n||+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ~ObjectPtr()\l+ swap()\l+ get()\l+ operator&#45;\&gt;()\land 11 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="306.5,-1040.5 306.5,-1218.5 446.5,-1218.5 446.5,-1040.5 306.5,-1040.5"/>
-<text text-anchor="start" x="314.5" y="-1206.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="376.5" y="-1195.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="#000000" points="306.5,-1188.5 446.5,-1188.5 "/>
-<text text-anchor="middle" x="376.5" y="-1176.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="306.5,-1169.5 446.5,-1169.5 "/>
-<text text-anchor="start" x="314.5" y="-1157.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="314.5" y="-1146.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="314.5" y="-1135.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="314.5" y="-1124.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="314.5" y="-1113.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="314.5" y="-1102.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="314.5" y="-1091.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="314.5" y="-1080.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ swap()</text>
-<text text-anchor="start" x="314.5" y="-1069.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
-<text text-anchor="start" x="314.5" y="-1058.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="314.5" y="-1047.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 11 more...</text>
+<polygon fill="#ffffff" stroke="#000000" points="365.5,-1468.5 365.5,-1646.5 505.5,-1646.5 505.5,-1468.5 365.5,-1468.5"/>
+<text text-anchor="start" x="373.5" y="-1634.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="435.5" y="-1623.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="#000000" points="365.5,-1616.5 505.5,-1616.5 "/>
+<text text-anchor="middle" x="435.5" y="-1604.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="365.5,-1597.5 505.5,-1597.5 "/>
+<text text-anchor="start" x="373.5" y="-1585.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="373.5" y="-1574.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="373.5" y="-1563.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="373.5" y="-1552.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="373.5" y="-1541.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="373.5" y="-1530.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="373.5" y="-1519.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="373.5" y="-1508.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ swap()</text>
+<text text-anchor="start" x="373.5" y="-1497.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="373.5" y="-1486.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="373.5" y="-1475.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 11 more...</text>
 </a>
 </g>
 </g>
 <!-- Node10&#45;&gt;Node9 -->
 <g id="edge7" class="edge">
 <title>Node10&#45;&gt;Node9</title>
-<path fill="none" stroke="#404040" d="M376.5,-1040.4973C376.5,-1004.1115 376.5,-961.409 376.5,-922.1129"/>
-<polygon fill="none" stroke="#404040" points="376.5001,-922.0376 372.5,-916.0377 376.5,-910.0376 380.5,-916.0376 376.5001,-922.0376"/>
-<text text-anchor="middle" x="396" y="-1014" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #data_</text>
+<path fill="none" stroke="#404040" d="M435.5,-1468.3167C435.5,-1456.8765 435.5,-1445.0062 435.5,-1433.1402"/>
+<polygon fill="none" stroke="#404040" points="435.5001,-1432.7944 431.5,-1426.7944 435.5,-1420.7944 439.5,-1426.7943 435.5001,-1432.7944"/>
+<text text-anchor="middle" x="455" y="-1442" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #data_</text>
 </g>
 <!-- Node11&#45;&gt;Node4 -->
 <g id="edge8" class="edge">
 <title>Node11&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M367.8639,-274.805C362.1889,-229.8964 353.2092,-174.9476 339.5,-127 336.0821,-115.0459 331.4473,-102.5488 326.6151,-90.8768"/>
-<polygon fill="none" stroke="#404040" points="326.4798,-90.561 320.4404,-86.6207 321.7548,-79.5304 327.7942,-83.4707 326.4798,-90.561"/>
-<text text-anchor="middle" x="402.5" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +kwargs_keys</text>
-</g>
-<!-- Node12 -->
-<g id="node9" class="node">
-<title>Node12</title>
-<g id="a_node9"><a xlink:href="classtvm_1_1script_1_1printer_1_1ExprDoc.html" target="_top" xlink:title="Reference type of ExprDocNode. ">
-<polygon fill="#ffffff" stroke="#000000" points="455.5,-144 455.5,-234 621.5,-234 621.5,-144 455.5,-144"/>
-<text text-anchor="start" x="463.5" y="-222" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="538.5" y="-211" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDoc</text>
-<polyline fill="none" stroke="#000000" points="455.5,-204 621.5,-204 "/>
-<text text-anchor="middle" x="538.5" y="-192" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="455.5,-185 621.5,-185 "/>
-<text text-anchor="start" x="463.5" y="-173" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
-<text text-anchor="start" x="463.5" y="-162" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
-<text text-anchor="start" x="463.5" y="-151" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ExprDoc()</text>
-</a>
-</g>
+<path fill="none" stroke="#404040" d="M326.835,-565.4693C314.2998,-526.557 301.7092,-480.6747 295.5,-438 284.0452,-359.2734 286.0772,-337.9956 295.5,-259 302.4605,-200.6474 319.5029,-135.3651 332.3978,-91.3804"/>
+<polygon fill="none" stroke="#404040" points="332.4087,-91.3434 330.2848,-84.4521 335.829,-79.8411 337.953,-86.7323 332.4087,-91.3434"/>
+<text text-anchor="middle" x="336.5" y="-351.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +args</text>
+<text text-anchor="middle" x="336.5" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+kwargs_values</text>
 </g>
 <!-- Node12&#45;&gt;Node4 -->
 <g id="edge10" class="edge">
 <title>Node12&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M468.0875,-143.8837C459.1464,-138.1873 450.1145,-132.4488 441.5,-127 420.3065,-113.5947 397.2408,-99.1142 376.1006,-85.8855"/>
-<polygon fill="none" stroke="#404040" points="376.0681,-85.8652 368.86,-86.0751 365.894,-79.5022 373.102,-79.2924 376.0681,-85.8652"/>
-<text text-anchor="middle" x="431" y="-101" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +callee</text>
+<path fill="none" stroke="#404040" d="M423.8404,-259.269C405.0536,-204.5924 381.6829,-136.5746 365.9955,-90.9185"/>
+<polygon fill="none" stroke="#404040" points="365.981,-90.8762 360.2484,-86.5016 362.0815,-79.5274 367.8142,-83.902 365.981,-90.8762"/>
+<text text-anchor="middle" x="454.5" y="-176.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +kwargs_keys</text>
 </g>
-<!-- Node13&#45;&gt;Node12 -->
-<g id="edge11" class="edge">
-<title>Node13&#45;&gt;Node12</title>
-<path fill="none" stroke="#191970" d="M506.8152,-467.0758C514.2505,-401.8217 526.4568,-294.695 533.3469,-234.2253"/>
-<polygon fill="none" stroke="#191970" points="503.3191,-466.8436 505.6644,-477.1756 510.2741,-467.6362 503.3191,-466.8436"/>
+<!-- Node13 -->
+<g id="node10" class="node">
+<title>Node13</title>
+<g id="a_node10"><a xlink:href="classtvm_1_1script_1_1printer_1_1ExprDoc.html" target="_top" xlink:title="Reference type of ExprDocNode. ">
+<polygon fill="#ffffff" stroke="#000000" points="528.5,-303.5 528.5,-393.5 694.5,-393.5 694.5,-303.5 528.5,-303.5"/>
+<text text-anchor="start" x="536.5" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="611.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDoc</text>
+<polyline fill="none" stroke="#000000" points="528.5,-363.5 694.5,-363.5 "/>
+<text text-anchor="middle" x="611.5" y="-351.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="528.5,-344.5 694.5,-344.5 "/>
+<text text-anchor="start" x="536.5" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
+<text text-anchor="start" x="536.5" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
+<text text-anchor="start" x="536.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ExprDoc()</text>
+</a>
+</g>
+</g>
+<!-- Node13&#45;&gt;Node4 -->
+<g id="edge12" class="edge">
+<title>Node13&#45;&gt;Node4</title>
+<path fill="none" stroke="#404040" d="M598.501,-303.4082C581.9399,-252.705 548.9963,-170.4862 496.5,-117 484.9087,-105.1901 471.1197,-94.8164 456.6913,-85.8261"/>
+<polygon fill="none" stroke="#404040" points="456.4081,-85.6577 449.2065,-86.0284 446.0944,-79.5234 453.296,-79.1527 456.4081,-85.6577"/>
+<text text-anchor="middle" x="594" y="-176.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +callee</text>
+</g>
+<!-- Node14&#45;&gt;Node13 -->
+<g id="edge13" class="edge">
+<title>Node14&#45;&gt;Node13</title>
+<path fill="none" stroke="#191970" d="M590.5594,-911.6212C595.0583,-790.6387 605.6913,-504.703 609.82,-393.6781"/>
+<polygon fill="none" stroke="#191970" points="587.056,-911.6476 590.1819,-921.7708 594.0512,-911.9078 587.056,-911.6476"/>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1CallDocNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1CallDocNode__inherit__graph.svg
index fb6f29735..abd07c455 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1CallDocNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1CallDocNode__inherit__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: tvm::script::printer::CallDocNode Pages: 1 -->
-<svg width="217pt" height="854pt"
- viewBox="0.00 0.00 217.00 854.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 850)">
+<svg width="217pt" height="865pt"
+ viewBox="0.00 0.00 217.00 865.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 861)">
 <title>tvm::script::printer::CallDocNode</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-850 213,-850 213,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-861 213,-861 213,4 -4,4"/>
 <!-- Node0 -->
 <g id="node1" class="node">
 <title>Node0</title>
@@ -54,10 +54,11 @@
 <g id="node3" class="node">
 <title>Node2</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1script_1_1printer_1_1DocNode.html" target="_top" xlink:title="The base class of all Doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="1,-320.5 1,-410.5 208,-410.5 208,-320.5 1,-320.5"/>
-<text text-anchor="start" x="9" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="104.5" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
-<polyline fill="none" stroke="#000000" points="1,-380.5 208,-380.5 "/>
+<polygon fill="#ffffff" stroke="#000000" points="1,-320.5 1,-421.5 208,-421.5 208,-320.5 1,-320.5"/>
+<text text-anchor="start" x="9" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="104.5" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
+<polyline fill="none" stroke="#000000" points="1,-391.5 208,-391.5 "/>
+<text text-anchor="start" x="9" y="-379.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ source_paths</text>
 <text text-anchor="start" x="9" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
 <polyline fill="none" stroke="#000000" points="1,-361.5 208,-361.5 "/>
 <text text-anchor="start" x="9" y="-349.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
@@ -69,58 +70,58 @@
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge2" class="edge">
 <title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="#191970" d="M104.5,-310.4136C104.5,-301.665 104.5,-292.5665 104.5,-283.6783"/>
-<polygon fill="none" stroke="#191970" points="101.0001,-310.4894 104.5,-320.4894 108.0001,-310.4895 101.0001,-310.4894"/>
+<path fill="none" stroke="#191970" d="M104.5,-310.0751C104.5,-301.3766 104.5,-292.4225 104.5,-283.709"/>
+<polygon fill="none" stroke="#191970" points="101.0001,-310.1394 104.5,-320.1394 108.0001,-310.1394 101.0001,-310.1394"/>
 </g>
 <!-- Node3 -->
 <g id="node4" class="node">
 <title>Node3</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers. ">
-<polygon fill="#ffffff" stroke="#000000" points="13,-447.5 13,-845.5 196,-845.5 196,-447.5 13,-447.5"/>
-<text text-anchor="middle" x="104.5" y="-833.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
-<polyline fill="none" stroke="#000000" points="13,-826.5 196,-826.5 "/>
-<text text-anchor="start" x="21" y="-814.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<text text-anchor="start" x="21" y="-803.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
-<text text-anchor="start" x="21" y="-792.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
-<text text-anchor="start" x="21" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
-<text text-anchor="start" x="21" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
-<text text-anchor="start" x="21" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
-<text text-anchor="start" x="21" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
-<text text-anchor="start" x="21" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="21" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="21" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
-<text text-anchor="start" x="21" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="21" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
-<text text-anchor="start" x="21" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
-<text text-anchor="start" x="21" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
-<text text-anchor="start" x="21" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># deleter_</text>
-<polyline fill="none" stroke="#000000" points="13,-653.5 196,-653.5 "/>
-<text text-anchor="start" x="21" y="-641.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
-<text text-anchor="start" x="21" y="-630.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
-<text text-anchor="start" x="21" y="-619.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="21" y="-608.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
-<text text-anchor="start" x="21" y="-597.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<polygon fill="#ffffff" stroke="#000000" points="13,-458.5 13,-856.5 196,-856.5 196,-458.5 13,-458.5"/>
+<text text-anchor="middle" x="104.5" y="-844.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
+<polyline fill="none" stroke="#000000" points="13,-837.5 196,-837.5 "/>
+<text text-anchor="start" x="21" y="-825.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<text text-anchor="start" x="21" y="-814.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
+<text text-anchor="start" x="21" y="-803.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
+<text text-anchor="start" x="21" y="-792.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
+<text text-anchor="start" x="21" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
+<text text-anchor="start" x="21" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
+<text text-anchor="start" x="21" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
+<text text-anchor="start" x="21" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="21" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="21" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
+<text text-anchor="start" x="21" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="21" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
+<text text-anchor="start" x="21" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
+<text text-anchor="start" x="21" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
+<text text-anchor="start" x="21" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># deleter_</text>
+<polyline fill="none" stroke="#000000" points="13,-664.5 196,-664.5 "/>
+<text text-anchor="start" x="21" y="-652.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
+<text text-anchor="start" x="21" y="-641.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
+<text text-anchor="start" x="21" y="-630.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="21" y="-619.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
+<text text-anchor="start" x="21" y="-608.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="21" y="-597.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
 <text text-anchor="start" x="21" y="-586.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
 <text text-anchor="start" x="21" y="-575.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="21" y="-564.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="21" y="-564.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
 <text text-anchor="start" x="21" y="-553.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="21" y="-542.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="21" y="-531.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="21" y="-520.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="21" y="-509.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
-<text text-anchor="start" x="21" y="-498.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="21" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="21" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
-<text text-anchor="start" x="21" y="-465.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
-<text text-anchor="start" x="21" y="-454.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="21" y="-542.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="21" y="-531.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="21" y="-520.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
+<text text-anchor="start" x="21" y="-509.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="21" y="-498.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="21" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
+<text text-anchor="start" x="21" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
+<text text-anchor="start" x="21" y="-465.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node2 -->
 <g id="edge3" class="edge">
 <title>Node3&#45;&gt;Node2</title>
-<path fill="none" stroke="#191970" d="M104.5,-436.8999C104.5,-427.6327 104.5,-418.8995 104.5,-410.9342"/>
-<polygon fill="none" stroke="#191970" points="101.0001,-437.1543 104.5,-447.1543 108.0001,-437.1543 101.0001,-437.1543"/>
+<path fill="none" stroke="#191970" d="M104.5,-447.8341C104.5,-438.5137 104.5,-429.6751 104.5,-421.5365"/>
+<polygon fill="none" stroke="#191970" points="101.0001,-448.1263 104.5,-458.1263 108.0001,-448.1264 101.0001,-448.1263"/>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ClassDocNode-members.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ClassDocNode-members.html
index c4f4f3b7c..7cc04c289 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ClassDocNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ClassDocNode-members.html
@@ -98,17 +98,18 @@ $(function() {
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a0d492efee331e2239a093f4b2017c10f">ref_counter_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a55549a6c23987890246248682560a03d">RefCounterType</a> typedef</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#ad94d79729ac85aa7c976e23d39066383">RuntimeTypeIndex</a>()</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#a57275ce6ecf2615438470f80c723e327">TVM_DECLARE_BASE_OBJECT_INFO</a>(StmtDocNode, DocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html">tvm::script::printer::StmtDocNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a78585f033948da5d1a4121aa7b969c47">tvm::script::printer::DocNode::TVM_DECLARE_BASE_OBJECT_INFO</a>(DocNode, Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ClassDocNode.html#a421ef530f1966ebf777d634b1eae8b69">TVM_DECLARE_FINAL_OBJECT_INFO</a>(ClassDocNode, StmtDocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ClassDocNode.html">tvm::script::printer::ClassDocNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a481f01923b14e1851ebd38506e9c66ea">type_index</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a4bfc2586cb55f2af47728187b3256255">type_index_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a817ba6c23b7ee1821c48a75edf255a30">TypeIndex2Key</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6ee32a02dd44257da105fbbe5d9c8622">TypeIndex2KeyHash</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6841f97e06e6614dd7e82c6dd41b818a">TypeKey2Index</a>(const std::string &amp;key)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#afd548730a6139d19fe24473ad66026d7">unique</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ClassDocNode.html#ae198909f8e613a84bcd4f74603f31894">VisitAttrs</a>(AttrVisitor *v)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ClassDocNode.html">tvm::script::printer::ClassDocNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a6202cee16104155937f3e64c703f6885">~DocNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">source_paths</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#a57275ce6ecf2615438470f80c723e327">TVM_DECLARE_BASE_OBJECT_INFO</a>(StmtDocNode, DocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html">tvm::script::printer::StmtDocNode</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a78585f033948da5d1a4121aa7b969c47">tvm::script::printer::DocNode::TVM_DECLARE_BASE_OBJECT_INFO</a>(DocNode, Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ClassDocNode.html#a421ef530f1966ebf777d634b1eae8b69">TVM_DECLARE_FINAL_OBJECT_INFO</a>(ClassDocNode, StmtDocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ClassDocNode.html">tvm::script::printer::ClassDocNode</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a481f01923b14e1851ebd38506e9c66ea">type_index</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a4bfc2586cb55f2af47728187b3256255">type_index_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a817ba6c23b7ee1821c48a75edf255a30">TypeIndex2Key</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6ee32a02dd44257da105fbbe5d9c8622">TypeIndex2KeyHash</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6841f97e06e6614dd7e82c6dd41b818a">TypeKey2Index</a>(const std::string &amp;key)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#afd548730a6139d19fe24473ad66026d7">unique</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ClassDocNode.html#ae198909f8e613a84bcd4f74603f31894">VisitAttrs</a>(AttrVisitor *v)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ClassDocNode.html">tvm::script::printer::ClassDocNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a6202cee16104155937f3e64c703f6885">~DocNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ClassDocNode.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ClassDocNode.html
index ad9ccbd98..1cf34ab5b 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ClassDocNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ClassDocNode.html
@@ -79,13 +79,13 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::script::printer::ClassDocNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1ClassDocNode__inherit__graph.svg" width="290" height="1080"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1ClassDocNode__inherit__graph.svg" width="290" height="1095"><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::script::printer::ClassDocNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1ClassDocNode__coll__graph.svg" width="842" height="2147"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1ClassDocNode__coll__graph.svg" width="976" height="2206"><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">
@@ -145,6 +145,10 @@ Public Attributes</h2></td></tr>
 <tr class="memitem:ab5825bdb8b993e7bcdbe592163d549a1 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1StmtDocNode"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Optional.html">Optional</a>&lt; <a class="el" href="classtvm_1_1runtime_1_1String.html">String</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#ab5825bdb8b993e7bcdbe592163d549a1">comment</a> {<a cla [...]
 <tr class="memdesc:ab5825bdb8b993e7bcdbe592163d549a1 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1StmtDocNode"><td class="mdescLeft">&#160;</td><td class="mdescRight">The comment of this doc.  <a href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#ab5825bdb8b993e7bcdbe592163d549a1">More...</a><br /></td></tr>
 <tr class="separator:ab5825bdb8b993e7bcdbe592163d549a1 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1StmtDocNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode')"><img src="closed.png" alt="-"/>&#160;Public Attributes inherited from <a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td></tr>
+<tr class="memitem:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Array.html">Array</a>&lt; <a class="el" href="classtvm_1_1ObjectPath.html">ObjectPath</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">source_paths</a></td></tr>
+<tr class="memdesc:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="mdescLeft">&#160;</td><td class="mdescRight">The list of object paths of the source IR node.  <a href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">More...</a><br /></td></tr>
+<tr class="separator:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
 Static Public Attributes</h2></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ClassDocNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ClassDocNode__coll__graph.svg
index eab518a7b..133b4b991 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ClassDocNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ClassDocNode__coll__graph.svg
@@ -4,367 +4,404 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: tvm::script::printer::ClassDocNode Pages: 1 -->
-<svg width="631pt" height="1610pt"
- viewBox="0.00 0.00 630.50 1610.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 1606)">
+<svg width="732pt" height="1654pt"
+ viewBox="0.00 0.00 731.50 1654.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 1650)">
 <title>tvm::script::printer::ClassDocNode</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1606 626.5,-1606 626.5,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1650 727.5,-1650 727.5,4 -4,4"/>
 <!-- Node4 -->
 <g id="node1" class="node">
 <title>Node4</title>
-<polygon fill="#bfbfbf" stroke="#000000" points="259,-.5 259,-79.5 468,-79.5 468,-.5 259,-.5"/>
-<text text-anchor="start" x="267" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="363.5" y="-56.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ClassDocNode</text>
-<polyline fill="none" stroke="#000000" points="259,-49.5 468,-49.5 "/>
-<text text-anchor="start" x="267" y="-37.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="259,-30.5 468,-30.5 "/>
-<text text-anchor="start" x="267" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="267" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_FINAL_OBJECT_INFO()</text>
+<polygon fill="#bfbfbf" stroke="#000000" points="379,-.5 379,-79.5 588,-79.5 588,-.5 379,-.5"/>
+<text text-anchor="start" x="387" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="483.5" y="-56.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ClassDocNode</text>
+<polyline fill="none" stroke="#000000" points="379,-49.5 588,-49.5 "/>
+<text text-anchor="start" x="387" y="-37.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="379,-30.5 588,-30.5 "/>
+<text text-anchor="start" x="387" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="387" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_FINAL_OBJECT_INFO()</text>
 </g>
 <!-- Node5 -->
 <g id="node2" class="node">
 <title>Node5</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html" target="_top" xlink:title="The base class of statement doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="100,-461 100,-540 307,-540 307,-461 100,-461"/>
-<text text-anchor="start" x="108" y="-528" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="203.5" y="-517" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::StmtDocNode</text>
-<polyline fill="none" stroke="#000000" points="100,-510 307,-510 "/>
-<text text-anchor="start" x="108" y="-498" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="100,-491 307,-491 "/>
-<text text-anchor="start" x="108" y="-479" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="108" y="-468" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
+<polygon fill="#ffffff" stroke="#000000" points="194,-138.5 194,-217.5 401,-217.5 401,-138.5 194,-138.5"/>
+<text text-anchor="start" x="202" y="-205.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="297.5" y="-194.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::StmtDocNode</text>
+<polyline fill="none" stroke="#000000" points="194,-187.5 401,-187.5 "/>
+<text text-anchor="start" x="202" y="-175.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="194,-168.5 401,-168.5 "/>
+<text text-anchor="start" x="202" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="202" y="-145.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node4 -->
 <g id="edge1" class="edge">
 <title>Node5&#45;&gt;Node4</title>
-<path fill="none" stroke="#191970" d="M212.372,-450.819C227.5416,-372.775 262.6587,-217.9797 321.5,-98 324.5108,-91.8608 328.1666,-85.6824 332.0512,-79.765"/>
-<polygon fill="none" stroke="#191970" points="208.8931,-450.3769 210.449,-460.8568 215.7681,-451.694 208.8931,-450.3769"/>
+<path fill="none" stroke="#191970" d="M359.1277,-132.2763C382.12,-115.2174 408.0102,-96.0085 430.1921,-79.551"/>
+<polygon fill="none" stroke="#191970" points="356.7457,-129.6854 350.8001,-138.4547 360.9166,-135.3071 356.7457,-129.6854"/>
 </g>
 <!-- Node6 -->
 <g id="node3" class="node">
 <title>Node6</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1script_1_1printer_1_1DocNode.html" target="_top" xlink:title="The base class of all Doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="0,-816.5 0,-906.5 207,-906.5 207,-816.5 0,-816.5"/>
-<text text-anchor="start" x="8" y="-894.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="103.5" y="-883.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
-<polyline fill="none" stroke="#000000" points="0,-876.5 207,-876.5 "/>
-<text text-anchor="start" x="8" y="-864.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="0,-857.5 207,-857.5 "/>
-<text text-anchor="start" x="8" y="-845.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="8" y="-834.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
-<text text-anchor="start" x="8" y="-823.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~DocNode()</text>
+<polygon fill="#ffffff" stroke="#000000" points="117,-455.5 117,-545.5 324,-545.5 324,-455.5 117,-455.5"/>
+<text text-anchor="start" x="125" y="-533.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="220.5" y="-522.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
+<polyline fill="none" stroke="#000000" points="117,-515.5 324,-515.5 "/>
+<text text-anchor="start" x="125" y="-503.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="117,-496.5 324,-496.5 "/>
+<text text-anchor="start" x="125" y="-484.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="125" y="-473.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
+<text text-anchor="start" x="125" y="-462.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~DocNode()</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node5 -->
 <g id="edge2" class="edge">
 <title>Node6&#45;&gt;Node5</title>
-<path fill="none" stroke="#191970" d="M118.8324,-806.1499C139.1876,-732.6678 174.6389,-604.6887 192.5194,-540.14"/>
-<polygon fill="none" stroke="#191970" points="115.3605,-805.5732 116.0638,-816.1446 122.1064,-807.4419 115.3605,-805.5732"/>
+<path fill="none" stroke="#191970" d="M233.6795,-445.3001C249.126,-380.6054 274.3429,-274.9893 287.996,-217.8057"/>
+<polygon fill="none" stroke="#191970" points="230.2057,-444.7787 231.2876,-455.3182 237.0143,-446.4044 230.2057,-444.7787"/>
 </g>
 <!-- Node7 -->
 <g id="node4" class="node">
 <title>Node7</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers. ">
-<polygon fill="#ffffff" stroke="#000000" points="12,-988.5 12,-1375.5 195,-1375.5 195,-988.5 12,-988.5"/>
-<text text-anchor="middle" x="103.5" y="-1363.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
-<polyline fill="none" stroke="#000000" points="12,-1356.5 195,-1356.5 "/>
-<text text-anchor="start" x="20" y="-1344.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<text text-anchor="start" x="20" y="-1333.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
-<text text-anchor="start" x="20" y="-1322.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
-<text text-anchor="start" x="20" y="-1311.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
-<text text-anchor="start" x="20" y="-1300.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
-<text text-anchor="start" x="20" y="-1289.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
-<text text-anchor="start" x="20" y="-1278.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
-<text text-anchor="start" x="20" y="-1267.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="20" y="-1256.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="20" y="-1245.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
-<text text-anchor="start" x="20" y="-1234.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="20" y="-1223.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
-<text text-anchor="start" x="20" y="-1212.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
-<text text-anchor="start" x="20" y="-1201.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
-<polyline fill="none" stroke="#000000" points="12,-1194.5 195,-1194.5 "/>
-<text text-anchor="start" x="20" y="-1182.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
-<text text-anchor="start" x="20" y="-1171.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
-<text text-anchor="start" x="20" y="-1160.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="20" y="-1149.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
-<text text-anchor="start" x="20" y="-1138.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
-<text text-anchor="start" x="20" y="-1127.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-1116.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-1105.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-1094.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="20" y="-1083.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="20" y="-1072.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="20" y="-1061.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="20" y="-1050.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
-<text text-anchor="start" x="20" y="-1039.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="20" y="-1028.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="20" y="-1017.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
-<text text-anchor="start" x="20" y="-1006.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
-<text text-anchor="start" x="20" y="-995.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
+<polygon fill="#ffffff" stroke="#000000" points="0,-772.5 0,-1159.5 183,-1159.5 183,-772.5 0,-772.5"/>
+<text text-anchor="middle" x="91.5" y="-1147.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
+<polyline fill="none" stroke="#000000" points="0,-1140.5 183,-1140.5 "/>
+<text text-anchor="start" x="8" y="-1128.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<text text-anchor="start" x="8" y="-1117.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
+<text text-anchor="start" x="8" y="-1106.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-1095.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-1084.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
+<text text-anchor="start" x="8" y="-1073.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-1062.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
+<text text-anchor="start" x="8" y="-1051.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-1040.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="8" y="-1029.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-1018.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="8" y="-1007.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
+<text text-anchor="start" x="8" y="-996.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
+<text text-anchor="start" x="8" y="-985.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
+<polyline fill="none" stroke="#000000" points="0,-978.5 183,-978.5 "/>
+<text text-anchor="start" x="8" y="-966.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
+<text text-anchor="start" x="8" y="-955.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-944.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-933.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-922.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="8" y="-911.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-900.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-889.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-878.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="8" y="-867.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="8" y="-856.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-845.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-834.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-823.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-812.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-801.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
+<text text-anchor="start" x="8" y="-790.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
+<text text-anchor="start" x="8" y="-779.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node6 -->
 <g id="edge3" class="edge">
 <title>Node7&#45;&gt;Node6</title>
-<path fill="none" stroke="#191970" d="M103.5,-977.8931C103.5,-951.284 103.5,-926.4228 103.5,-906.5654"/>
-<polygon fill="none" stroke="#191970" points="100.0001,-978.1701 103.5,-988.1701 107.0001,-978.1701 100.0001,-978.1701"/>
+<path fill="none" stroke="#191970" d="M128.8471,-762.3909C143.5199,-697.8851 162.6559,-626.9983 186.5,-564 188.8018,-557.9184 191.5714,-551.6874 194.5236,-545.6187"/>
+<polygon fill="none" stroke="#191970" points="125.4043,-761.7481 126.6227,-772.2726 132.2334,-763.2854 125.4043,-761.7481"/>
 </g>
 <!-- Node7&#45;&gt;Node7 -->
 <g id="edge4" class="edge">
 <title>Node7&#45;&gt;Node7</title>
-<path fill="none" stroke="#404040" d="M195.3625,-1215.9248C206.0482,-1209.6637 213,-1198.3555 213,-1182 213,-1171.0112 209.8618,-1162.3007 204.5615,-1155.8687"/>
-<polygon fill="none" stroke="#404040" points="204.5184,-1155.8322 197.3548,-1155.0056 195.3625,-1148.0752 202.5261,-1148.9017 204.5184,-1155.8322"/>
-<text text-anchor="middle" x="239" y="-1179.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M183.3625,-999.9248C194.0482,-993.6637 201,-982.3555 201,-966 201,-955.0112 197.8618,-946.3007 192.5615,-939.8687"/>
+<polygon fill="none" stroke="#404040" points="192.5184,-939.8322 185.3548,-939.0056 183.3625,-932.0752 190.5261,-932.9017 192.5184,-939.8322"/>
+<text text-anchor="middle" x="227" y="-963.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #deleter_</text>
 </g>
 <!-- Node8 -->
 <g id="node5" class="node">
 <title>Node8</title>
-<g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="{tvm::runtime::Optional\l\&lt; tvm::runtime::String \&gt;\n|+ _type_is_nullable\l|+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ operator=()\l+ operator=()\land 15 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="225,-772.5 225,-950.5 362,-950.5 362,-772.5 225,-772.5"/>
-<text text-anchor="start" x="233" y="-938.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="middle" x="293.5" y="-927.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::String &gt;</text>
-<polyline fill="none" stroke="#000000" points="225,-920.5 362,-920.5 "/>
-<text text-anchor="start" x="233" y="-908.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
-<polyline fill="none" stroke="#000000" points="225,-901.5 362,-901.5 "/>
-<text text-anchor="start" x="233" y="-889.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-878.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-867.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-856.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-845.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-834.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-823.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-812.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-801.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="233" y="-790.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="233" y="-779.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 15 more...</text>
+<g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="{tvm::runtime::Array\l\&lt; tvm::ObjectPath \&gt;\n||+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ operator=()\l+ operator=()\land 24 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="271,-877 271,-1055 388,-1055 388,-877 271,-877"/>
+<text text-anchor="start" x="279" y="-1043" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="329.5" y="-1032" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::ObjectPath &gt;</text>
+<polyline fill="none" stroke="#000000" points="271,-1025 388,-1025 "/>
+<text text-anchor="middle" x="329.5" y="-1013" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="271,-1006 388,-1006 "/>
+<text text-anchor="start" x="279" y="-994" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-983" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-972" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-961" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-950" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-939" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-928" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-917" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-906" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="279" y="-895" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="279" y="-884" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
 </a>
 </g>
 </g>
-<!-- Node8&#45;&gt;Node5 -->
+<!-- Node8&#45;&gt;Node6 -->
 <g id="edge5" class="edge">
-<title>Node8&#45;&gt;Node5</title>
-<path fill="none" stroke="#404040" d="M228.1243,-772.4165C225.2156,-766.3492 222.6308,-760.1856 220.5,-754 197.4909,-687.2066 196.618,-604.7667 199.1893,-552.4015"/>
-<polygon fill="none" stroke="#404040" points="199.1898,-552.3918 195.5335,-546.1764 199.8645,-540.4108 203.5208,-546.6262 199.1898,-552.3918"/>
-<text text-anchor="middle" x="249.5" y="-656.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +comment</text>
+<title>Node8&#45;&gt;Node6</title>
+<path fill="none" stroke="#404040" d="M315.4991,-876.8519C305.863,-840.5429 289.6659,-800.5014 262.5,-772 247.6381,-756.4075 229.5763,-771.8371 217.5,-754 178.3047,-696.1072 188.9048,-612.4593 202.5958,-557.3067"/>
+<polygon fill="none" stroke="#404040" points="202.6084,-557.2583 200.2545,-550.4422 205.641,-545.6478 207.9949,-552.464 202.6084,-557.2583"/>
+<text text-anchor="middle" x="255.5" y="-656.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +source_paths</text>
 </g>
 <!-- Node9 -->
 <g id="node6" class="node">
 <title>Node9</title>
 <g id="a_node6"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference. ">
-<polygon fill="#ffffff" stroke="#000000" points="342.5,-1071 342.5,-1293 476.5,-1293 476.5,-1071 342.5,-1071"/>
-<text text-anchor="middle" x="409.5" y="-1281" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="#000000" points="342.5,-1274 476.5,-1274 "/>
-<text text-anchor="start" x="350.5" y="-1262" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
-<polyline fill="none" stroke="#000000" points="342.5,-1255 476.5,-1255 "/>
-<text text-anchor="start" x="350.5" y="-1243" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
-<text text-anchor="start" x="350.5" y="-1232" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
-<text text-anchor="start" x="350.5" y="-1221" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
-<text text-anchor="start" x="350.5" y="-1210" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
-<text text-anchor="start" x="350.5" y="-1199" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
-<text text-anchor="start" x="350.5" y="-1188" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
-<text text-anchor="start" x="350.5" y="-1177" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
-<text text-anchor="start" x="350.5" y="-1166" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
-<text text-anchor="start" x="350.5" y="-1155" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="350.5" y="-1144" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
-<text text-anchor="start" x="350.5" y="-1133" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
-<text text-anchor="start" x="350.5" y="-1122" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
-<text text-anchor="start" x="350.5" y="-1111" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
-<text text-anchor="start" x="350.5" y="-1100" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
-<text text-anchor="start" x="350.5" y="-1089" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="350.5" y="-1078" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
+<polygon fill="#ffffff" stroke="#000000" points="387.5,-1197.5 387.5,-1419.5 521.5,-1419.5 521.5,-1197.5 387.5,-1197.5"/>
+<text text-anchor="middle" x="454.5" y="-1407.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="#000000" points="387.5,-1400.5 521.5,-1400.5 "/>
+<text text-anchor="start" x="395.5" y="-1388.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
+<polyline fill="none" stroke="#000000" points="387.5,-1381.5 521.5,-1381.5 "/>
+<text text-anchor="start" x="395.5" y="-1369.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="395.5" y="-1358.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="395.5" y="-1347.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
+<text text-anchor="start" x="395.5" y="-1336.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
+<text text-anchor="start" x="395.5" y="-1325.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
+<text text-anchor="start" x="395.5" y="-1314.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
+<text text-anchor="start" x="395.5" y="-1303.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
+<text text-anchor="start" x="395.5" y="-1292.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="395.5" y="-1281.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="395.5" y="-1270.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="395.5" y="-1259.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
+<text text-anchor="start" x="395.5" y="-1248.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
+<text text-anchor="start" x="395.5" y="-1237.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
+<text text-anchor="start" x="395.5" y="-1226.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
+<text text-anchor="start" x="395.5" y="-1215.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="395.5" y="-1204.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node9&#45;&gt;Node8 -->
 <g id="edge6" class="edge">
 <title>Node9&#45;&gt;Node8</title>
-<path fill="none" stroke="#191970" d="M365.7221,-1061.0448C352.4436,-1024.3571 338.1051,-984.7409 325.7309,-950.5518"/>
-<polygon fill="none" stroke="#191970" points="362.5599,-1062.5922 369.2544,-1070.8041 369.1421,-1060.2099 362.5599,-1062.5922"/>
+<path fill="none" stroke="#191970" d="M405.8128,-1187.8336C404.6898,-1184.8629 403.5839,-1181.9148 402.5,-1179 387.4791,-1138.6049 371.8566,-1093.4978 358.9368,-1055.2295"/>
+<polygon fill="none" stroke="#191970" points="402.6206,-1189.2859 409.4514,-1197.3847 409.162,-1186.7938 402.6206,-1189.2859"/>
 </g>
 <!-- Node11 -->
 <g id="node8" class="node">
 <title>Node11</title>
-<g id="a_node8"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="{tvm::runtime::Array\l\&lt; tvm::script::printer\l::ExprDoc \&gt;\n||+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ operator=()\l+ operator=()\land 24 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="287,-564.5 287,-753.5 406,-753.5 406,-564.5 287,-564.5"/>
-<text text-anchor="start" x="295" y="-741.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="start" x="295" y="-730.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::script::printer</text>
-<text text-anchor="middle" x="346.5" y="-719.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDoc &gt;</text>
-<polyline fill="none" stroke="#000000" points="287,-712.5 406,-712.5 "/>
-<text text-anchor="middle" x="346.5" y="-700.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="287,-693.5 406,-693.5 "/>
-<text text-anchor="start" x="295" y="-681.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="295" y="-670.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="295" y="-659.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="295" y="-648.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="295" y="-637.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="295" y="-626.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="295" y="-615.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="295" y="-604.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="295" y="-593.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="295" y="-582.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="295" y="-571.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
+<g id="a_node8"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="{tvm::runtime::Optional\l\&lt; tvm::runtime::String \&gt;\n|+ _type_is_nullable\l|+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ operator=()\l+ operator=()\land 15 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="302,-570 302,-748 439,-748 439,-570 302,-570"/>
+<text text-anchor="start" x="310" y="-736" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="370.5" y="-725" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::String &gt;</text>
+<polyline fill="none" stroke="#000000" points="302,-718 439,-718 "/>
+<text text-anchor="start" x="310" y="-706" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
+<polyline fill="none" stroke="#000000" points="302,-699 439,-699 "/>
+<text text-anchor="start" x="310" y="-687" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="310" y="-676" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="310" y="-665" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="310" y="-654" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="310" y="-643" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="310" y="-632" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="310" y="-621" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="310" y="-610" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="310" y="-599" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="310" y="-588" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="310" y="-577" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 15 more...</text>
 </a>
 </g>
 </g>
 <!-- Node9&#45;&gt;Node11 -->
 <g id="edge9" class="edge">
 <title>Node9&#45;&gt;Node11</title>
-<path fill="none" stroke="#191970" d="M402.2489,-1060.5088C396.3819,-978.6581 386.5774,-868.4454 371.5,-772 370.569,-766.0446 369.5129,-759.9332 368.3737,-753.7841"/>
-<polygon fill="none" stroke="#191970" points="398.7657,-1060.8714 402.9626,-1070.5995 405.7483,-1060.3775 398.7657,-1060.8714"/>
+<path fill="none" stroke="#191970" d="M441.3759,-1187.186C441.0809,-1184.4317 440.7886,-1181.7 440.5,-1179 421.1692,-998.1345 428.2557,-951.2766 397.5,-772 396.1699,-764.2468 394.6185,-756.2334 392.9439,-748.2189"/>
+<polygon fill="none" stroke="#191970" points="437.908,-1187.6727 442.4545,-1197.2424 444.868,-1186.9261 437.908,-1187.6727"/>
 </g>
 <!-- Node12 -->
 <g id="node9" class="node">
 <title>Node12</title>
-<g id="a_node9"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="{tvm::runtime::Array\l\&lt; tvm::script::printer\l::StmtDoc \&gt;\n||+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ operator=()\l+ operator=()\land 24 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="405,-247.5 405,-436.5 524,-436.5 524,-247.5 405,-247.5"/>
-<text text-anchor="start" x="413" y="-424.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="start" x="413" y="-413.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::script::printer</text>
-<text text-anchor="middle" x="464.5" y="-402.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::StmtDoc &gt;</text>
-<polyline fill="none" stroke="#000000" points="405,-395.5 524,-395.5 "/>
-<text text-anchor="middle" x="464.5" y="-383.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="405,-376.5 524,-376.5 "/>
-<text text-anchor="start" x="413" y="-364.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="413" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="413" y="-342.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="413" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="413" y="-320.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="413" y="-309.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="413" y="-298.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="413" y="-287.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="413" y="-276.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="413" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="413" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
+<g id="a_node9"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="{tvm::runtime::Array\l\&lt; tvm::script::printer\l::ExprDoc \&gt;\n||+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ operator=()\l+ operator=()\land 24 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="384,-247.5 384,-436.5 503,-436.5 503,-247.5 384,-247.5"/>
+<text text-anchor="start" x="392" y="-424.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="start" x="392" y="-413.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::script::printer</text>
+<text text-anchor="middle" x="443.5" y="-402.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDoc &gt;</text>
+<polyline fill="none" stroke="#000000" points="384,-395.5 503,-395.5 "/>
+<text text-anchor="middle" x="443.5" y="-383.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="384,-376.5 503,-376.5 "/>
+<text text-anchor="start" x="392" y="-364.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="392" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="392" y="-342.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="392" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="392" y="-320.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="392" y="-309.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="392" y="-298.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="392" y="-287.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="392" y="-276.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="392" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="392" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
 </a>
 </g>
 </g>
 <!-- Node9&#45;&gt;Node12 -->
 <g id="edge11" class="edge">
 <title>Node9&#45;&gt;Node12</title>
-<path fill="none" stroke="#191970" d="M412.2421,-1060.6682C416.3405,-916.1115 426.0189,-667.4426 447.5,-455 448.1087,-448.9799 448.8137,-442.7902 449.5834,-436.5569"/>
-<polygon fill="none" stroke="#191970" points="408.7371,-1060.8006 411.9565,-1070.8945 415.7344,-1060.9961 408.7371,-1060.8006"/>
+<path fill="none" stroke="#191970" d="M453.119,-1187.158C450.9001,-992.1965 446.587,-613.233 444.578,-436.7203"/>
+<polygon fill="none" stroke="#191970" points="449.6191,-1187.199 453.2328,-1197.1585 456.6187,-1187.1193 449.6191,-1187.199"/>
 </g>
-<!-- Node15 -->
-<g id="node12" class="node">
-<title>Node15</title>
-<g id="a_node12"><a xlink:href="classtvm_1_1script_1_1printer_1_1Doc.html" target="_top" xlink:title="Reference type of DocNode. ">
-<polygon fill="#ffffff" stroke="#000000" points="456.5,-816.5 456.5,-906.5 622.5,-906.5 622.5,-816.5 456.5,-816.5"/>
-<text text-anchor="middle" x="539.5" y="-894.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer::Doc</text>
-<polyline fill="none" stroke="#000000" points="456.5,-887.5 622.5,-887.5 "/>
-<text text-anchor="middle" x="539.5" y="-875.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="456.5,-868.5 622.5,-868.5 "/>
-<text text-anchor="start" x="464.5" y="-856.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~Doc()</text>
-<text text-anchor="start" x="464.5" y="-845.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
-<text text-anchor="start" x="464.5" y="-834.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
-<text text-anchor="start" x="464.5" y="-823.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># Doc()</text>
+<!-- Node13 -->
+<g id="node10" class="node">
+<title>Node13</title>
+<g id="a_node10"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="{tvm::runtime::Array\l\&lt; tvm::script::printer\l::StmtDoc \&gt;\n||+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ operator=()\l+ operator=()\land 24 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="470,-564.5 470,-753.5 589,-753.5 589,-564.5 470,-564.5"/>
+<text text-anchor="start" x="478" y="-741.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="start" x="478" y="-730.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::script::printer</text>
+<text text-anchor="middle" x="529.5" y="-719.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::StmtDoc &gt;</text>
+<polyline fill="none" stroke="#000000" points="470,-712.5 589,-712.5 "/>
+<text text-anchor="middle" x="529.5" y="-700.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="470,-693.5 589,-693.5 "/>
+<text text-anchor="start" x="478" y="-681.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="478" y="-670.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="478" y="-659.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="478" y="-648.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="478" y="-637.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="478" y="-626.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="478" y="-615.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="478" y="-604.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="478" y="-593.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="478" y="-582.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="478" y="-571.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
 </a>
 </g>
 </g>
-<!-- Node9&#45;&gt;Node15 -->
-<g id="edge15" class="edge">
-<title>Node9&#45;&gt;Node15</title>
-<path fill="none" stroke="#191970" d="M458.3872,-1061.4743C480.356,-1007.3127 504.9457,-946.6895 521.2315,-906.539"/>
-<polygon fill="none" stroke="#191970" points="455.1183,-1060.2218 454.6029,-1070.8041 461.605,-1062.853 455.1183,-1060.2218"/>
+<!-- Node9&#45;&gt;Node13 -->
+<g id="edge13" class="edge">
+<title>Node9&#45;&gt;Node13</title>
+<path fill="none" stroke="#191970" d="M468.5106,-1187.1681C483.0087,-1061.615 505.3485,-868.1522 518.5866,-753.51"/>
+<polygon fill="none" stroke="#191970" points="465.0206,-1186.8807 467.3503,-1197.2162 471.9744,-1187.6837 465.0206,-1186.8807"/>
+</g>
+<!-- Node16 -->
+<g id="node13" class="node">
+<title>Node16</title>
+<g id="a_node13"><a xlink:href="classtvm_1_1script_1_1printer_1_1Doc.html" target="_top" xlink:title="Reference type of DocNode. ">
+<polygon fill="#ffffff" stroke="#000000" points="544.5,-921 544.5,-1011 710.5,-1011 710.5,-921 544.5,-921"/>
+<text text-anchor="middle" x="627.5" y="-999" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer::Doc</text>
+<polyline fill="none" stroke="#000000" points="544.5,-992 710.5,-992 "/>
+<text text-anchor="middle" x="627.5" y="-980" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="544.5,-973 710.5,-973 "/>
+<text text-anchor="start" x="552.5" y="-961" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~Doc()</text>
+<text text-anchor="start" x="552.5" y="-950" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
+<text text-anchor="start" x="552.5" y="-939" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
+<text text-anchor="start" x="552.5" y="-928" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># Doc()</text>
+</a>
+</g>
+</g>
+<!-- Node9&#45;&gt;Node16 -->
+<g id="edge17" class="edge">
+<title>Node9&#45;&gt;Node16</title>
+<path fill="none" stroke="#191970" d="M520.6153,-1188.4471C522.2698,-1185.2704 523.9007,-1182.1171 525.5,-1179 554.8852,-1121.7277 586.5912,-1054.5912 606.7193,-1011.2305"/>
+<polygon fill="none" stroke="#191970" points="517.4384,-1186.9692 515.8967,-1197.4513 523.6386,-1190.2184 517.4384,-1186.9692"/>
 </g>
 <!-- Node10 -->
 <g id="node7" class="node">
 <title>Node10</title>
 <g id="a_node7"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title="{tvm::runtime::ObjectPtr\l\&lt; tvm::runtime::Object \&gt;\n||+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ~ObjectPtr()\l+ swap()\l+ get()\l+ operator&#45;\&gt;()\land 11 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="339.5,-1423.5 339.5,-1601.5 479.5,-1601.5 479.5,-1423.5 339.5,-1423.5"/>
-<text text-anchor="start" x="347.5" y="-1589.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="409.5" y="-1578.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="#000000" points="339.5,-1571.5 479.5,-1571.5 "/>
-<text text-anchor="middle" x="409.5" y="-1559.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="339.5,-1552.5 479.5,-1552.5 "/>
-<text text-anchor="start" x="347.5" y="-1540.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="347.5" y="-1529.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="347.5" y="-1518.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="347.5" y="-1507.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="347.5" y="-1496.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="347.5" y="-1485.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="347.5" y="-1474.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="347.5" y="-1463.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ swap()</text>
-<text text-anchor="start" x="347.5" y="-1452.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
-<text text-anchor="start" x="347.5" y="-1441.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="347.5" y="-1430.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 11 more...</text>
+<polygon fill="#ffffff" stroke="#000000" points="384.5,-1467.5 384.5,-1645.5 524.5,-1645.5 524.5,-1467.5 384.5,-1467.5"/>
+<text text-anchor="start" x="392.5" y="-1633.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="454.5" y="-1622.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="#000000" points="384.5,-1615.5 524.5,-1615.5 "/>
+<text text-anchor="middle" x="454.5" y="-1603.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="384.5,-1596.5 524.5,-1596.5 "/>
+<text text-anchor="start" x="392.5" y="-1584.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="392.5" y="-1573.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="392.5" y="-1562.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="392.5" y="-1551.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="392.5" y="-1540.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="392.5" y="-1529.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="392.5" y="-1518.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="392.5" y="-1507.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ swap()</text>
+<text text-anchor="start" x="392.5" y="-1496.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="392.5" y="-1485.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="392.5" y="-1474.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 11 more...</text>
 </a>
 </g>
 </g>
 <!-- Node10&#45;&gt;Node9 -->
 <g id="edge7" class="edge">
 <title>Node10&#45;&gt;Node9</title>
-<path fill="none" stroke="#404040" d="M409.5,-1423.4973C409.5,-1387.1115 409.5,-1344.409 409.5,-1305.1129"/>
-<polygon fill="none" stroke="#404040" points="409.5001,-1305.0376 405.5,-1299.0377 409.5,-1293.0376 413.5,-1299.0376 409.5001,-1305.0376"/>
-<text text-anchor="middle" x="429" y="-1397" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #data_</text>
+<path fill="none" stroke="#404040" d="M454.5,-1467.3167C454.5,-1455.8765 454.5,-1444.0062 454.5,-1432.1402"/>
+<polygon fill="none" stroke="#404040" points="454.5001,-1431.7944 450.5,-1425.7944 454.5,-1419.7944 458.5,-1425.7943 454.5001,-1431.7944"/>
+<text text-anchor="middle" x="474" y="-1441" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #data_</text>
 </g>
-<!-- Node11&#45;&gt;Node4 -->
+<!-- Node11&#45;&gt;Node5 -->
 <g id="edge8" class="edge">
-<title>Node11&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M337.4785,-564.3832C330.8933,-480.8008 324.4085,-355.6631 332.5,-247 336.4579,-193.8481 346.0568,-133.6509 353.5335,-91.9298"/>
-<polygon fill="none" stroke="#404040" points="353.5793,-91.6776 350.718,-85.0585 355.7275,-79.8715 358.5888,-86.4907 353.5793,-91.6776"/>
-<text text-anchor="middle" x="364.5" y="-339.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +decorators</text>
+<title>Node11&#45;&gt;Node5</title>
+<path fill="none" stroke="#404040" d="M356.983,-569.9359C341.792,-469.8421 317.6467,-310.7471 305.3115,-229.4701"/>
+<polygon fill="none" stroke="#404040" points="305.3087,-229.451 300.4536,-224.1191 303.508,-217.5868 308.363,-222.9187 305.3087,-229.451"/>
+<text text-anchor="middle" x="380.5" y="-498" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +comment</text>
 </g>
 <!-- Node12&#45;&gt;Node4 -->
 <g id="edge10" class="edge">
 <title>Node12&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M412.7899,-247.2432C410.1592,-241.1423 407.7003,-235.0291 405.5,-229 389.0188,-183.8397 377.8439,-130.1487 371.1904,-91.5543"/>
-<polygon fill="none" stroke="#404040" points="371.1679,-91.4196 366.2328,-86.1618 369.188,-79.584 374.1232,-84.8418 371.1679,-91.4196"/>
-<text text-anchor="middle" x="423.5" y="-175.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +body</text>
-</g>
-<!-- Node13 -->
-<g id="node10" class="node">
-<title>Node13</title>
-<g id="a_node10"><a xlink:href="classtvm_1_1script_1_1printer_1_1IdDoc.html" target="_top" xlink:title="Reference type of IdDocNode. ">
-<polygon fill="#ffffff" stroke="#000000" points="450.5,-127.5 450.5,-228.5 616.5,-228.5 616.5,-127.5 450.5,-127.5"/>
-<text text-anchor="start" x="458.5" y="-216.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="533.5" y="-205.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::IdDoc</text>
-<polyline fill="none" stroke="#000000" points="450.5,-198.5 616.5,-198.5 "/>
-<text text-anchor="middle" x="533.5" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="450.5,-179.5 616.5,-179.5 "/>
-<text text-anchor="start" x="458.5" y="-167.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IdDoc()</text>
-<text text-anchor="start" x="458.5" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IdDoc()</text>
-<text text-anchor="start" x="458.5" y="-145.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
-<text text-anchor="start" x="458.5" y="-134.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
-</a>
-</g>
+<path fill="none" stroke="#404040" d="M440.6227,-247.333C441.1333,-209.5873 443.8169,-165.9359 451.5,-127 453.8601,-115.0398 457.6253,-102.5403 461.7574,-90.8677"/>
+<polygon fill="none" stroke="#404040" points="461.7936,-90.7701 460.1339,-83.7525 465.9733,-79.5215 467.633,-86.539 461.7936,-90.7701"/>
+<text text-anchor="middle" x="483.5" y="-175.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +decorators</text>
 </g>
 <!-- Node13&#45;&gt;Node4 -->
 <g id="edge12" class="edge">
 <title>Node13&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M471.1636,-127.3975C455.0763,-114.3384 437.8206,-100.3309 421.94,-87.4396"/>
-<polygon fill="none" stroke="#404040" points="421.5693,-87.1386 414.3899,-86.4627 412.2525,-79.5756 419.4319,-80.2515 421.5693,-87.1386"/>
-<text text-anchor="middle" x="468.5" y="-101" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +name</text>
+<path fill="none" stroke="#404040" d="M536.2067,-564.3091C541.6797,-457.1417 544.4164,-277.8571 515.5,-127 513.205,-115.0272 509.4664,-102.5224 505.3395,-90.8489"/>
+<polygon fill="none" stroke="#404040" points="505.3032,-90.751 499.4633,-86.5206 501.1221,-79.5029 506.962,-83.7333 505.3032,-90.751"/>
+<text text-anchor="middle" x="557.5" y="-339.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +body</text>
 </g>
 <!-- Node14 -->
 <g id="node11" class="node">
 <title>Node14</title>
-<g id="a_node11"><a xlink:href="classtvm_1_1script_1_1printer_1_1ExprDoc.html" target="_top" xlink:title="Reference type of ExprDocNode. ">
-<polygon fill="#ffffff" stroke="#000000" points="456.5,-455.5 456.5,-545.5 622.5,-545.5 622.5,-455.5 456.5,-455.5"/>
-<text text-anchor="start" x="464.5" y="-533.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="539.5" y="-522.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDoc</text>
-<polyline fill="none" stroke="#000000" points="456.5,-515.5 622.5,-515.5 "/>
-<text text-anchor="middle" x="539.5" y="-503.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="456.5,-496.5 622.5,-496.5 "/>
-<text text-anchor="start" x="464.5" y="-484.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
-<text text-anchor="start" x="464.5" y="-473.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
-<text text-anchor="start" x="464.5" y="-462.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ExprDoc()</text>
+<g id="a_node11"><a xlink:href="classtvm_1_1script_1_1printer_1_1IdDoc.html" target="_top" xlink:title="Reference type of IdDocNode. ">
+<polygon fill="#ffffff" stroke="#000000" points="557.5,-127.5 557.5,-228.5 723.5,-228.5 723.5,-127.5 557.5,-127.5"/>
+<text text-anchor="start" x="565.5" y="-216.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="640.5" y="-205.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::IdDoc</text>
+<polyline fill="none" stroke="#000000" points="557.5,-198.5 723.5,-198.5 "/>
+<text text-anchor="middle" x="640.5" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="557.5,-179.5 723.5,-179.5 "/>
+<text text-anchor="start" x="565.5" y="-167.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IdDoc()</text>
+<text text-anchor="start" x="565.5" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IdDoc()</text>
+<text text-anchor="start" x="565.5" y="-145.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
+<text text-anchor="start" x="565.5" y="-134.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
 </a>
 </g>
 </g>
-<!-- Node14&#45;&gt;Node13 -->
-<g id="edge13" class="edge">
-<title>Node14&#45;&gt;Node13</title>
-<path fill="none" stroke="#191970" d="M538.4701,-445.1447C537.3393,-384.3616 535.5389,-287.592 534.4436,-228.7176"/>
-<polygon fill="none" stroke="#191970" points="534.9739,-445.3851 538.6594,-455.3182 541.9727,-445.2548 534.9739,-445.3851"/>
+<!-- Node14&#45;&gt;Node4 -->
+<g id="edge14" class="edge">
+<title>Node14&#45;&gt;Node4</title>
+<path fill="none" stroke="#404040" d="M582.9305,-127.3975C568.2854,-114.5247 552.5918,-100.7303 538.0995,-87.9919"/>
+<polygon fill="none" stroke="#404040" points="537.7858,-87.7162 530.6384,-86.7594 528.7726,-79.7938 535.92,-80.7506 537.7858,-87.7162"/>
+<text text-anchor="middle" x="581.5" y="-101" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +name</text>
+</g>
+<!-- Node15 -->
+<g id="node12" class="node">
+<title>Node15</title>
+<g id="a_node12"><a xlink:href="classtvm_1_1script_1_1printer_1_1ExprDoc.html" target="_top" xlink:title="Reference type of ExprDocNode. ">
+<polygon fill="#ffffff" stroke="#000000" points="557.5,-455.5 557.5,-545.5 723.5,-545.5 723.5,-455.5 557.5,-455.5"/>
+<text text-anchor="start" x="565.5" y="-533.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="640.5" y="-522.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDoc</text>
+<polyline fill="none" stroke="#000000" points="557.5,-515.5 723.5,-515.5 "/>
+<text text-anchor="middle" x="640.5" y="-503.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="557.5,-496.5 723.5,-496.5 "/>
+<text text-anchor="start" x="565.5" y="-484.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
+<text text-anchor="start" x="565.5" y="-473.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
+<text text-anchor="start" x="565.5" y="-462.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ExprDoc()</text>
+</a>
+</g>
 </g>
 <!-- Node15&#45;&gt;Node14 -->
-<g id="edge14" class="edge">
+<g id="edge15" class="edge">
 <title>Node15&#45;&gt;Node14</title>
-<path fill="none" stroke="#191970" d="M539.5,-805.9864C539.5,-734.5238 539.5,-611.7143 539.5,-545.6698"/>
-<polygon fill="none" stroke="#191970" points="536.0001,-806.1446 539.5,-816.1446 543.0001,-806.1447 536.0001,-806.1446"/>
+<path fill="none" stroke="#191970" d="M640.5,-445.1447C640.5,-384.3616 640.5,-287.592 640.5,-228.7176"/>
+<polygon fill="none" stroke="#191970" points="637.0001,-445.3181 640.5,-455.3182 644.0001,-445.3182 637.0001,-445.3181"/>
+</g>
+<!-- Node16&#45;&gt;Node15 -->
+<g id="edge16" class="edge">
+<title>Node16&#45;&gt;Node15</title>
+<path fill="none" stroke="#191970" d="M629.0393,-910.8827C631.6378,-817.8354 636.8451,-631.372 639.241,-545.5819"/>
+<polygon fill="none" stroke="#191970" points="625.5389,-910.8491 628.7583,-920.9429 632.5362,-911.0446 625.5389,-910.8491"/>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ClassDocNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ClassDocNode__inherit__graph.svg
index 5817203c3..77073fa7b 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ClassDocNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ClassDocNode__inherit__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: tvm::script::printer::ClassDocNode Pages: 1 -->
-<svg width="217pt" height="810pt"
- viewBox="0.00 0.00 217.00 810.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 806)">
+<svg width="217pt" height="821pt"
+ viewBox="0.00 0.00 217.00 821.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 817)">
 <title>tvm::script::printer::ClassDocNode</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-806 213,-806 213,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-817 213,-817 213,4 -4,4"/>
 <!-- Node0 -->
 <g id="node1" class="node">
 <title>Node0</title>
@@ -50,10 +50,11 @@
 <g id="node3" class="node">
 <title>Node2</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1script_1_1printer_1_1DocNode.html" target="_top" xlink:title="The base class of all Doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="1,-276.5 1,-366.5 208,-366.5 208,-276.5 1,-276.5"/>
-<text text-anchor="start" x="9" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="104.5" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
-<polyline fill="none" stroke="#000000" points="1,-336.5 208,-336.5 "/>
+<polygon fill="#ffffff" stroke="#000000" points="1,-276.5 1,-377.5 208,-377.5 208,-276.5 1,-276.5"/>
+<text text-anchor="start" x="9" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="104.5" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
+<polyline fill="none" stroke="#000000" points="1,-347.5 208,-347.5 "/>
+<text text-anchor="start" x="9" y="-335.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ source_paths</text>
 <text text-anchor="start" x="9" y="-324.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
 <polyline fill="none" stroke="#000000" points="1,-317.5 208,-317.5 "/>
 <text text-anchor="start" x="9" y="-305.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
@@ -65,58 +66,58 @@
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge2" class="edge">
 <title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="#191970" d="M104.5,-266.2012C104.5,-257.4232 104.5,-248.4326 104.5,-239.9156"/>
-<polygon fill="none" stroke="#191970" points="101.0001,-266.3669 104.5,-276.367 108.0001,-266.367 101.0001,-266.3669"/>
+<path fill="none" stroke="#191970" d="M104.5,-265.9214C104.5,-257.1275 104.5,-248.2114 104.5,-239.7978"/>
+<polygon fill="none" stroke="#191970" points="101.0001,-266.1509 104.5,-276.151 108.0001,-266.151 101.0001,-266.1509"/>
 </g>
 <!-- Node3 -->
 <g id="node4" class="node">
 <title>Node3</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers. ">
-<polygon fill="#ffffff" stroke="#000000" points="13,-403.5 13,-801.5 196,-801.5 196,-403.5 13,-403.5"/>
-<text text-anchor="middle" x="104.5" y="-789.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
-<polyline fill="none" stroke="#000000" points="13,-782.5 196,-782.5 "/>
-<text text-anchor="start" x="21" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<text text-anchor="start" x="21" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
-<text text-anchor="start" x="21" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
-<text text-anchor="start" x="21" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
-<text text-anchor="start" x="21" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
-<text text-anchor="start" x="21" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
-<text text-anchor="start" x="21" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
-<text text-anchor="start" x="21" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="21" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="21" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
-<text text-anchor="start" x="21" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="21" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
-<text text-anchor="start" x="21" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
-<text text-anchor="start" x="21" y="-627.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
-<text text-anchor="start" x="21" y="-616.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># deleter_</text>
-<polyline fill="none" stroke="#000000" points="13,-609.5 196,-609.5 "/>
-<text text-anchor="start" x="21" y="-597.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
-<text text-anchor="start" x="21" y="-586.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
-<text text-anchor="start" x="21" y="-575.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="21" y="-564.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
-<text text-anchor="start" x="21" y="-553.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<polygon fill="#ffffff" stroke="#000000" points="13,-414.5 13,-812.5 196,-812.5 196,-414.5 13,-414.5"/>
+<text text-anchor="middle" x="104.5" y="-800.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
+<polyline fill="none" stroke="#000000" points="13,-793.5 196,-793.5 "/>
+<text text-anchor="start" x="21" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<text text-anchor="start" x="21" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
+<text text-anchor="start" x="21" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
+<text text-anchor="start" x="21" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
+<text text-anchor="start" x="21" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
+<text text-anchor="start" x="21" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
+<text text-anchor="start" x="21" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
+<text text-anchor="start" x="21" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="21" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="21" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
+<text text-anchor="start" x="21" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="21" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
+<text text-anchor="start" x="21" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
+<text text-anchor="start" x="21" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
+<text text-anchor="start" x="21" y="-627.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># deleter_</text>
+<polyline fill="none" stroke="#000000" points="13,-620.5 196,-620.5 "/>
+<text text-anchor="start" x="21" y="-608.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
+<text text-anchor="start" x="21" y="-597.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
+<text text-anchor="start" x="21" y="-586.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="21" y="-575.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
+<text text-anchor="start" x="21" y="-564.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="21" y="-553.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
 <text text-anchor="start" x="21" y="-542.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
 <text text-anchor="start" x="21" y="-531.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="21" y="-520.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="21" y="-520.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
 <text text-anchor="start" x="21" y="-509.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="21" y="-498.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="21" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="21" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="21" y="-465.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
-<text text-anchor="start" x="21" y="-454.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="21" y="-443.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="21" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
-<text text-anchor="start" x="21" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
-<text text-anchor="start" x="21" y="-410.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="21" y="-498.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="21" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="21" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
+<text text-anchor="start" x="21" y="-465.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="21" y="-454.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="21" y="-443.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
+<text text-anchor="start" x="21" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
+<text text-anchor="start" x="21" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node2 -->
 <g id="edge3" class="edge">
 <title>Node3&#45;&gt;Node2</title>
-<path fill="none" stroke="#191970" d="M104.5,-392.8999C104.5,-383.6327 104.5,-374.8995 104.5,-366.9342"/>
-<polygon fill="none" stroke="#191970" points="101.0001,-393.1543 104.5,-403.1543 108.0001,-393.1543 101.0001,-393.1543"/>
+<path fill="none" stroke="#191970" d="M104.5,-403.8341C104.5,-394.5137 104.5,-385.6751 104.5,-377.5365"/>
+<polygon fill="none" stroke="#191970" points="101.0001,-404.1263 104.5,-414.1263 108.0001,-404.1264 101.0001,-404.1263"/>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DictDocNode-members.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DictDocNode-members.html
index 0ff686317..d25d98392 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DictDocNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DictDocNode-members.html
@@ -99,18 +99,19 @@ $(function() {
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a0d492efee331e2239a093f4b2017c10f">ref_counter_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a55549a6c23987890246248682560a03d">RefCounterType</a> typedef</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#ad94d79729ac85aa7c976e23d39066383">RuntimeTypeIndex</a>()</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</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_1script_1_1printer_1_1ExprDocNode.html#a234d665c202a31c9ded07695673b8625">TVM_DECLARE_BASE_OBJECT_INFO</a>(ExprDocNode, DocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html">tvm::script::printer::ExprDocNode</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a78585f033948da5d1a4121aa7b969c47">tvm::script::printer::DocNode::TVM_DECLARE_BASE_OBJECT_INFO</a>(DocNode, Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DictDocNode.html#ad8716ad286e0b7822d11c55514982432">TVM_DECLARE_FINAL_OBJECT_INFO</a>(DictDocNode, ExprDocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DictDocNode.html">tvm::script::printer::DictDocNode</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a481f01923b14e1851ebd38506e9c66ea">type_index</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a4bfc2586cb55f2af47728187b3256255">type_index_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a817ba6c23b7ee1821c48a75edf255a30">TypeIndex2Key</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6ee32a02dd44257da105fbbe5d9c8622">TypeIndex2KeyHash</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6841f97e06e6614dd7e82c6dd41b818a">TypeKey2Index</a>(const std::string &amp;key)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#afd548730a6139d19fe24473ad66026d7">unique</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DictDocNode.html#a08d71431d889cd4588d57c06c12140c4">values</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DictDocNode.html">tvm::script::printer::DictDocNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DictDocNode.html#aba631f46a162ffe0d89ee50d2c38dcc5">VisitAttrs</a>(AttrVisitor *v)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DictDocNode.html">tvm::script::printer::DictDocNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a6202cee16104155937f3e64c703f6885">~DocNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">source_paths</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html#a234d665c202a31c9ded07695673b8625">TVM_DECLARE_BASE_OBJECT_INFO</a>(ExprDocNode, DocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html">tvm::script::printer::ExprDocNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a78585f033948da5d1a4121aa7b969c47">tvm::script::printer::DocNode::TVM_DECLARE_BASE_OBJECT_INFO</a>(DocNode, Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DictDocNode.html#ad8716ad286e0b7822d11c55514982432">TVM_DECLARE_FINAL_OBJECT_INFO</a>(DictDocNode, ExprDocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DictDocNode.html">tvm::script::printer::DictDocNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a481f01923b14e1851ebd38506e9c66ea">type_index</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a4bfc2586cb55f2af47728187b3256255">type_index_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a817ba6c23b7ee1821c48a75edf255a30">TypeIndex2Key</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6ee32a02dd44257da105fbbe5d9c8622">TypeIndex2KeyHash</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6841f97e06e6614dd7e82c6dd41b818a">TypeKey2Index</a>(const std::string &amp;key)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#afd548730a6139d19fe24473ad66026d7">unique</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DictDocNode.html#a08d71431d889cd4588d57c06c12140c4">values</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DictDocNode.html">tvm::script::printer::DictDocNode</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DictDocNode.html#aba631f46a162ffe0d89ee50d2c38dcc5">VisitAttrs</a>(AttrVisitor *v)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DictDocNode.html">tvm::script::printer::DictDocNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a6202cee16104155937f3e64c703f6885">~DocNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DictDocNode.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DictDocNode.html
index 0964a7a42..d0c97c920 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DictDocNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DictDocNode.html
@@ -79,13 +79,13 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::script::printer::DictDocNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1DictDocNode__inherit__graph.svg" width="290" height="1110"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1DictDocNode__inherit__graph.svg" width="290" height="1124"><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::script::printer::DictDocNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1DictDocNode__coll__graph.svg" width="560" height="1375"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1DictDocNode__coll__graph.svg" width="646" height="1998"><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">
@@ -150,6 +150,10 @@ Public Attributes</h2></td></tr>
 <tr class="memitem:a08d71431d889cd4588d57c06c12140c4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Array.html">Array</a>&lt; <a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDoc.html">ExprDoc</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1DictDocNode.html#a08d71431d889cd4588d57c06c12140c4">values</a></td></tr>
 <tr class="memdesc:a08d71431d889cd4588d57c06c12140c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Values of dictionary.  <a href="#a08d71431d889cd4588d57c06c12140c4">More...</a><br /></td></tr>
 <tr class="separator:a08d71431d889cd4588d57c06c12140c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode')"><img src="closed.png" alt="-"/>&#160;Public Attributes inherited from <a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td></tr>
+<tr class="memitem:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Array.html">Array</a>&lt; <a class="el" href="classtvm_1_1ObjectPath.html">ObjectPath</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">source_paths</a></td></tr>
+<tr class="memdesc:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="mdescLeft">&#160;</td><td class="mdescRight">The list of object paths of the source IR node.  <a href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">More...</a><br /></td></tr>
+<tr class="separator:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
 Static Public Attributes</h2></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DictDocNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DictDocNode__coll__graph.svg
index b081fba3e..4058eff1a 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DictDocNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DictDocNode__coll__graph.svg
@@ -4,223 +4,260 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: tvm::script::printer::DictDocNode Pages: 1 -->
-<svg width="420pt" height="1031pt"
- viewBox="0.00 0.00 419.50 1031.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 1027)">
+<svg width="484pt" height="1498pt"
+ viewBox="0.00 0.00 484.00 1498.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 1494)">
 <title>tvm::script::printer::DictDocNode</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1027 415.5,-1027 415.5,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1494 480,-1494 480,4 -4,4"/>
 <!-- Node4 -->
 <g id="node1" class="node">
 <title>Node4</title>
-<polygon fill="#bfbfbf" stroke="#000000" points="121,-.5 121,-79.5 330,-79.5 330,-.5 121,-.5"/>
-<text text-anchor="start" x="129" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="225.5" y="-56.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DictDocNode</text>
-<polyline fill="none" stroke="#000000" points="121,-49.5 330,-49.5 "/>
-<text text-anchor="start" x="129" y="-37.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="121,-30.5 330,-30.5 "/>
-<text text-anchor="start" x="129" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="129" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_FINAL_OBJECT_INFO()</text>
+<polygon fill="#bfbfbf" stroke="#000000" points="243,-.5 243,-79.5 452,-79.5 452,-.5 243,-.5"/>
+<text text-anchor="start" x="251" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="347.5" y="-56.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DictDocNode</text>
+<polyline fill="none" stroke="#000000" points="243,-49.5 452,-49.5 "/>
+<text text-anchor="start" x="251" y="-37.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="243,-30.5 452,-30.5 "/>
+<text text-anchor="start" x="251" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="251" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_FINAL_OBJECT_INFO()</text>
 </g>
 <!-- Node5 -->
 <g id="node2" class="node">
 <title>Node5</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html" target="_top" xlink:title="The base class of expression doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="32,-171.5 32,-294.5 239,-294.5 239,-171.5 32,-171.5"/>
-<text text-anchor="start" x="40" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="135.5" y="-271.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDocNode</text>
-<polyline fill="none" stroke="#000000" points="32,-264.5 239,-264.5 "/>
-<text text-anchor="start" x="40" y="-252.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="32,-245.5 239,-245.5 "/>
-<text text-anchor="start" x="40" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Attr()</text>
-<text text-anchor="start" x="40" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator[]()</text>
-<text text-anchor="start" x="40" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Call()</text>
-<text text-anchor="start" x="40" y="-200.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Call()</text>
-<text text-anchor="start" x="40" y="-189.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="40" y="-178.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
+<polygon fill="#ffffff" stroke="#000000" points="178,-117.5 178,-240.5 385,-240.5 385,-117.5 178,-117.5"/>
+<text text-anchor="start" x="186" y="-228.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="281.5" y="-217.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDocNode</text>
+<polyline fill="none" stroke="#000000" points="178,-210.5 385,-210.5 "/>
+<text text-anchor="start" x="186" y="-198.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="178,-191.5 385,-191.5 "/>
+<text text-anchor="start" x="186" y="-179.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Attr()</text>
+<text text-anchor="start" x="186" y="-168.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator[]()</text>
+<text text-anchor="start" x="186" y="-157.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Call()</text>
+<text text-anchor="start" x="186" y="-146.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Call()</text>
+<text text-anchor="start" x="186" y="-135.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="186" y="-124.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node4 -->
 <g id="edge1" class="edge">
 <title>Node5&#45;&gt;Node4</title>
-<path fill="none" stroke="#191970" d="M168.5556,-162.114C181.5095,-134.3352 195.8869,-103.5036 206.9543,-79.7703"/>
-<polygon fill="none" stroke="#191970" points="165.2783,-160.8607 164.224,-171.403 171.6224,-163.8191 165.2783,-160.8607"/>
+<path fill="none" stroke="#191970" d="M315.2529,-107.9143C319.8691,-98.1924 324.4656,-88.5118 328.6809,-79.6342"/>
+<polygon fill="none" stroke="#191970" points="311.9605,-106.6884 310.8329,-117.2231 318.2839,-109.6909 311.9605,-106.6884"/>
 </g>
 <!-- Node6 -->
 <g id="node3" class="node">
 <title>Node6</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1script_1_1printer_1_1DocNode.html" target="_top" xlink:title="The base class of all Doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="26,-431.5 26,-521.5 233,-521.5 233,-431.5 26,-431.5"/>
-<text text-anchor="start" x="34" y="-509.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="129.5" y="-498.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
-<polyline fill="none" stroke="#000000" points="26,-491.5 233,-491.5 "/>
-<text text-anchor="start" x="34" y="-479.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="26,-472.5 233,-472.5 "/>
-<text text-anchor="start" x="34" y="-460.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="34" y="-449.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
-<text text-anchor="start" x="34" y="-438.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~DocNode()</text>
+<polygon fill="#ffffff" stroke="#000000" points="172,-299.5 172,-389.5 379,-389.5 379,-299.5 172,-299.5"/>
+<text text-anchor="start" x="180" y="-377.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="275.5" y="-366.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
+<polyline fill="none" stroke="#000000" points="172,-359.5 379,-359.5 "/>
+<text text-anchor="start" x="180" y="-347.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="172,-340.5 379,-340.5 "/>
+<text text-anchor="start" x="180" y="-328.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="180" y="-317.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
+<text text-anchor="start" x="180" y="-306.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~DocNode()</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node5 -->
 <g id="edge2" class="edge">
 <title>Node6&#45;&gt;Node5</title>
-<path fill="none" stroke="#191970" d="M130.868,-420.9805C131.7969,-383.2859 133.0257,-333.4159 133.9843,-294.5141"/>
-<polygon fill="none" stroke="#191970" points="127.362,-421.187 130.6145,-431.2702 134.3599,-421.3595 127.362,-421.187"/>
+<path fill="none" stroke="#191970" d="M277.5027,-289.2589C278.0686,-273.6506 278.6878,-256.569 279.2664,-240.6114"/>
+<polygon fill="none" stroke="#191970" points="274.0042,-289.1561 277.1395,-299.2764 280.9996,-289.4098 274.0042,-289.1561"/>
 </g>
 <!-- Node7 -->
 <g id="node4" class="node">
 <title>Node7</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers. ">
-<polygon fill="#ffffff" stroke="#000000" points="0,-635.5 0,-1022.5 183,-1022.5 183,-635.5 0,-635.5"/>
-<text text-anchor="middle" x="91.5" y="-1010.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
-<polyline fill="none" stroke="#000000" points="0,-1003.5 183,-1003.5 "/>
-<text text-anchor="start" x="8" y="-991.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<text text-anchor="start" x="8" y="-980.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
-<text text-anchor="start" x="8" y="-969.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
-<text text-anchor="start" x="8" y="-958.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
-<text text-anchor="start" x="8" y="-947.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
-<text text-anchor="start" x="8" y="-936.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
-<text text-anchor="start" x="8" y="-925.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
-<text text-anchor="start" x="8" y="-914.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="8" y="-903.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="8" y="-892.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
-<text text-anchor="start" x="8" y="-881.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="8" y="-870.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
-<text text-anchor="start" x="8" y="-859.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
-<text text-anchor="start" x="8" y="-848.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
-<polyline fill="none" stroke="#000000" points="0,-841.5 183,-841.5 "/>
-<text text-anchor="start" x="8" y="-829.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
-<text text-anchor="start" x="8" y="-818.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
-<text text-anchor="start" x="8" y="-807.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="8" y="-796.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
-<text text-anchor="start" x="8" y="-785.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
-<text text-anchor="start" x="8" y="-774.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="8" y="-763.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="8" y="-752.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="8" y="-741.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="8" y="-730.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="8" y="-719.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="8" y="-708.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="8" y="-697.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
-<text text-anchor="start" x="8" y="-686.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-675.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-664.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
-<text text-anchor="start" x="8" y="-653.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
-<text text-anchor="start" x="8" y="-642.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
+<polygon fill="#ffffff" stroke="#000000" points="0,-616.5 0,-1003.5 183,-1003.5 183,-616.5 0,-616.5"/>
+<text text-anchor="middle" x="91.5" y="-991.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
+<polyline fill="none" stroke="#000000" points="0,-984.5 183,-984.5 "/>
+<text text-anchor="start" x="8" y="-972.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<text text-anchor="start" x="8" y="-961.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
+<text text-anchor="start" x="8" y="-950.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-939.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-928.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
+<text text-anchor="start" x="8" y="-917.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-906.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
+<text text-anchor="start" x="8" y="-895.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-884.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="8" y="-873.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-862.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="8" y="-851.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
+<text text-anchor="start" x="8" y="-840.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
+<text text-anchor="start" x="8" y="-829.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
+<polyline fill="none" stroke="#000000" points="0,-822.5 183,-822.5 "/>
+<text text-anchor="start" x="8" y="-810.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
+<text text-anchor="start" x="8" y="-799.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-788.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-777.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-766.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="8" y="-755.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-744.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-733.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-722.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="8" y="-711.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="8" y="-700.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-689.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-678.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-667.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-656.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-645.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
+<text text-anchor="start" x="8" y="-634.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
+<text text-anchor="start" x="8" y="-623.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node6 -->
 <g id="edge3" class="edge">
 <title>Node7&#45;&gt;Node6</title>
-<path fill="none" stroke="#191970" d="M113.4353,-625.5209C117.6422,-586.4971 121.6523,-549.2982 124.6137,-521.8272"/>
-<polygon fill="none" stroke="#191970" points="109.9541,-625.1592 112.3621,-635.4767 116.9138,-625.9095 109.9541,-625.1592"/>
+<path fill="none" stroke="#191970" d="M171.7575,-606.9572C203.7584,-525.9984 237.6861,-440.165 257.7106,-389.5053"/>
+<polygon fill="none" stroke="#191970" points="168.4882,-605.7071 168.0671,-616.2935 174.9981,-608.2803 168.4882,-605.7071"/>
 </g>
 <!-- Node7&#45;&gt;Node7 -->
 <g id="edge4" class="edge">
 <title>Node7&#45;&gt;Node7</title>
-<path fill="none" stroke="#404040" d="M183.3625,-863.5649C194.0482,-857.1857 201,-845.6641 201,-829 201,-817.8038 197.8618,-808.929 192.5615,-802.3756"/>
-<polygon fill="none" stroke="#404040" points="192.4464,-802.2763 185.2907,-801.3836 183.3625,-794.4351 190.5182,-795.3277 192.4464,-802.2763"/>
-<text text-anchor="middle" x="227" y="-826.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M183.3625,-843.9248C194.0482,-837.6637 201,-826.3555 201,-810 201,-799.0112 197.8618,-790.3007 192.5615,-783.8687"/>
+<polygon fill="none" stroke="#404040" points="192.5184,-783.8322 185.3548,-783.0056 183.3625,-776.0752 190.5261,-776.9017 192.5184,-783.8322"/>
+<text text-anchor="middle" x="227" y="-807.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #deleter_</text>
 </g>
 <!-- Node8 -->
 <g id="node5" class="node">
 <title>Node8</title>
-<g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="{tvm::runtime::Array\l\&lt; tvm::script::printer\l::ExprDoc \&gt;\n||+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ operator=()\l+ operator=()\land 24 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="265,-138.5 265,-327.5 384,-327.5 384,-138.5 265,-138.5"/>
-<text text-anchor="start" x="273" y="-315.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="start" x="273" y="-304.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::script::printer</text>
-<text text-anchor="middle" x="324.5" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDoc &gt;</text>
-<polyline fill="none" stroke="#000000" points="265,-286.5 384,-286.5 "/>
-<text text-anchor="middle" x="324.5" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="265,-267.5 384,-267.5 "/>
-<text text-anchor="start" x="273" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="273" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="273" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="273" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="273" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="273" y="-200.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="273" y="-189.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="273" y="-178.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="273" y="-167.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="273" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="273" y="-145.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
+<g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="{tvm::runtime::Array\l\&lt; tvm::ObjectPath \&gt;\n||+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ operator=()\l+ operator=()\land 24 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="271,-721 271,-899 388,-899 388,-721 271,-721"/>
+<text text-anchor="start" x="279" y="-887" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="329.5" y="-876" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::ObjectPath &gt;</text>
+<polyline fill="none" stroke="#000000" points="271,-869 388,-869 "/>
+<text text-anchor="middle" x="329.5" y="-857" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="271,-850 388,-850 "/>
+<text text-anchor="start" x="279" y="-838" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-827" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-816" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-805" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-794" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-783" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-761" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-750" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="279" y="-739" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="279" y="-728" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
 </a>
 </g>
 </g>
-<!-- Node8&#45;&gt;Node4 -->
+<!-- Node8&#45;&gt;Node6 -->
 <g id="edge5" class="edge">
-<title>Node8&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M276.0151,-138.4789C267.5043,-121.8872 258.9535,-105.2175 251.3697,-90.4328"/>
-<polygon fill="none" stroke="#404040" points="251.2523,-90.204 244.9548,-86.691 245.7754,-79.5267 252.0729,-83.0397 251.2523,-90.204"/>
-<text text-anchor="middle" x="288.5" y="-112" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +values</text>
-<text text-anchor="middle" x="288.5" y="-101" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+keys</text>
+<title>Node8&#45;&gt;Node6</title>
+<path fill="none" stroke="#404040" d="M299.9307,-720.7937C288.979,-683.3233 277.9151,-638.9962 272.5,-598 261.4419,-514.2827 270.5069,-492.4209 272.5,-408 272.5484,-405.9519 272.6055,-403.867 272.6698,-401.7613"/>
+<polygon fill="none" stroke="#404040" points="272.6763,-401.5791 268.8941,-395.4394 273.1069,-389.5868 276.889,-395.7265 272.6763,-401.5791"/>
+<text text-anchor="middle" x="310.5" y="-500.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +source_paths</text>
 </g>
 <!-- Node9 -->
 <g id="node6" class="node">
 <title>Node9</title>
 <g id="a_node6"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference. ">
-<polygon fill="#ffffff" stroke="#000000" points="266.5,-365.5 266.5,-587.5 400.5,-587.5 400.5,-365.5 266.5,-365.5"/>
-<text text-anchor="middle" x="333.5" y="-575.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="#000000" points="266.5,-568.5 400.5,-568.5 "/>
-<text text-anchor="start" x="274.5" y="-556.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
-<polyline fill="none" stroke="#000000" points="266.5,-549.5 400.5,-549.5 "/>
-<text text-anchor="start" x="274.5" y="-537.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
-<text text-anchor="start" x="274.5" y="-526.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
-<text text-anchor="start" x="274.5" y="-515.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
-<text text-anchor="start" x="274.5" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
-<text text-anchor="start" x="274.5" y="-493.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
-<text text-anchor="start" x="274.5" y="-482.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
-<text text-anchor="start" x="274.5" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
-<text text-anchor="start" x="274.5" y="-460.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
-<text text-anchor="start" x="274.5" y="-449.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="274.5" y="-438.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
-<text text-anchor="start" x="274.5" y="-427.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
-<text text-anchor="start" x="274.5" y="-416.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
-<text text-anchor="start" x="274.5" y="-405.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
-<text text-anchor="start" x="274.5" y="-394.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
-<text text-anchor="start" x="274.5" y="-383.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="274.5" y="-372.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
+<polygon fill="#ffffff" stroke="#000000" points="305.5,-1041.5 305.5,-1263.5 439.5,-1263.5 439.5,-1041.5 305.5,-1041.5"/>
+<text text-anchor="middle" x="372.5" y="-1251.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="#000000" points="305.5,-1244.5 439.5,-1244.5 "/>
+<text text-anchor="start" x="313.5" y="-1232.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
+<polyline fill="none" stroke="#000000" points="305.5,-1225.5 439.5,-1225.5 "/>
+<text text-anchor="start" x="313.5" y="-1213.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="313.5" y="-1202.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="313.5" y="-1191.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
+<text text-anchor="start" x="313.5" y="-1180.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
+<text text-anchor="start" x="313.5" y="-1169.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
+<text text-anchor="start" x="313.5" y="-1158.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
+<text text-anchor="start" x="313.5" y="-1147.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
+<text text-anchor="start" x="313.5" y="-1136.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="313.5" y="-1125.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="313.5" y="-1114.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="313.5" y="-1103.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
+<text text-anchor="start" x="313.5" y="-1092.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
+<text text-anchor="start" x="313.5" y="-1081.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
+<text text-anchor="start" x="313.5" y="-1070.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
+<text text-anchor="start" x="313.5" y="-1059.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="313.5" y="-1048.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node9&#45;&gt;Node8 -->
 <g id="edge6" class="edge">
 <title>Node9&#45;&gt;Node8</title>
-<path fill="none" stroke="#191970" d="M329.0211,-355.3207C328.676,-345.9853 328.3308,-336.6454 327.9936,-327.5206"/>
-<polygon fill="none" stroke="#191970" points="325.528,-355.5746 329.3951,-365.4384 332.5232,-355.316 325.528,-355.5746"/>
+<path fill="none" stroke="#191970" d="M357.2748,-1031.2298C351.8152,-987.7434 345.764,-939.5445 340.7071,-899.2656"/>
+<polygon fill="none" stroke="#191970" points="353.8206,-1031.814 358.5391,-1041.3001 360.7661,-1030.9419 353.8206,-1031.814"/>
+</g>
+<!-- Node11 -->
+<g id="node8" class="node">
+<title>Node11</title>
+<g id="a_node8"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="{tvm::runtime::Array\l\&lt; tvm::script::printer\l::ExprDoc \&gt;\n||+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ operator=()\l+ operator=()\land 24 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="357,-408.5 357,-597.5 476,-597.5 476,-408.5 357,-408.5"/>
+<text text-anchor="start" x="365" y="-585.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="start" x="365" y="-574.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::script::printer</text>
+<text text-anchor="middle" x="416.5" y="-563.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDoc &gt;</text>
+<polyline fill="none" stroke="#000000" points="357,-556.5 476,-556.5 "/>
+<text text-anchor="middle" x="416.5" y="-544.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="357,-537.5 476,-537.5 "/>
+<text text-anchor="start" x="365" y="-525.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="365" y="-514.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="365" y="-503.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="365" y="-492.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="365" y="-481.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="365" y="-470.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="365" y="-459.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="365" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="365" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="365" y="-426.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="365" y="-415.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
+</a>
+</g>
+</g>
+<!-- Node9&#45;&gt;Node11 -->
+<g id="edge9" class="edge">
+<title>Node9&#45;&gt;Node11</title>
+<path fill="none" stroke="#191970" d="M394.2291,-1031.2313C395.4742,-1022.0351 396.5879,-1012.8811 397.5,-1004 411.9731,-863.0809 415.7231,-698.85 416.5346,-597.9029"/>
+<polygon fill="none" stroke="#191970" points="390.7517,-1030.8268 392.8297,-1041.2158 397.6839,-1031.7985 390.7517,-1030.8268"/>
 </g>
 <!-- Node10 -->
 <g id="node7" class="node">
 <title>Node10</title>
 <g id="a_node7"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title="{tvm::runtime::ObjectPtr\l\&lt; tvm::runtime::Object \&gt;\n||+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ~ObjectPtr()\l+ swap()\l+ get()\l+ operator&#45;\&gt;()\land 11 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="271.5,-740 271.5,-918 411.5,-918 411.5,-740 271.5,-740"/>
-<text text-anchor="start" x="279.5" y="-906" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="341.5" y="-895" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="#000000" points="271.5,-888 411.5,-888 "/>
-<text text-anchor="middle" x="341.5" y="-876" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="271.5,-869 411.5,-869 "/>
-<text text-anchor="start" x="279.5" y="-857" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="279.5" y="-846" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="279.5" y="-835" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="279.5" y="-824" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="279.5" y="-813" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="279.5" y="-802" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="279.5" y="-791" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="279.5" y="-780" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ swap()</text>
-<text text-anchor="start" x="279.5" y="-769" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
-<text text-anchor="start" x="279.5" y="-758" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="279.5" y="-747" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 11 more...</text>
+<polygon fill="#ffffff" stroke="#000000" points="302.5,-1311.5 302.5,-1489.5 442.5,-1489.5 442.5,-1311.5 302.5,-1311.5"/>
+<text text-anchor="start" x="310.5" y="-1477.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="372.5" y="-1466.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="#000000" points="302.5,-1459.5 442.5,-1459.5 "/>
+<text text-anchor="middle" x="372.5" y="-1447.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="302.5,-1440.5 442.5,-1440.5 "/>
+<text text-anchor="start" x="310.5" y="-1428.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="310.5" y="-1417.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="310.5" y="-1406.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="310.5" y="-1395.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="310.5" y="-1384.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="310.5" y="-1373.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="310.5" y="-1362.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="310.5" y="-1351.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ swap()</text>
+<text text-anchor="start" x="310.5" y="-1340.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="310.5" y="-1329.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="310.5" y="-1318.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 11 more...</text>
 </a>
 </g>
 </g>
 <!-- Node10&#45;&gt;Node9 -->
 <g id="edge7" class="edge">
 <title>Node10&#45;&gt;Node9</title>
-<path fill="none" stroke="#404040" d="M339.4709,-739.5937C338.5084,-697.1846 337.343,-645.8323 336.2982,-599.7942"/>
-<polygon fill="none" stroke="#404040" points="336.2935,-599.5864 332.1584,-593.6788 336.0212,-587.5895 340.1563,-593.4972 336.2935,-599.5864"/>
-<text text-anchor="middle" x="357" y="-609" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #data_</text>
+<path fill="none" stroke="#404040" d="M372.5,-1311.3167C372.5,-1299.8765 372.5,-1288.0062 372.5,-1276.1402"/>
+<polygon fill="none" stroke="#404040" points="372.5001,-1275.7944 368.5,-1269.7944 372.5,-1263.7944 376.5,-1269.7943 372.5001,-1275.7944"/>
+<text text-anchor="middle" x="392" y="-1285" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #data_</text>
+</g>
+<!-- Node11&#45;&gt;Node4 -->
+<g id="edge8" class="edge">
+<title>Node11&#45;&gt;Node4</title>
+<path fill="none" stroke="#404040" d="M423.7502,-408.3047C426.8825,-328.7296 424.4425,-212.9528 394.5,-117 391.6789,-107.9596 387.5682,-98.8939 382.9346,-90.3192"/>
+<polygon fill="none" stroke="#404040" points="382.8394,-90.1541 376.3765,-86.9555 376.8434,-79.7595 383.3063,-82.9581 382.8394,-90.1541"/>
+<text text-anchor="middle" x="443.5" y="-273" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +values</text>
+<text text-anchor="middle" x="443.5" y="-262" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+keys</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DictDocNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DictDocNode__inherit__graph.svg
index 3c62b5093..0e12878dc 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DictDocNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DictDocNode__inherit__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: tvm::script::printer::DictDocNode Pages: 1 -->
-<svg width="217pt" height="832pt"
- viewBox="0.00 0.00 217.00 832.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 828)">
+<svg width="217pt" height="843pt"
+ viewBox="0.00 0.00 217.00 843.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 839)">
 <title>tvm::script::printer::DictDocNode</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-828 213,-828 213,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-839 213,-839 213,4 -4,4"/>
 <!-- Node0 -->
 <g id="node1" class="node">
 <title>Node0</title>
@@ -52,10 +52,11 @@
 <g id="node3" class="node">
 <title>Node2</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1script_1_1printer_1_1DocNode.html" target="_top" xlink:title="The base class of all Doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="1,-298.5 1,-388.5 208,-388.5 208,-298.5 1,-298.5"/>
-<text text-anchor="start" x="9" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="104.5" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
-<polyline fill="none" stroke="#000000" points="1,-358.5 208,-358.5 "/>
+<polygon fill="#ffffff" stroke="#000000" points="1,-298.5 1,-399.5 208,-399.5 208,-298.5 1,-298.5"/>
+<text text-anchor="start" x="9" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="104.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
+<polyline fill="none" stroke="#000000" points="1,-369.5 208,-369.5 "/>
+<text text-anchor="start" x="9" y="-357.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ source_paths</text>
 <text text-anchor="start" x="9" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
 <polyline fill="none" stroke="#000000" points="1,-339.5 208,-339.5 "/>
 <text text-anchor="start" x="9" y="-327.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
@@ -67,58 +68,58 @@
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge2" class="edge">
 <title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="#191970" d="M104.5,-288.4136C104.5,-279.665 104.5,-270.5665 104.5,-261.6783"/>
-<polygon fill="none" stroke="#191970" points="101.0001,-288.4894 104.5,-298.4894 108.0001,-288.4895 101.0001,-288.4894"/>
+<path fill="none" stroke="#191970" d="M104.5,-288.0751C104.5,-279.3766 104.5,-270.4225 104.5,-261.709"/>
+<polygon fill="none" stroke="#191970" points="101.0001,-288.1394 104.5,-298.1394 108.0001,-288.1394 101.0001,-288.1394"/>
 </g>
 <!-- Node3 -->
 <g id="node4" class="node">
 <title>Node3</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers. ">
-<polygon fill="#ffffff" stroke="#000000" points="13,-425.5 13,-823.5 196,-823.5 196,-425.5 13,-425.5"/>
-<text text-anchor="middle" x="104.5" y="-811.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
-<polyline fill="none" stroke="#000000" points="13,-804.5 196,-804.5 "/>
-<text text-anchor="start" x="21" y="-792.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<text text-anchor="start" x="21" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
-<text text-anchor="start" x="21" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
-<text text-anchor="start" x="21" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
-<text text-anchor="start" x="21" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
-<text text-anchor="start" x="21" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
-<text text-anchor="start" x="21" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
-<text text-anchor="start" x="21" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="21" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="21" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
-<text text-anchor="start" x="21" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="21" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
-<text text-anchor="start" x="21" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
-<text text-anchor="start" x="21" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
-<text text-anchor="start" x="21" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># deleter_</text>
-<polyline fill="none" stroke="#000000" points="13,-631.5 196,-631.5 "/>
-<text text-anchor="start" x="21" y="-619.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
-<text text-anchor="start" x="21" y="-608.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
-<text text-anchor="start" x="21" y="-597.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="21" y="-586.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
-<text text-anchor="start" x="21" y="-575.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<polygon fill="#ffffff" stroke="#000000" points="13,-436.5 13,-834.5 196,-834.5 196,-436.5 13,-436.5"/>
+<text text-anchor="middle" x="104.5" y="-822.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
+<polyline fill="none" stroke="#000000" points="13,-815.5 196,-815.5 "/>
+<text text-anchor="start" x="21" y="-803.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<text text-anchor="start" x="21" y="-792.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
+<text text-anchor="start" x="21" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
+<text text-anchor="start" x="21" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
+<text text-anchor="start" x="21" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
+<text text-anchor="start" x="21" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
+<text text-anchor="start" x="21" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
+<text text-anchor="start" x="21" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="21" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="21" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
+<text text-anchor="start" x="21" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="21" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
+<text text-anchor="start" x="21" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
+<text text-anchor="start" x="21" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
+<text text-anchor="start" x="21" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># deleter_</text>
+<polyline fill="none" stroke="#000000" points="13,-642.5 196,-642.5 "/>
+<text text-anchor="start" x="21" y="-630.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
+<text text-anchor="start" x="21" y="-619.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
+<text text-anchor="start" x="21" y="-608.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="21" y="-597.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
+<text text-anchor="start" x="21" y="-586.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="21" y="-575.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
 <text text-anchor="start" x="21" y="-564.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
 <text text-anchor="start" x="21" y="-553.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="21" y="-542.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="21" y="-542.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
 <text text-anchor="start" x="21" y="-531.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="21" y="-520.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="21" y="-509.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="21" y="-498.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="21" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
-<text text-anchor="start" x="21" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="21" y="-465.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="21" y="-454.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
-<text text-anchor="start" x="21" y="-443.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
-<text text-anchor="start" x="21" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="21" y="-520.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="21" y="-509.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="21" y="-498.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
+<text text-anchor="start" x="21" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="21" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="21" y="-465.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
+<text text-anchor="start" x="21" y="-454.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
+<text text-anchor="start" x="21" y="-443.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node2 -->
 <g id="edge3" class="edge">
 <title>Node3&#45;&gt;Node2</title>
-<path fill="none" stroke="#191970" d="M104.5,-414.8999C104.5,-405.6327 104.5,-396.8995 104.5,-388.9342"/>
-<polygon fill="none" stroke="#191970" points="101.0001,-415.1543 104.5,-425.1543 108.0001,-415.1543 101.0001,-415.1543"/>
+<path fill="none" stroke="#191970" d="M104.5,-425.8341C104.5,-416.5137 104.5,-407.6751 104.5,-399.5365"/>
+<polygon fill="none" stroke="#191970" points="101.0001,-426.1263 104.5,-436.1263 108.0001,-426.1264 101.0001,-426.1263"/>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode-members.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode-members.html
index f5a838cc8..ec838848e 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode-members.html
@@ -94,15 +94,16 @@ $(function() {
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a0d492efee331e2239a093f4b2017c10f">ref_counter_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a55549a6c23987890246248682560a03d">RefCounterType</a> typedef</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#ad94d79729ac85aa7c976e23d39066383">RuntimeTypeIndex</a>()</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a78585f033948da5d1a4121aa7b969c47">TVM_DECLARE_BASE_OBJECT_INFO</a>(DocNode, Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a481f01923b14e1851ebd38506e9c66ea">type_index</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a4bfc2586cb55f2af47728187b3256255">type_index_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a817ba6c23b7ee1821c48a75edf255a30">TypeIndex2Key</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6ee32a02dd44257da105fbbe5d9c8622">TypeIndex2KeyHash</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6841f97e06e6614dd7e82c6dd41b818a">TypeKey2Index</a>(const std::string &amp;key)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#afd548730a6139d19fe24473ad66026d7">unique</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a7ea3837303b6d2ef65e6b7653af62ef6">VisitAttrs</a>(AttrVisitor *v)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a6202cee16104155937f3e64c703f6885">~DocNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">source_paths</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a78585f033948da5d1a4121aa7b969c47">TVM_DECLARE_BASE_OBJECT_INFO</a>(DocNode, Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a481f01923b14e1851ebd38506e9c66ea">type_index</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a4bfc2586cb55f2af47728187b3256255">type_index_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a817ba6c23b7ee1821c48a75edf255a30">TypeIndex2Key</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6ee32a02dd44257da105fbbe5d9c8622">TypeIndex2KeyHash</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6841f97e06e6614dd7e82c6dd41b818a">TypeKey2Index</a>(const std::string &amp;key)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#afd548730a6139d19fe24473ad66026d7">unique</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a7ea3837303b6d2ef65e6b7653af62ef6">VisitAttrs</a>(AttrVisitor *v)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a6202cee16104155937f3e64c703f6885">~DocNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode.html
index 83145c1ef..b49deca14 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode.html
@@ -64,6 +64,7 @@ $(function() {
 <div class="header">
   <div class="summary">
 <a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Public Attributes</a> &#124;
 <a href="#pub-static-attribs">Static Public Attributes</a> &#124;
 <a href="classtvm_1_1script_1_1printer_1_1DocNode-members.html">List of all members</a>  </div>
   <div class="headertitle">
@@ -78,13 +79,13 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::script::printer::DocNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1DocNode__inherit__graph.svg" width="6040" height="1154"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1DocNode__inherit__graph.svg" width="6040" height="1168"><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::script::printer::DocNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1DocNode__coll__graph.svg" width="364" height="699"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1DocNode__coll__graph.svg" width="544" height="1360"><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">
@@ -119,6 +120,12 @@ Public Member Functions</h2></td></tr>
 <tr class="memitem:ae341e561272ff43cdcbc927bc29ac50d inherit pub_methods_classtvm_1_1runtime_1_1Object"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Object.html">Object</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1runtime_1_1Object.html#ae341e561272ff43cdcbc927bc29ac50d">operator=</a> (<a class="el" href="classtvm_1_1runtime_1_1Object.html">Object</a> &amp;&amp;other)</td></tr>
 <tr class="separator:ae341e561272ff43cdcbc927bc29ac50d inherit pub_methods_classtvm_1_1runtime_1_1Object"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:a29e21c8f39639d1d30697971267847a8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Array.html">Array</a>&lt; <a class="el" href="classtvm_1_1ObjectPath.html">ObjectPath</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">source_paths</a></td></tr>
+<tr class="memdesc:a29e21c8f39639d1d30697971267847a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">The list of object paths of the source IR node.  <a href="#a29e21c8f39639d1d30697971267847a8">More...</a><br /></td></tr>
+<tr class="separator:a29e21c8f39639d1d30697971267847a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
 Static Public Attributes</h2></td></tr>
 <tr class="memitem:af314e162f31c64a459652dba771778c5"><td class="memItemLeft" align="right" valign="top">static constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#af314e162f31c64a459652dba771778c5">_type_key</a> = &quot;script.printer.Doc&quot;</td></tr>
@@ -291,6 +298,31 @@ Additional Inherited Members</h2></td></tr>
 </table>
 </div><div class="memdoc">
 
+</div>
+</div>
+<a id="a29e21c8f39639d1d30697971267847a8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a29e21c8f39639d1d30697971267847a8">&#9670;&nbsp;</a></span>source_paths</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classtvm_1_1runtime_1_1Array.html">Array</a>&lt;<a class="el" href="classtvm_1_1ObjectPath.html">ObjectPath</a>&gt; tvm::script::printer::DocNode::source_paths</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">mutable</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>The list of object paths of the source IR node. </p>
+<p>This is used to trace back to the IR node position where this <a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode. ">Doc</a> is generated, in order to position the diagnostic message. </p>
+
 </div>
 </div>
 <hr/>The documentation for this class was generated from the following file:<ul>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode__coll__graph.svg
index 07134f197..7165f0cd3 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode__coll__graph.svg
@@ -4,79 +4,175 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: tvm::script::printer::DocNode Pages: 1 -->
-<svg width="273pt" height="524pt"
- viewBox="0.00 0.00 273.00 524.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 520)">
+<svg width="408pt" height="1020pt"
+ viewBox="0.00 0.00 407.50 1020.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 1016)">
 <title>tvm::script::printer::DocNode</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-520 269,-520 269,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1016 403.5,-1016 403.5,4 -4,4"/>
 <!-- Node26 -->
 <g id="node1" class="node">
 <title>Node26</title>
-<polygon fill="#bfbfbf" stroke="#000000" points="0,-.5 0,-90.5 207,-90.5 207,-.5 0,-.5"/>
-<text text-anchor="start" x="8" y="-78.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="103.5" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
-<polyline fill="none" stroke="#000000" points="0,-60.5 207,-60.5 "/>
-<text text-anchor="start" x="8" y="-48.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="0,-41.5 207,-41.5 "/>
-<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
-<text text-anchor="start" x="8" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~DocNode()</text>
+<polygon fill="#bfbfbf" stroke="#000000" points="106,-.5 106,-90.5 313,-90.5 313,-.5 106,-.5"/>
+<text text-anchor="start" x="114" y="-78.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="209.5" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
+<polyline fill="none" stroke="#000000" points="106,-60.5 313,-60.5 "/>
+<text text-anchor="start" x="114" y="-48.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="106,-41.5 313,-41.5 "/>
+<text text-anchor="start" x="114" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="114" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
+<text text-anchor="start" x="114" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~DocNode()</text>
 </g>
 <!-- Node27 -->
 <g id="node2" class="node">
 <title>Node27</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers. ">
-<polygon fill="#ffffff" stroke="#000000" points="12,-128.5 12,-515.5 195,-515.5 195,-128.5 12,-128.5"/>
-<text text-anchor="middle" x="103.5" y="-503.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
-<polyline fill="none" stroke="#000000" points="12,-496.5 195,-496.5 "/>
-<text text-anchor="start" x="20" y="-484.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<text text-anchor="start" x="20" y="-473.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
-<text text-anchor="start" x="20" y="-462.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
-<text text-anchor="start" x="20" y="-451.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
-<text text-anchor="start" x="20" y="-440.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
-<text text-anchor="start" x="20" y="-429.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
-<text text-anchor="start" x="20" y="-418.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
-<text text-anchor="start" x="20" y="-407.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="20" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="20" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
-<text text-anchor="start" x="20" y="-374.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="20" y="-363.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
-<text text-anchor="start" x="20" y="-352.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
-<text text-anchor="start" x="20" y="-341.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
-<polyline fill="none" stroke="#000000" points="12,-334.5 195,-334.5 "/>
-<text text-anchor="start" x="20" y="-322.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
-<text text-anchor="start" x="20" y="-311.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
-<text text-anchor="start" x="20" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="20" y="-289.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
-<text text-anchor="start" x="20" y="-278.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
-<text text-anchor="start" x="20" y="-267.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-256.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-245.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-234.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="20" y="-223.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="20" y="-212.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="20" y="-201.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="20" y="-190.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
-<text text-anchor="start" x="20" y="-179.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="20" y="-168.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="20" y="-157.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
-<text text-anchor="start" x="20" y="-146.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
-<text text-anchor="start" x="20" y="-135.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
+<polygon fill="#ffffff" stroke="#000000" points="0,-138.5 0,-525.5 183,-525.5 183,-138.5 0,-138.5"/>
+<text text-anchor="middle" x="91.5" y="-513.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
+<polyline fill="none" stroke="#000000" points="0,-506.5 183,-506.5 "/>
+<text text-anchor="start" x="8" y="-494.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<text text-anchor="start" x="8" y="-483.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
+<text text-anchor="start" x="8" y="-472.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-461.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-450.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
+<text text-anchor="start" x="8" y="-439.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-428.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
+<text text-anchor="start" x="8" y="-417.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="8" y="-395.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-384.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="8" y="-373.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
+<text text-anchor="start" x="8" y="-362.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
+<text text-anchor="start" x="8" y="-351.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
+<polyline fill="none" stroke="#000000" points="0,-344.5 183,-344.5 "/>
+<text text-anchor="start" x="8" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
+<text text-anchor="start" x="8" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="8" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="8" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="8" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-200.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-189.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-178.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-167.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
+<text text-anchor="start" x="8" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
+<text text-anchor="start" x="8" y="-145.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node27&#45;&gt;Node26 -->
 <g id="edge1" class="edge">
 <title>Node27&#45;&gt;Node26</title>
-<path fill="none" stroke="#191970" d="M103.5,-118.4197C103.5,-108.5618 103.5,-99.2793 103.5,-90.8536"/>
-<polygon fill="none" stroke="#191970" points="100.0001,-118.4591 103.5,-128.4591 107.0001,-118.4592 100.0001,-118.4591"/>
+<path fill="none" stroke="#191970" d="M175.1721,-128.8471C180.907,-114.9228 186.2626,-101.9196 190.9586,-90.5179"/>
+<polygon fill="none" stroke="#191970" points="171.9239,-127.5433 171.3517,-138.1227 178.3964,-130.2092 171.9239,-127.5433"/>
 </g>
 <!-- Node27&#45;&gt;Node27 -->
 <g id="edge2" class="edge">
 <title>Node27&#45;&gt;Node27</title>
-<path fill="none" stroke="#404040" d="M195.3625,-355.9248C206.0482,-349.6637 213,-338.3555 213,-322 213,-311.0112 209.8618,-302.3007 204.5615,-295.8687"/>
-<polygon fill="none" stroke="#404040" points="204.5184,-295.8322 197.3548,-295.0056 195.3625,-288.0752 202.5261,-288.9017 204.5184,-295.8322"/>
-<text text-anchor="middle" x="239" y="-319.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M183.3625,-365.9248C194.0482,-359.6637 201,-348.3555 201,-332 201,-321.0112 197.8618,-312.3007 192.5615,-305.8687"/>
+<polygon fill="none" stroke="#404040" points="192.5184,-305.8322 185.3548,-305.0056 183.3625,-298.0752 190.5261,-298.9017 192.5184,-305.8322"/>
+<text text-anchor="middle" x="227" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #deleter_</text>
+</g>
+<!-- Node28 -->
+<g id="node3" class="node">
+<title>Node28</title>
+<g id="a_node3"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="{tvm::runtime::Array\l\&lt; tvm::ObjectPath \&gt;\n||+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ operator=()\l+ operator=()\land 24 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="271,-243 271,-421 388,-421 388,-243 271,-243"/>
+<text text-anchor="start" x="279" y="-409" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="329.5" y="-398" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::ObjectPath &gt;</text>
+<polyline fill="none" stroke="#000000" points="271,-391 388,-391 "/>
+<text text-anchor="middle" x="329.5" y="-379" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="271,-372 388,-372 "/>
+<text text-anchor="start" x="279" y="-360" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-349" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-316" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-305" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="279" y="-261" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="279" y="-250" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
+</a>
+</g>
+</g>
+<!-- Node28&#45;&gt;Node26 -->
+<g id="edge3" class="edge">
+<title>Node28&#45;&gt;Node26</title>
+<path fill="none" stroke="#404040" d="M302.5773,-242.7502C291.4913,-209.3462 277.6804,-171.415 262.5,-138 256.9905,-125.8726 250.3901,-113.2534 243.7474,-101.3773"/>
+<polygon fill="none" stroke="#404040" points="243.6112,-101.1384 237.1638,-97.9087 237.6653,-90.715 244.1127,-93.9447 243.6112,-101.1384"/>
+<text text-anchor="middle" x="291.5" y="-112" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +source_paths</text>
+</g>
+<!-- Node29 -->
+<g id="node4" class="node">
+<title>Node29</title>
+<g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference. ">
+<polygon fill="#ffffff" stroke="#000000" points="262.5,-563.5 262.5,-785.5 396.5,-785.5 396.5,-563.5 262.5,-563.5"/>
+<text text-anchor="middle" x="329.5" y="-773.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="#000000" points="262.5,-766.5 396.5,-766.5 "/>
+<text text-anchor="start" x="270.5" y="-754.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
+<polyline fill="none" stroke="#000000" points="262.5,-747.5 396.5,-747.5 "/>
+<text text-anchor="start" x="270.5" y="-735.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="270.5" y="-724.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="270.5" y="-713.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
+<text text-anchor="start" x="270.5" y="-702.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
+<text text-anchor="start" x="270.5" y="-691.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
+<text text-anchor="start" x="270.5" y="-680.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
+<text text-anchor="start" x="270.5" y="-669.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
+<text text-anchor="start" x="270.5" y="-658.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="270.5" y="-647.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="270.5" y="-636.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="270.5" y="-625.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
+<text text-anchor="start" x="270.5" y="-614.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
+<text text-anchor="start" x="270.5" y="-603.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
+<text text-anchor="start" x="270.5" y="-592.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
+<text text-anchor="start" x="270.5" y="-581.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="270.5" y="-570.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
+</a>
+</g>
+</g>
+<!-- Node29&#45;&gt;Node28 -->
+<g id="edge4" class="edge">
+<title>Node29&#45;&gt;Node28</title>
+<path fill="none" stroke="#191970" d="M329.5,-553.2298C329.5,-509.7434 329.5,-461.5445 329.5,-421.2656"/>
+<polygon fill="none" stroke="#191970" points="326.0001,-553.3 329.5,-563.3001 333.0001,-553.3001 326.0001,-553.3"/>
+</g>
+<!-- Node30 -->
+<g id="node5" class="node">
+<title>Node30</title>
+<g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title="{tvm::runtime::ObjectPtr\l\&lt; tvm::runtime::Object \&gt;\n||+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ~ObjectPtr()\l+ swap()\l+ get()\l+ operator&#45;\&gt;()\land 11 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="259.5,-833.5 259.5,-1011.5 399.5,-1011.5 399.5,-833.5 259.5,-833.5"/>
+<text text-anchor="start" x="267.5" y="-999.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="329.5" y="-988.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="#000000" points="259.5,-981.5 399.5,-981.5 "/>
+<text text-anchor="middle" x="329.5" y="-969.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="259.5,-962.5 399.5,-962.5 "/>
+<text text-anchor="start" x="267.5" y="-950.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="267.5" y="-939.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="267.5" y="-928.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="267.5" y="-917.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="267.5" y="-906.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="267.5" y="-895.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="267.5" y="-884.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="267.5" y="-873.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ swap()</text>
+<text text-anchor="start" x="267.5" y="-862.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="267.5" y="-851.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="267.5" y="-840.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 11 more...</text>
+</a>
+</g>
+</g>
+<!-- Node30&#45;&gt;Node29 -->
+<g id="edge5" class="edge">
+<title>Node30&#45;&gt;Node29</title>
+<path fill="none" stroke="#404040" d="M329.5,-833.3167C329.5,-821.8765 329.5,-810.0062 329.5,-798.1402"/>
+<polygon fill="none" stroke="#404040" points="329.5001,-797.7944 325.5,-791.7944 329.5,-785.7944 333.5,-791.7943 329.5001,-797.7944"/>
+<text text-anchor="middle" x="349" y="-807" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #data_</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode__inherit__graph.svg
index c9b24866d..de49422c9 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode__inherit__graph.svg
@@ -4,18 +4,19 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: tvm::script::printer::DocNode Pages: 1 -->
-<svg width="4530pt" height="865pt"
- viewBox="0.00 0.00 4530.00 865.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 861)">
+<svg width="4530pt" height="876pt"
+ viewBox="0.00 0.00 4530.00 876.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 872)">
 <title>tvm::script::printer::DocNode</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-861 4526,-861 4526,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-872 4526,-872 4526,4 -4,4"/>
 <!-- Node0 -->
 <g id="node1" class="node">
 <title>Node0</title>
-<polygon fill="#bfbfbf" stroke="#000000" points="2157,-331.5 2157,-421.5 2364,-421.5 2364,-331.5 2157,-331.5"/>
-<text text-anchor="start" x="2165" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="2260.5" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
-<polyline fill="none" stroke="#000000" points="2157,-391.5 2364,-391.5 "/>
+<polygon fill="#bfbfbf" stroke="#000000" points="2157,-331.5 2157,-432.5 2364,-432.5 2364,-331.5 2157,-331.5"/>
+<text text-anchor="start" x="2165" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="2260.5" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
+<polyline fill="none" stroke="#000000" points="2157,-402.5 2364,-402.5 "/>
+<text text-anchor="start" x="2165" y="-390.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ source_paths</text>
 <text text-anchor="start" x="2165" y="-379.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
 <polyline fill="none" stroke="#000000" points="2157,-372.5 2364,-372.5 "/>
 <text text-anchor="start" x="2165" y="-360.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
@@ -44,8 +45,8 @@
 <!-- Node0&#45;&gt;Node2 -->
 <g id="edge2" class="edge">
 <title>Node0&#45;&gt;Node2</title>
-<path fill="none" stroke="#191970" d="M2147.0509,-360.5549C1947.3398,-332.4858 1535.9403,-274.6642 1343.2916,-247.5878"/>
-<polygon fill="none" stroke="#191970" points="2146.5925,-364.0248 2156.9823,-361.9508 2147.5668,-357.0929 2146.5925,-364.0248"/>
+<path fill="none" stroke="#191970" d="M2147.0509,-365.4438C1947.3398,-336.2989 1535.9403,-276.2611 1343.2916,-248.1469"/>
+<polygon fill="none" stroke="#191970" points="2146.5817,-368.9123 2156.9823,-366.8931 2147.5926,-361.9857 2146.5817,-368.9123"/>
 </g>
 <!-- Node13 -->
 <g id="node14" class="node">
@@ -68,8 +69,8 @@
 <!-- Node0&#45;&gt;Node13 -->
 <g id="edge13" class="edge">
 <title>Node0&#45;&gt;Node13</title>
-<path fill="none" stroke="#191970" d="M2218.757,-323.49C2209.9633,-312.3228 2200.6567,-300.5043 2191.7736,-289.2236"/>
-<polygon fill="none" stroke="#191970" points="2216.1196,-325.7982 2225.0561,-331.4894 2221.6192,-321.4675 2216.1196,-325.7982"/>
+<path fill="none" stroke="#191970" d="M2215.8453,-323.119C2207.386,-311.9647 2198.5558,-300.3214 2190.1601,-289.2509"/>
+<polygon fill="none" stroke="#191970" points="2213.0964,-325.2865 2221.9279,-331.1394 2218.6739,-321.0566 2213.0964,-325.2865"/>
 </g>
 <!-- Node14 -->
 <g id="node15" class="node">
@@ -90,8 +91,8 @@
 <!-- Node0&#45;&gt;Node14 -->
 <g id="edge14" class="edge">
 <title>Node0&#45;&gt;Node14</title>
-<path fill="none" stroke="#191970" d="M2302.6838,-323.4002C2314.4436,-308.5973 2327.1075,-292.6563 2338.4774,-278.3443"/>
-<polygon fill="none" stroke="#191970" points="2299.7374,-321.4824 2296.2575,-331.4894 2305.2183,-325.8366 2299.7374,-321.4824"/>
+<path fill="none" stroke="#191970" d="M2305.6742,-322.9565C2317.0883,-308.0381 2329.1641,-292.2548 2339.9603,-278.1441"/>
+<polygon fill="none" stroke="#191970" points="2302.7103,-321.0705 2299.4135,-331.1394 2308.2697,-325.3241 2302.7103,-321.0705"/>
 </g>
 <!-- Node15 -->
 <g id="node16" class="node">
@@ -112,58 +113,58 @@
 <!-- Node0&#45;&gt;Node15 -->
 <g id="edge15" class="edge">
 <title>Node0&#45;&gt;Node15</title>
-<path fill="none" stroke="#191970" d="M2374.0667,-360.554C2574.1076,-332.4661 2986.314,-274.5878 3178.9874,-247.5343"/>
-<polygon fill="none" stroke="#191970" points="2373.5352,-357.0942 2364.119,-361.9508 2374.5086,-364.0262 2373.5352,-357.0942"/>
+<path fill="none" stroke="#191970" d="M2374.0667,-365.4428C2574.1076,-336.2784 2986.314,-276.1817 3178.9874,-248.0914"/>
+<polygon fill="none" stroke="#191970" points="2373.5095,-361.987 2364.119,-366.8931 2374.5194,-368.9137 2373.5095,-361.987"/>
 </g>
 <!-- Node1 -->
 <g id="node2" class="node">
 <title>Node1</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers. ">
-<polygon fill="#ffffff" stroke="#000000" points="2169,-458.5 2169,-856.5 2352,-856.5 2352,-458.5 2169,-458.5"/>
-<text text-anchor="middle" x="2260.5" y="-844.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
-<polyline fill="none" stroke="#000000" points="2169,-837.5 2352,-837.5 "/>
-<text text-anchor="start" x="2177" y="-825.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<text text-anchor="start" x="2177" y="-814.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
-<text text-anchor="start" x="2177" y="-803.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
-<text text-anchor="start" x="2177" y="-792.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
-<text text-anchor="start" x="2177" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
-<text text-anchor="start" x="2177" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
-<text text-anchor="start" x="2177" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
-<text text-anchor="start" x="2177" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="2177" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="2177" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
-<text text-anchor="start" x="2177" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="2177" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
-<text text-anchor="start" x="2177" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
-<text text-anchor="start" x="2177" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
-<text text-anchor="start" x="2177" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># deleter_</text>
-<polyline fill="none" stroke="#000000" points="2169,-664.5 2352,-664.5 "/>
-<text text-anchor="start" x="2177" y="-652.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
-<text text-anchor="start" x="2177" y="-641.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
-<text text-anchor="start" x="2177" y="-630.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="2177" y="-619.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
-<text text-anchor="start" x="2177" y="-608.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<polygon fill="#ffffff" stroke="#000000" points="2169,-469.5 2169,-867.5 2352,-867.5 2352,-469.5 2169,-469.5"/>
+<text text-anchor="middle" x="2260.5" y="-855.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
+<polyline fill="none" stroke="#000000" points="2169,-848.5 2352,-848.5 "/>
+<text text-anchor="start" x="2177" y="-836.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<text text-anchor="start" x="2177" y="-825.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
+<text text-anchor="start" x="2177" y="-814.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
+<text text-anchor="start" x="2177" y="-803.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
+<text text-anchor="start" x="2177" y="-792.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
+<text text-anchor="start" x="2177" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
+<text text-anchor="start" x="2177" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
+<text text-anchor="start" x="2177" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="2177" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="2177" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
+<text text-anchor="start" x="2177" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="2177" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
+<text text-anchor="start" x="2177" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
+<text text-anchor="start" x="2177" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
+<text text-anchor="start" x="2177" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># deleter_</text>
+<polyline fill="none" stroke="#000000" points="2169,-675.5 2352,-675.5 "/>
+<text text-anchor="start" x="2177" y="-663.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
+<text text-anchor="start" x="2177" y="-652.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
+<text text-anchor="start" x="2177" y="-641.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="2177" y="-630.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
+<text text-anchor="start" x="2177" y="-619.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="2177" y="-608.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
 <text text-anchor="start" x="2177" y="-597.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
 <text text-anchor="start" x="2177" y="-586.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="2177" y="-575.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="2177" y="-575.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
 <text text-anchor="start" x="2177" y="-564.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="2177" y="-553.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="2177" y="-542.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="2177" y="-531.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="2177" y="-520.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
-<text text-anchor="start" x="2177" y="-509.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="2177" y="-498.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="2177" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
-<text text-anchor="start" x="2177" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
-<text text-anchor="start" x="2177" y="-465.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="2177" y="-553.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="2177" y="-542.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="2177" y="-531.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
+<text text-anchor="start" x="2177" y="-520.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="2177" y="-509.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="2177" y="-498.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
+<text text-anchor="start" x="2177" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
+<text text-anchor="start" x="2177" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node1&#45;&gt;Node0 -->
 <g id="edge1" class="edge">
 <title>Node1&#45;&gt;Node0</title>
-<path fill="none" stroke="#191970" d="M2260.5,-447.8999C2260.5,-438.6327 2260.5,-429.8995 2260.5,-421.9342"/>
-<polygon fill="none" stroke="#191970" points="2257.0001,-448.1543 2260.5,-458.1543 2264.0001,-448.1543 2257.0001,-448.1543"/>
+<path fill="none" stroke="#191970" d="M2260.5,-458.8341C2260.5,-449.5137 2260.5,-440.6751 2260.5,-432.5365"/>
+<polygon fill="none" stroke="#191970" points="2257.0001,-459.1263 2260.5,-469.1263 2264.0001,-459.1264 2257.0001,-459.1263"/>
 </g>
 <!-- Node3 -->
 <g id="node4" class="node">
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprDocNode-members.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprDocNode-members.html
index fb3d9d609..224aa4d9b 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprDocNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprDocNode-members.html
@@ -98,16 +98,17 @@ $(function() {
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a0d492efee331e2239a093f4b2017c10f">ref_counter_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a55549a6c23987890246248682560a03d">RefCounterType</a> typedef</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#ad94d79729ac85aa7c976e23d39066383">RuntimeTypeIndex</a>()</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html#a234d665c202a31c9ded07695673b8625">TVM_DECLARE_BASE_OBJECT_INFO</a>(ExprDocNode, DocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html">tvm::script::printer::ExprDocNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a78585f033948da5d1a4121aa7b969c47">tvm::script::printer::DocNode::TVM_DECLARE_BASE_OBJECT_INFO</a>(DocNode, Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a481f01923b14e1851ebd38506e9c66ea">type_index</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a4bfc2586cb55f2af47728187b3256255">type_index_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a817ba6c23b7ee1821c48a75edf255a30">TypeIndex2Key</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6ee32a02dd44257da105fbbe5d9c8622">TypeIndex2KeyHash</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6841f97e06e6614dd7e82c6dd41b818a">TypeKey2Index</a>(const std::string &amp;key)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#afd548730a6139d19fe24473ad66026d7">unique</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html#af03dd1b2e3d5695c273e01d4c4d40c33">VisitAttrs</a>(AttrVisitor *v)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html">tvm::script::printer::ExprDocNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a6202cee16104155937f3e64c703f6885">~DocNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">source_paths</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html#a234d665c202a31c9ded07695673b8625">TVM_DECLARE_BASE_OBJECT_INFO</a>(ExprDocNode, DocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html">tvm::script::printer::ExprDocNode</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a78585f033948da5d1a4121aa7b969c47">tvm::script::printer::DocNode::TVM_DECLARE_BASE_OBJECT_INFO</a>(DocNode, Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a481f01923b14e1851ebd38506e9c66ea">type_index</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a4bfc2586cb55f2af47728187b3256255">type_index_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a817ba6c23b7ee1821c48a75edf255a30">TypeIndex2Key</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6ee32a02dd44257da105fbbe5d9c8622">TypeIndex2KeyHash</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6841f97e06e6614dd7e82c6dd41b818a">TypeKey2Index</a>(const std::string &amp;key)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#afd548730a6139d19fe24473ad66026d7">unique</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html#af03dd1b2e3d5695c273e01d4c4d40c33">VisitAttrs</a>(AttrVisitor *v)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html">tvm::script::printer::ExprDocNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a6202cee16104155937f3e64c703f6885">~DocNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprDocNode.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprDocNode.html
index 9bb9d0109..729165dae 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprDocNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprDocNode.html
@@ -78,13 +78,13 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::script::printer::ExprDocNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1ExprDocNode__inherit__graph.svg" width="3014" height="1139"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1ExprDocNode__inherit__graph.svg" width="3014" height="1154"><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::script::printer::ExprDocNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1ExprDocNode__coll__graph.svg" width="364" height="914"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1ExprDocNode__coll__graph.svg" width="544" height="1575"><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">
@@ -183,6 +183,10 @@ Additional Inherited Members</h2></td></tr>
 <tr class="separator:a5fbebc47be111ecc1d5869bcc0476e21 inherit pub_static_methods_classtvm_1_1runtime_1_1Object"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ad94d79729ac85aa7c976e23d39066383 inherit pub_static_methods_classtvm_1_1runtime_1_1Object"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1runtime_1_1Object.html#ad94d79729ac85aa7c976e23d39066383">RuntimeTypeIndex</a> ()</td></tr>
 <tr class="separator:ad94d79729ac85aa7c976e23d39066383 inherit pub_static_methods_classtvm_1_1runtime_1_1Object"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode')"><img src="closed.png" alt="-"/>&#160;Public Attributes inherited from <a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td></tr>
+<tr class="memitem:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Array.html">Array</a>&lt; <a class="el" href="classtvm_1_1ObjectPath.html">ObjectPath</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">source_paths</a></td></tr>
+<tr class="memdesc:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="mdescLeft">&#160;</td><td class="mdescRight">The list of object paths of the source IR node.  <a href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">More...</a><br /></td></tr>
+<tr class="separator:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="inherit_header pro_methods_classtvm_1_1runtime_1_1Object"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classtvm_1_1runtime_1_1Object')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td></tr>
 <tr class="memitem:ac9e5eed7719e322117bde996a171e33a inherit pro_methods_classtvm_1_1runtime_1_1Object"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1runtime_1_1Object.html#ac9e5eed7719e322117bde996a171e33a">IncRef</a> ()</td></tr>
 <tr class="memdesc:ac9e5eed7719e322117bde996a171e33a inherit pro_methods_classtvm_1_1runtime_1_1Object"><td class="mdescLeft">&#160;</td><td class="mdescRight">developer function, increases reference counter.  <a href="classtvm_1_1runtime_1_1Object.html#ac9e5eed7719e322117bde996a171e33a">More...</a><br /></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprDocNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprDocNode__coll__graph.svg
index 071feae6c..b64239e8d 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprDocNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprDocNode__coll__graph.svg
@@ -4,104 +4,200 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: tvm::script::printer::ExprDocNode Pages: 1 -->
-<svg width="273pt" height="685pt"
- viewBox="0.00 0.00 273.00 685.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 681)">
+<svg width="408pt" height="1181pt"
+ viewBox="0.00 0.00 407.50 1181.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 1177)">
 <title>tvm::script::printer::ExprDocNode</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-681 269,-681 269,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1177 403.5,-1177 403.5,4 -4,4"/>
 <!-- Node13 -->
 <g id="node1" class="node">
 <title>Node13</title>
-<polygon fill="#bfbfbf" stroke="#000000" points="0,-.5 0,-123.5 207,-123.5 207,-.5 0,-.5"/>
-<text text-anchor="start" x="8" y="-111.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="103.5" y="-100.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDocNode</text>
-<polyline fill="none" stroke="#000000" points="0,-93.5 207,-93.5 "/>
-<text text-anchor="start" x="8" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="0,-74.5 207,-74.5 "/>
-<text text-anchor="start" x="8" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Attr()</text>
-<text text-anchor="start" x="8" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator[]()</text>
-<text text-anchor="start" x="8" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Call()</text>
-<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Call()</text>
-<text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="8" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
+<polygon fill="#bfbfbf" stroke="#000000" points="106,-.5 106,-123.5 313,-123.5 313,-.5 106,-.5"/>
+<text text-anchor="start" x="114" y="-111.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="209.5" y="-100.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDocNode</text>
+<polyline fill="none" stroke="#000000" points="106,-93.5 313,-93.5 "/>
+<text text-anchor="start" x="114" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="106,-74.5 313,-74.5 "/>
+<text text-anchor="start" x="114" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Attr()</text>
+<text text-anchor="start" x="114" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator[]()</text>
+<text text-anchor="start" x="114" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Call()</text>
+<text text-anchor="start" x="114" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Call()</text>
+<text text-anchor="start" x="114" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="114" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
 </g>
 <!-- Node14 -->
 <g id="node2" class="node">
 <title>Node14</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1script_1_1printer_1_1DocNode.html" target="_top" xlink:title="The base class of all Doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="0,-161.5 0,-251.5 207,-251.5 207,-161.5 0,-161.5"/>
-<text text-anchor="start" x="8" y="-239.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="103.5" y="-228.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
-<polyline fill="none" stroke="#000000" points="0,-221.5 207,-221.5 "/>
-<text text-anchor="start" x="8" y="-209.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="0,-202.5 207,-202.5 "/>
-<text text-anchor="start" x="8" y="-190.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="8" y="-179.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
-<text text-anchor="start" x="8" y="-168.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~DocNode()</text>
+<polygon fill="#ffffff" stroke="#000000" points="106,-161.5 106,-251.5 313,-251.5 313,-161.5 106,-161.5"/>
+<text text-anchor="start" x="114" y="-239.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="209.5" y="-228.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
+<polyline fill="none" stroke="#000000" points="106,-221.5 313,-221.5 "/>
+<text text-anchor="start" x="114" y="-209.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="106,-202.5 313,-202.5 "/>
+<text text-anchor="start" x="114" y="-190.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="114" y="-179.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
+<text text-anchor="start" x="114" y="-168.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~DocNode()</text>
 </a>
 </g>
 </g>
 <!-- Node14&#45;&gt;Node13 -->
 <g id="edge1" class="edge">
 <title>Node14&#45;&gt;Node13</title>
-<path fill="none" stroke="#191970" d="M103.5,-151.1753C103.5,-142.1486 103.5,-132.7483 103.5,-123.5822"/>
-<polygon fill="none" stroke="#191970" points="100.0001,-151.1757 103.5,-161.1758 107.0001,-151.1758 100.0001,-151.1757"/>
+<path fill="none" stroke="#191970" d="M209.5,-151.1753C209.5,-142.1486 209.5,-132.7483 209.5,-123.5822"/>
+<polygon fill="none" stroke="#191970" points="206.0001,-151.1757 209.5,-161.1758 213.0001,-151.1758 206.0001,-151.1757"/>
 </g>
 <!-- Node15 -->
 <g id="node3" class="node">
 <title>Node15</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers. ">
-<polygon fill="#ffffff" stroke="#000000" points="12,-289.5 12,-676.5 195,-676.5 195,-289.5 12,-289.5"/>
-<text text-anchor="middle" x="103.5" y="-664.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
-<polyline fill="none" stroke="#000000" points="12,-657.5 195,-657.5 "/>
-<text text-anchor="start" x="20" y="-645.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<text text-anchor="start" x="20" y="-634.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
-<text text-anchor="start" x="20" y="-623.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
-<text text-anchor="start" x="20" y="-612.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
-<text text-anchor="start" x="20" y="-601.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
-<text text-anchor="start" x="20" y="-590.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
-<text text-anchor="start" x="20" y="-579.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
-<text text-anchor="start" x="20" y="-568.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="20" y="-557.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="20" y="-546.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
-<text text-anchor="start" x="20" y="-535.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="20" y="-524.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
-<text text-anchor="start" x="20" y="-513.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
-<text text-anchor="start" x="20" y="-502.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
-<polyline fill="none" stroke="#000000" points="12,-495.5 195,-495.5 "/>
-<text text-anchor="start" x="20" y="-483.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
-<text text-anchor="start" x="20" y="-472.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
-<text text-anchor="start" x="20" y="-461.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="20" y="-450.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
-<text text-anchor="start" x="20" y="-439.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
-<text text-anchor="start" x="20" y="-428.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-417.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-395.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="20" y="-384.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="20" y="-373.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="20" y="-362.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="20" y="-351.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
-<text text-anchor="start" x="20" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="20" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="20" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
-<text text-anchor="start" x="20" y="-307.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
-<text text-anchor="start" x="20" y="-296.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
+<polygon fill="#ffffff" stroke="#000000" points="0,-299.5 0,-686.5 183,-686.5 183,-299.5 0,-299.5"/>
+<text text-anchor="middle" x="91.5" y="-674.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
+<polyline fill="none" stroke="#000000" points="0,-667.5 183,-667.5 "/>
+<text text-anchor="start" x="8" y="-655.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<text text-anchor="start" x="8" y="-644.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
+<text text-anchor="start" x="8" y="-633.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-622.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-611.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
+<text text-anchor="start" x="8" y="-600.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-589.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
+<text text-anchor="start" x="8" y="-578.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-567.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="8" y="-556.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-545.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="8" y="-534.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
+<text text-anchor="start" x="8" y="-523.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
+<text text-anchor="start" x="8" y="-512.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
+<polyline fill="none" stroke="#000000" points="0,-505.5 183,-505.5 "/>
+<text text-anchor="start" x="8" y="-493.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
+<text text-anchor="start" x="8" y="-482.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-460.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-449.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="8" y="-438.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-427.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-416.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-405.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="8" y="-394.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="8" y="-383.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-372.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-350.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-339.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-328.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
+<text text-anchor="start" x="8" y="-317.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
+<text text-anchor="start" x="8" y="-306.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node15&#45;&gt;Node14 -->
 <g id="edge2" class="edge">
 <title>Node15&#45;&gt;Node14</title>
-<path fill="none" stroke="#191970" d="M103.5,-279.4197C103.5,-269.5618 103.5,-260.2793 103.5,-251.8536"/>
-<polygon fill="none" stroke="#191970" points="100.0001,-279.4591 103.5,-289.4591 107.0001,-279.4592 100.0001,-279.4591"/>
+<path fill="none" stroke="#191970" d="M175.1721,-289.8471C180.907,-275.9228 186.2626,-262.9196 190.9586,-251.5179"/>
+<polygon fill="none" stroke="#191970" points="171.9239,-288.5433 171.3517,-299.1227 178.3964,-291.2092 171.9239,-288.5433"/>
 </g>
 <!-- Node15&#45;&gt;Node15 -->
 <g id="edge3" class="edge">
 <title>Node15&#45;&gt;Node15</title>
-<path fill="none" stroke="#404040" d="M195.3625,-516.9248C206.0482,-510.6637 213,-499.3555 213,-483 213,-472.0112 209.8618,-463.3007 204.5615,-456.8687"/>
-<polygon fill="none" stroke="#404040" points="204.5184,-456.8322 197.3548,-456.0056 195.3625,-449.0752 202.5261,-449.9017 204.5184,-456.8322"/>
-<text text-anchor="middle" x="239" y="-480.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M183.3625,-526.9248C194.0482,-520.6637 201,-509.3555 201,-493 201,-482.0112 197.8618,-473.3007 192.5615,-466.8687"/>
+<polygon fill="none" stroke="#404040" points="192.5184,-466.8322 185.3548,-466.0056 183.3625,-459.0752 190.5261,-459.9017 192.5184,-466.8322"/>
+<text text-anchor="middle" x="227" y="-490.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #deleter_</text>
+</g>
+<!-- Node16 -->
+<g id="node4" class="node">
+<title>Node16</title>
+<g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="{tvm::runtime::Array\l\&lt; tvm::ObjectPath \&gt;\n||+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ operator=()\l+ operator=()\land 24 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="271,-404 271,-582 388,-582 388,-404 271,-404"/>
+<text text-anchor="start" x="279" y="-570" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="329.5" y="-559" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::ObjectPath &gt;</text>
+<polyline fill="none" stroke="#000000" points="271,-552 388,-552 "/>
+<text text-anchor="middle" x="329.5" y="-540" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="271,-533 388,-533 "/>
+<text text-anchor="start" x="279" y="-521" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-510" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-499" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-488" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-477" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-466" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-455" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-444" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-433" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="279" y="-422" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="279" y="-411" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
+</a>
+</g>
+</g>
+<!-- Node16&#45;&gt;Node14 -->
+<g id="edge4" class="edge">
+<title>Node16&#45;&gt;Node14</title>
+<path fill="none" stroke="#404040" d="M302.5773,-403.7502C291.4913,-370.3462 277.6804,-332.415 262.5,-299 256.9905,-286.8726 250.3901,-274.2534 243.7474,-262.3773"/>
+<polygon fill="none" stroke="#404040" points="243.6112,-262.1384 237.1638,-258.9087 237.6653,-251.715 244.1127,-254.9447 243.6112,-262.1384"/>
+<text text-anchor="middle" x="291.5" y="-273" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +source_paths</text>
+</g>
+<!-- Node17 -->
+<g id="node5" class="node">
+<title>Node17</title>
+<g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference. ">
+<polygon fill="#ffffff" stroke="#000000" points="262.5,-724.5 262.5,-946.5 396.5,-946.5 396.5,-724.5 262.5,-724.5"/>
+<text text-anchor="middle" x="329.5" y="-934.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="#000000" points="262.5,-927.5 396.5,-927.5 "/>
+<text text-anchor="start" x="270.5" y="-915.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
+<polyline fill="none" stroke="#000000" points="262.5,-908.5 396.5,-908.5 "/>
+<text text-anchor="start" x="270.5" y="-896.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="270.5" y="-885.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="270.5" y="-874.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
+<text text-anchor="start" x="270.5" y="-863.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
+<text text-anchor="start" x="270.5" y="-852.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
+<text text-anchor="start" x="270.5" y="-841.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
+<text text-anchor="start" x="270.5" y="-830.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
+<text text-anchor="start" x="270.5" y="-819.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="270.5" y="-808.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="270.5" y="-797.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="270.5" y="-786.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
+<text text-anchor="start" x="270.5" y="-775.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
+<text text-anchor="start" x="270.5" y="-764.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
+<text text-anchor="start" x="270.5" y="-753.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
+<text text-anchor="start" x="270.5" y="-742.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="270.5" y="-731.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
+</a>
+</g>
+</g>
+<!-- Node17&#45;&gt;Node16 -->
+<g id="edge5" class="edge">
+<title>Node17&#45;&gt;Node16</title>
+<path fill="none" stroke="#191970" d="M329.5,-714.2298C329.5,-670.7434 329.5,-622.5445 329.5,-582.2656"/>
+<polygon fill="none" stroke="#191970" points="326.0001,-714.3 329.5,-724.3001 333.0001,-714.3001 326.0001,-714.3"/>
+</g>
+<!-- Node18 -->
+<g id="node6" class="node">
+<title>Node18</title>
+<g id="a_node6"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title="{tvm::runtime::ObjectPtr\l\&lt; tvm::runtime::Object \&gt;\n||+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ~ObjectPtr()\l+ swap()\l+ get()\l+ operator&#45;\&gt;()\land 11 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="259.5,-994.5 259.5,-1172.5 399.5,-1172.5 399.5,-994.5 259.5,-994.5"/>
+<text text-anchor="start" x="267.5" y="-1160.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="329.5" y="-1149.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="#000000" points="259.5,-1142.5 399.5,-1142.5 "/>
+<text text-anchor="middle" x="329.5" y="-1130.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="259.5,-1123.5 399.5,-1123.5 "/>
+<text text-anchor="start" x="267.5" y="-1111.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="267.5" y="-1100.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="267.5" y="-1089.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="267.5" y="-1078.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="267.5" y="-1067.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="267.5" y="-1056.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="267.5" y="-1045.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="267.5" y="-1034.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ swap()</text>
+<text text-anchor="start" x="267.5" y="-1023.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="267.5" y="-1012.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="267.5" y="-1001.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 11 more...</text>
+</a>
+</g>
+</g>
+<!-- Node18&#45;&gt;Node17 -->
+<g id="edge6" class="edge">
+<title>Node18&#45;&gt;Node17</title>
+<path fill="none" stroke="#404040" d="M329.5,-994.3167C329.5,-982.8765 329.5,-971.0062 329.5,-959.1402"/>
+<polygon fill="none" stroke="#404040" points="329.5001,-958.7944 325.5,-952.7944 329.5,-946.7944 333.5,-952.7943 329.5001,-958.7944"/>
+<text text-anchor="middle" x="349" y="-968" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #data_</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprDocNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprDocNode__inherit__graph.svg
index 52a385b00..7d734cb43 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprDocNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprDocNode__inherit__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: tvm::script::printer::ExprDocNode Pages: 1 -->
-<svg width="2260pt" height="854pt"
- viewBox="0.00 0.00 2260.00 854.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 850)">
+<svg width="2260pt" height="865pt"
+ viewBox="0.00 0.00 2260.00 865.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 861)">
 <title>tvm::script::printer::ExprDocNode</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-850 2256,-850 2256,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-861 2256,-861 2256,4 -4,4"/>
 <!-- Node0 -->
 <g id="node1" class="node">
 <title>Node0</title>
@@ -257,10 +257,11 @@
 <g id="node2" class="node">
 <title>Node1</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1script_1_1printer_1_1DocNode.html" target="_top" xlink:title="The base class of all Doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="1022,-320.5 1022,-410.5 1229,-410.5 1229,-320.5 1022,-320.5"/>
-<text text-anchor="start" x="1030" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="1125.5" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
-<polyline fill="none" stroke="#000000" points="1022,-380.5 1229,-380.5 "/>
+<polygon fill="#ffffff" stroke="#000000" points="1022,-320.5 1022,-421.5 1229,-421.5 1229,-320.5 1022,-320.5"/>
+<text text-anchor="start" x="1030" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="1125.5" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
+<polyline fill="none" stroke="#000000" points="1022,-391.5 1229,-391.5 "/>
+<text text-anchor="start" x="1030" y="-379.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ source_paths</text>
 <text text-anchor="start" x="1030" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
 <polyline fill="none" stroke="#000000" points="1022,-361.5 1229,-361.5 "/>
 <text text-anchor="start" x="1030" y="-349.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
@@ -272,58 +273,58 @@
 <!-- Node1&#45;&gt;Node0 -->
 <g id="edge1" class="edge">
 <title>Node1&#45;&gt;Node0</title>
-<path fill="none" stroke="#191970" d="M1125.5,-310.4136C1125.5,-301.665 1125.5,-292.5665 1125.5,-283.6783"/>
-<polygon fill="none" stroke="#191970" points="1122.0001,-310.4894 1125.5,-320.4894 1129.0001,-310.4895 1122.0001,-310.4894"/>
+<path fill="none" stroke="#191970" d="M1125.5,-310.0751C1125.5,-301.3766 1125.5,-292.4225 1125.5,-283.709"/>
+<polygon fill="none" stroke="#191970" points="1122.0001,-310.1394 1125.5,-320.1394 1129.0001,-310.1394 1122.0001,-310.1394"/>
 </g>
 <!-- Node2 -->
 <g id="node3" class="node">
 <title>Node2</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers. ">
-<polygon fill="#ffffff" stroke="#000000" points="1034,-447.5 1034,-845.5 1217,-845.5 1217,-447.5 1034,-447.5"/>
-<text text-anchor="middle" x="1125.5" y="-833.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
-<polyline fill="none" stroke="#000000" points="1034,-826.5 1217,-826.5 "/>
-<text text-anchor="start" x="1042" y="-814.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<text text-anchor="start" x="1042" y="-803.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
-<text text-anchor="start" x="1042" y="-792.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
-<text text-anchor="start" x="1042" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
-<text text-anchor="start" x="1042" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
-<text text-anchor="start" x="1042" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
-<text text-anchor="start" x="1042" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
-<text text-anchor="start" x="1042" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="1042" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="1042" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
-<text text-anchor="start" x="1042" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="1042" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
-<text text-anchor="start" x="1042" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
-<text text-anchor="start" x="1042" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
-<text text-anchor="start" x="1042" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># deleter_</text>
-<polyline fill="none" stroke="#000000" points="1034,-653.5 1217,-653.5 "/>
-<text text-anchor="start" x="1042" y="-641.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
-<text text-anchor="start" x="1042" y="-630.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
-<text text-anchor="start" x="1042" y="-619.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="1042" y="-608.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
-<text text-anchor="start" x="1042" y="-597.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<polygon fill="#ffffff" stroke="#000000" points="1034,-458.5 1034,-856.5 1217,-856.5 1217,-458.5 1034,-458.5"/>
+<text text-anchor="middle" x="1125.5" y="-844.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
+<polyline fill="none" stroke="#000000" points="1034,-837.5 1217,-837.5 "/>
+<text text-anchor="start" x="1042" y="-825.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<text text-anchor="start" x="1042" y="-814.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
+<text text-anchor="start" x="1042" y="-803.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
+<text text-anchor="start" x="1042" y="-792.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
+<text text-anchor="start" x="1042" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
+<text text-anchor="start" x="1042" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
+<text text-anchor="start" x="1042" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
+<text text-anchor="start" x="1042" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="1042" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="1042" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
+<text text-anchor="start" x="1042" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="1042" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
+<text text-anchor="start" x="1042" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
+<text text-anchor="start" x="1042" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
+<text text-anchor="start" x="1042" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># deleter_</text>
+<polyline fill="none" stroke="#000000" points="1034,-664.5 1217,-664.5 "/>
+<text text-anchor="start" x="1042" y="-652.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
+<text text-anchor="start" x="1042" y="-641.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
+<text text-anchor="start" x="1042" y="-630.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="1042" y="-619.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
+<text text-anchor="start" x="1042" y="-608.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="1042" y="-597.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
 <text text-anchor="start" x="1042" y="-586.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
 <text text-anchor="start" x="1042" y="-575.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="1042" y="-564.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="1042" y="-564.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
 <text text-anchor="start" x="1042" y="-553.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="1042" y="-542.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="1042" y="-531.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="1042" y="-520.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="1042" y="-509.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
-<text text-anchor="start" x="1042" y="-498.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="1042" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="1042" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
-<text text-anchor="start" x="1042" y="-465.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
-<text text-anchor="start" x="1042" y="-454.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="1042" y="-542.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="1042" y="-531.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="1042" y="-520.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
+<text text-anchor="start" x="1042" y="-509.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="1042" y="-498.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="1042" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
+<text text-anchor="start" x="1042" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
+<text text-anchor="start" x="1042" y="-465.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge2" class="edge">
 <title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="#191970" d="M1125.5,-436.8999C1125.5,-427.6327 1125.5,-418.8995 1125.5,-410.9342"/>
-<polygon fill="none" stroke="#191970" points="1122.0001,-437.1543 1125.5,-447.1543 1129.0001,-437.1543 1122.0001,-437.1543"/>
+<path fill="none" stroke="#191970" d="M1125.5,-447.8341C1125.5,-438.5137 1125.5,-429.6751 1125.5,-421.5365"/>
+<polygon fill="none" stroke="#191970" points="1122.0001,-448.1263 1125.5,-458.1263 1129.0001,-448.1264 1122.0001,-448.1263"/>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprStmtDocNode-members.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprStmtDocNode-members.html
index e9152248f..114f34519 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprStmtDocNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprStmtDocNode-members.html
@@ -96,17 +96,18 @@ $(function() {
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a0d492efee331e2239a093f4b2017c10f">ref_counter_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a55549a6c23987890246248682560a03d">RefCounterType</a> typedef</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#ad94d79729ac85aa7c976e23d39066383">RuntimeTypeIndex</a>()</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#a57275ce6ecf2615438470f80c723e327">TVM_DECLARE_BASE_OBJECT_INFO</a>(StmtDocNode, DocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html">tvm::script::printer::StmtDocNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a78585f033948da5d1a4121aa7b969c47">tvm::script::printer::DocNode::TVM_DECLARE_BASE_OBJECT_INFO</a>(DocNode, Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprStmtDocNode.html#a7f4b503f1e669453bb1c656b18c94adf">TVM_DECLARE_FINAL_OBJECT_INFO</a>(ExprStmtDocNode, StmtDocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprStmtDocNode.html">tvm::script::printer::ExprStmtDocNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a481f01923b14e1851ebd38506e9c66ea">type_index</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a4bfc2586cb55f2af47728187b3256255">type_index_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a817ba6c23b7ee1821c48a75edf255a30">TypeIndex2Key</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6ee32a02dd44257da105fbbe5d9c8622">TypeIndex2KeyHash</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6841f97e06e6614dd7e82c6dd41b818a">TypeKey2Index</a>(const std::string &amp;key)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#afd548730a6139d19fe24473ad66026d7">unique</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprStmtDocNode.html#ae24f82a9e9af72bdda822dce009bd7de">VisitAttrs</a>(AttrVisitor *v)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprStmtDocNode.html">tvm::script::printer::ExprStmtDocNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a6202cee16104155937f3e64c703f6885">~DocNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">source_paths</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#a57275ce6ecf2615438470f80c723e327">TVM_DECLARE_BASE_OBJECT_INFO</a>(StmtDocNode, DocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html">tvm::script::printer::StmtDocNode</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a78585f033948da5d1a4121aa7b969c47">tvm::script::printer::DocNode::TVM_DECLARE_BASE_OBJECT_INFO</a>(DocNode, Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprStmtDocNode.html#a7f4b503f1e669453bb1c656b18c94adf">TVM_DECLARE_FINAL_OBJECT_INFO</a>(ExprStmtDocNode, StmtDocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprStmtDocNode.html">tvm::script::printer::ExprStmtDocNode</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a481f01923b14e1851ebd38506e9c66ea">type_index</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a4bfc2586cb55f2af47728187b3256255">type_index_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a817ba6c23b7ee1821c48a75edf255a30">TypeIndex2Key</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6ee32a02dd44257da105fbbe5d9c8622">TypeIndex2KeyHash</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6841f97e06e6614dd7e82c6dd41b818a">TypeKey2Index</a>(const std::string &amp;key)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#afd548730a6139d19fe24473ad66026d7">unique</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprStmtDocNode.html#ae24f82a9e9af72bdda822dce009bd7de">VisitAttrs</a>(AttrVisitor *v)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprStmtDocNode.html">tvm::script::printer::ExprStmtDocNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a6202cee16104155937f3e64c703f6885">~DocNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprStmtDocNode.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprStmtDocNode.html
index 35f9955ad..950d06203 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprStmtDocNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprStmtDocNode.html
@@ -79,13 +79,13 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::script::printer::ExprStmtDocNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1ExprStmtDocNode__inherit__graph.svg" width="290" height="1051"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1ExprStmtDocNode__inherit__graph.svg" width="290" height="1066"><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::script::printer::ExprStmtDocNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1ExprStmtDocNode__coll__graph.svg" width="740" height="1471"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1ExprStmtDocNode__coll__graph.svg" width="826" height="2016"><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">
@@ -139,6 +139,10 @@ Public Attributes</h2></td></tr>
 <tr class="memitem:ab5825bdb8b993e7bcdbe592163d549a1 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1StmtDocNode"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Optional.html">Optional</a>&lt; <a class="el" href="classtvm_1_1runtime_1_1String.html">String</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#ab5825bdb8b993e7bcdbe592163d549a1">comment</a> {<a cla [...]
 <tr class="memdesc:ab5825bdb8b993e7bcdbe592163d549a1 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1StmtDocNode"><td class="mdescLeft">&#160;</td><td class="mdescRight">The comment of this doc.  <a href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#ab5825bdb8b993e7bcdbe592163d549a1">More...</a><br /></td></tr>
 <tr class="separator:ab5825bdb8b993e7bcdbe592163d549a1 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1StmtDocNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode')"><img src="closed.png" alt="-"/>&#160;Public Attributes inherited from <a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td></tr>
+<tr class="memitem:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Array.html">Array</a>&lt; <a class="el" href="classtvm_1_1ObjectPath.html">ObjectPath</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">source_paths</a></td></tr>
+<tr class="memdesc:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="mdescLeft">&#160;</td><td class="mdescRight">The list of object paths of the source IR node.  <a href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">More...</a><br /></td></tr>
+<tr class="separator:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
 Static Public Attributes</h2></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprStmtDocNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprStmtDocNode__coll__graph.svg
index f00c3efa9..d55ed5bb0 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprStmtDocNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprStmtDocNode__coll__graph.svg
@@ -4,268 +4,305 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: tvm::script::printer::ExprStmtDocNode Pages: 1 -->
-<svg width="555pt" height="1103pt"
- viewBox="0.00 0.00 554.50 1103.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 1099)">
+<svg width="619pt" height="1512pt"
+ viewBox="0.00 0.00 618.50 1512.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 1508)">
 <title>tvm::script::printer::ExprStmtDocNode</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1099 550.5,-1099 550.5,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1508 614.5,-1508 614.5,4 -4,4"/>
 <!-- Node4 -->
 <g id="node1" class="node">
 <title>Node4</title>
-<polygon fill="#bfbfbf" stroke="#000000" points="256,-.5 256,-79.5 465,-79.5 465,-.5 256,-.5"/>
-<text text-anchor="start" x="264" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="360.5" y="-56.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprStmtDocNode</text>
-<polyline fill="none" stroke="#000000" points="256,-49.5 465,-49.5 "/>
-<text text-anchor="start" x="264" y="-37.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="256,-30.5 465,-30.5 "/>
-<text text-anchor="start" x="264" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="264" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_FINAL_OBJECT_INFO()</text>
+<polygon fill="#bfbfbf" stroke="#000000" points="353,-.5 353,-79.5 562,-79.5 562,-.5 353,-.5"/>
+<text text-anchor="start" x="361" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="457.5" y="-56.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprStmtDocNode</text>
+<polyline fill="none" stroke="#000000" points="353,-49.5 562,-49.5 "/>
+<text text-anchor="start" x="361" y="-37.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="353,-30.5 562,-30.5 "/>
+<text text-anchor="start" x="361" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="361" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_FINAL_OBJECT_INFO()</text>
 </g>
 <!-- Node5 -->
 <g id="node2" class="node">
 <title>Node5</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html" target="_top" xlink:title="The base class of statement doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="155,-133 155,-212 362,-212 362,-133 155,-133"/>
-<text text-anchor="start" x="163" y="-200" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="258.5" y="-189" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::StmtDocNode</text>
-<polyline fill="none" stroke="#000000" points="155,-182 362,-182 "/>
-<text text-anchor="start" x="163" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="155,-163 362,-163 "/>
-<text text-anchor="start" x="163" y="-151" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="163" y="-140" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
+<polygon fill="#ffffff" stroke="#000000" points="284,-117.5 284,-196.5 491,-196.5 491,-117.5 284,-117.5"/>
+<text text-anchor="start" x="292" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="387.5" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::StmtDocNode</text>
+<polyline fill="none" stroke="#000000" points="284,-166.5 491,-166.5 "/>
+<text text-anchor="start" x="292" y="-154.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="284,-147.5 491,-147.5 "/>
+<text text-anchor="start" x="292" y="-135.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="292" y="-124.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node4 -->
 <g id="edge1" class="edge">
 <title>Node5&#45;&gt;Node4</title>
-<path fill="none" stroke="#191970" d="M295.2918,-124.7067C306.6489,-109.9536 319.0275,-93.8736 329.9182,-79.7263"/>
-<polygon fill="none" stroke="#191970" points="292.43,-122.6866 289.1034,-132.7456 297.9768,-126.9566 292.43,-122.6866"/>
+<path fill="none" stroke="#191970" d="M416.4323,-108.6417C422.2216,-98.9654 428.2393,-88.9072 433.8256,-79.5701"/>
+<polygon fill="none" stroke="#191970" points="413.3295,-107.0108 411.1988,-117.3891 419.3365,-110.6047 413.3295,-107.0108"/>
 </g>
 <!-- Node6 -->
 <g id="node3" class="node">
 <title>Node6</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1script_1_1printer_1_1DocNode.html" target="_top" xlink:title="The base class of all Doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="0,-309.5 0,-399.5 207,-399.5 207,-309.5 0,-309.5"/>
-<text text-anchor="start" x="8" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="103.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
-<polyline fill="none" stroke="#000000" points="0,-369.5 207,-369.5 "/>
-<text text-anchor="start" x="8" y="-357.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="0,-350.5 207,-350.5 "/>
-<text text-anchor="start" x="8" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="8" y="-327.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
-<text text-anchor="start" x="8" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~DocNode()</text>
+<polygon fill="#ffffff" stroke="#000000" points="163,-324.5 163,-414.5 370,-414.5 370,-324.5 163,-324.5"/>
+<text text-anchor="start" x="171" y="-402.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="266.5" y="-391.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
+<polyline fill="none" stroke="#000000" points="163,-384.5 370,-384.5 "/>
+<text text-anchor="start" x="171" y="-372.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="163,-365.5 370,-365.5 "/>
+<text text-anchor="start" x="171" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="171" y="-342.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
+<text text-anchor="start" x="171" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~DocNode()</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node5 -->
 <g id="edge2" class="edge">
 <title>Node6&#45;&gt;Node5</title>
-<path fill="none" stroke="#191970" d="M148.9109,-301.1788C173.1724,-272.6911 202.5293,-238.2204 224.7501,-212.1289"/>
-<polygon fill="none" stroke="#191970" points="146.0324,-299.1606 142.2132,-309.0432 151.3616,-303.6993 146.0324,-299.1606"/>
+<path fill="none" stroke="#191970" d="M297.3727,-315.2813C318.4474,-278.2701 345.8905,-230.0745 364.9315,-196.6348"/>
+<polygon fill="none" stroke="#191970" points="294.0677,-314.0124 292.161,-324.4342 300.1507,-317.4761 294.0677,-314.0124"/>
 </g>
 <!-- Node7 -->
 <g id="node4" class="node">
 <title>Node7</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers. ">
-<polygon fill="#ffffff" stroke="#000000" points="12,-481.5 12,-868.5 195,-868.5 195,-481.5 12,-481.5"/>
-<text text-anchor="middle" x="103.5" y="-856.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
-<polyline fill="none" stroke="#000000" points="12,-849.5 195,-849.5 "/>
-<text text-anchor="start" x="20" y="-837.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<text text-anchor="start" x="20" y="-826.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
-<text text-anchor="start" x="20" y="-815.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
-<text text-anchor="start" x="20" y="-804.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
-<text text-anchor="start" x="20" y="-793.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
-<text text-anchor="start" x="20" y="-782.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
-<text text-anchor="start" x="20" y="-771.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
-<text text-anchor="start" x="20" y="-760.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="20" y="-749.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="20" y="-738.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
-<text text-anchor="start" x="20" y="-727.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="20" y="-716.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
-<text text-anchor="start" x="20" y="-705.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
-<text text-anchor="start" x="20" y="-694.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
-<polyline fill="none" stroke="#000000" points="12,-687.5 195,-687.5 "/>
-<text text-anchor="start" x="20" y="-675.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
-<text text-anchor="start" x="20" y="-664.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
-<text text-anchor="start" x="20" y="-653.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="20" y="-642.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
-<text text-anchor="start" x="20" y="-631.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
-<text text-anchor="start" x="20" y="-620.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-609.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-598.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-587.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="20" y="-576.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="20" y="-565.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="20" y="-554.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="20" y="-543.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
-<text text-anchor="start" x="20" y="-532.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="20" y="-521.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="20" y="-510.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
-<text text-anchor="start" x="20" y="-499.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
-<text text-anchor="start" x="20" y="-488.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
+<polygon fill="#ffffff" stroke="#000000" points="0,-630.5 0,-1017.5 183,-1017.5 183,-630.5 0,-630.5"/>
+<text text-anchor="middle" x="91.5" y="-1005.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
+<polyline fill="none" stroke="#000000" points="0,-998.5 183,-998.5 "/>
+<text text-anchor="start" x="8" y="-986.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<text text-anchor="start" x="8" y="-975.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
+<text text-anchor="start" x="8" y="-964.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-953.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-942.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
+<text text-anchor="start" x="8" y="-931.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-920.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
+<text text-anchor="start" x="8" y="-909.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-898.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="8" y="-887.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-876.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="8" y="-865.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
+<text text-anchor="start" x="8" y="-854.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
+<text text-anchor="start" x="8" y="-843.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
+<polyline fill="none" stroke="#000000" points="0,-836.5 183,-836.5 "/>
+<text text-anchor="start" x="8" y="-824.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
+<text text-anchor="start" x="8" y="-813.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-802.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-791.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-780.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="8" y="-769.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-758.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-747.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-736.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="8" y="-725.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="8" y="-714.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-703.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-692.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-681.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-670.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-659.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
+<text text-anchor="start" x="8" y="-648.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
+<text text-anchor="start" x="8" y="-637.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node6 -->
 <g id="edge3" class="edge">
 <title>Node7&#45;&gt;Node6</title>
-<path fill="none" stroke="#191970" d="M103.5,-470.8931C103.5,-444.284 103.5,-419.4228 103.5,-399.5654"/>
-<polygon fill="none" stroke="#191970" points="100.0001,-471.1701 103.5,-481.1701 107.0001,-471.1701 100.0001,-471.1701"/>
+<path fill="none" stroke="#191970" d="M169.7005,-620.9021C199.3199,-543.9763 230.377,-463.3166 249.0884,-414.7204"/>
+<polygon fill="none" stroke="#191970" points="166.4235,-619.6726 166.0964,-630.2624 172.956,-622.1879 166.4235,-619.6726"/>
 </g>
 <!-- Node7&#45;&gt;Node7 -->
 <g id="edge4" class="edge">
 <title>Node7&#45;&gt;Node7</title>
-<path fill="none" stroke="#404040" d="M195.3625,-708.9248C206.0482,-702.6637 213,-691.3555 213,-675 213,-664.0112 209.8618,-655.3007 204.5615,-648.8687"/>
-<polygon fill="none" stroke="#404040" points="204.5184,-648.8322 197.3548,-648.0056 195.3625,-641.0752 202.5261,-641.9017 204.5184,-648.8322"/>
-<text text-anchor="middle" x="239" y="-672.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M183.3625,-857.9248C194.0482,-851.6637 201,-840.3555 201,-824 201,-813.0112 197.8618,-804.3007 192.5615,-797.8687"/>
+<polygon fill="none" stroke="#404040" points="192.5184,-797.8322 185.3548,-797.0056 183.3625,-790.0752 190.5261,-790.9017 192.5184,-797.8322"/>
+<text text-anchor="middle" x="227" y="-821.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #deleter_</text>
 </g>
 <!-- Node8 -->
 <g id="node5" class="node">
 <title>Node8</title>
-<g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="{tvm::runtime::Optional\l\&lt; tvm::runtime::String \&gt;\n|+ _type_is_nullable\l|+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ operator=()\l+ operator=()\land 15 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="225,-265.5 225,-443.5 362,-443.5 362,-265.5 225,-265.5"/>
-<text text-anchor="start" x="233" y="-431.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="middle" x="293.5" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::String &gt;</text>
-<polyline fill="none" stroke="#000000" points="225,-413.5 362,-413.5 "/>
-<text text-anchor="start" x="233" y="-401.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
-<polyline fill="none" stroke="#000000" points="225,-394.5 362,-394.5 "/>
-<text text-anchor="start" x="233" y="-382.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-371.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-360.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-349.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-327.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-305.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-294.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="233" y="-283.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="233" y="-272.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 15 more...</text>
+<g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="{tvm::runtime::Array\l\&lt; tvm::ObjectPath \&gt;\n||+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ operator=()\l+ operator=()\land 24 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="271,-735 271,-913 388,-913 388,-735 271,-735"/>
+<text text-anchor="start" x="279" y="-901" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="329.5" y="-890" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::ObjectPath &gt;</text>
+<polyline fill="none" stroke="#000000" points="271,-883 388,-883 "/>
+<text text-anchor="middle" x="329.5" y="-871" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="271,-864 388,-864 "/>
+<text text-anchor="start" x="279" y="-852" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-841" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-830" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-819" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-808" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-797" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-786" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-775" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-764" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="279" y="-753" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="279" y="-742" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
 </a>
 </g>
 </g>
-<!-- Node8&#45;&gt;Node5 -->
+<!-- Node8&#45;&gt;Node6 -->
 <g id="edge5" class="edge">
-<title>Node8&#45;&gt;Node5</title>
-<path fill="none" stroke="#404040" d="M276.3589,-265.3661C273.6288,-251.1695 270.887,-236.9124 268.3995,-223.9775"/>
-<polygon fill="none" stroke="#404040" points="268.3675,-223.8104 263.3063,-218.6738 266.1012,-212.0263 271.1624,-217.163 268.3675,-223.8104"/>
-<text text-anchor="middle" x="300.5" y="-239" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +comment</text>
+<title>Node8&#45;&gt;Node6</title>
+<path fill="none" stroke="#404040" d="M295.1916,-734.8866C282.5421,-697.5256 269.7731,-653.2539 263.5,-612 251.5402,-533.3486 261.6223,-512.5334 263.5,-433 263.5484,-430.9519 263.6055,-428.867 263.6698,-426.7613"/>
+<polygon fill="none" stroke="#404040" points="263.6763,-426.5791 259.8941,-420.4394 264.1069,-414.5868 267.889,-420.7265 263.6763,-426.5791"/>
+<text text-anchor="middle" x="301.5" y="-520" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +source_paths</text>
 </g>
 <!-- Node9 -->
 <g id="node6" class="node">
 <title>Node9</title>
 <g id="a_node6"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference. ">
-<polygon fill="#ffffff" stroke="#000000" points="339.5,-564 339.5,-786 473.5,-786 473.5,-564 339.5,-564"/>
-<text text-anchor="middle" x="406.5" y="-774" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="#000000" points="339.5,-767 473.5,-767 "/>
-<text text-anchor="start" x="347.5" y="-755" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
-<polyline fill="none" stroke="#000000" points="339.5,-748 473.5,-748 "/>
-<text text-anchor="start" x="347.5" y="-736" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
-<text text-anchor="start" x="347.5" y="-725" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
-<text text-anchor="start" x="347.5" y="-714" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
-<text text-anchor="start" x="347.5" y="-703" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
-<text text-anchor="start" x="347.5" y="-692" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
-<text text-anchor="start" x="347.5" y="-681" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
-<text text-anchor="start" x="347.5" y="-670" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
-<text text-anchor="start" x="347.5" y="-659" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
-<text text-anchor="start" x="347.5" y="-648" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="347.5" y="-637" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
-<text text-anchor="start" x="347.5" y="-626" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
-<text text-anchor="start" x="347.5" y="-615" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
-<text text-anchor="start" x="347.5" y="-604" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
-<text text-anchor="start" x="347.5" y="-593" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
-<text text-anchor="start" x="347.5" y="-582" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="347.5" y="-571" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
+<polygon fill="#ffffff" stroke="#000000" points="349.5,-1055.5 349.5,-1277.5 483.5,-1277.5 483.5,-1055.5 349.5,-1055.5"/>
+<text text-anchor="middle" x="416.5" y="-1265.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="#000000" points="349.5,-1258.5 483.5,-1258.5 "/>
+<text text-anchor="start" x="357.5" y="-1246.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
+<polyline fill="none" stroke="#000000" points="349.5,-1239.5 483.5,-1239.5 "/>
+<text text-anchor="start" x="357.5" y="-1227.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="357.5" y="-1216.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="357.5" y="-1205.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
+<text text-anchor="start" x="357.5" y="-1194.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
+<text text-anchor="start" x="357.5" y="-1183.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
+<text text-anchor="start" x="357.5" y="-1172.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
+<text text-anchor="start" x="357.5" y="-1161.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
+<text text-anchor="start" x="357.5" y="-1150.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="357.5" y="-1139.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="357.5" y="-1128.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="357.5" y="-1117.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
+<text text-anchor="start" x="357.5" y="-1106.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
+<text text-anchor="start" x="357.5" y="-1095.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
+<text text-anchor="start" x="357.5" y="-1084.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
+<text text-anchor="start" x="357.5" y="-1073.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="357.5" y="-1062.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node9&#45;&gt;Node8 -->
 <g id="edge6" class="edge">
 <title>Node9&#45;&gt;Node8</title>
-<path fill="none" stroke="#191970" d="M363.8543,-554.0448C350.9192,-517.3571 336.9516,-477.7409 324.8973,-443.5518"/>
-<polygon fill="none" stroke="#191970" points="360.6692,-555.5369 367.2952,-563.8041 367.2709,-553.2093 360.6692,-555.5369"/>
+<path fill="none" stroke="#191970" d="M385.7653,-1045.5043C374.701,-1001.9464 362.4277,-953.6293 352.1748,-913.2656"/>
+<polygon fill="none" stroke="#191970" points="382.3993,-1046.4696 388.2536,-1055.3001 389.1838,-1044.7461 382.3993,-1046.4696"/>
 </g>
-<!-- Node12 -->
-<g id="node9" class="node">
-<title>Node12</title>
-<g id="a_node9"><a xlink:href="classtvm_1_1script_1_1printer_1_1Doc.html" target="_top" xlink:title="Reference type of DocNode. ">
-<polygon fill="#ffffff" stroke="#000000" points="380.5,-309.5 380.5,-399.5 546.5,-399.5 546.5,-309.5 380.5,-309.5"/>
-<text text-anchor="middle" x="463.5" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer::Doc</text>
-<polyline fill="none" stroke="#000000" points="380.5,-380.5 546.5,-380.5 "/>
-<text text-anchor="middle" x="463.5" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="380.5,-361.5 546.5,-361.5 "/>
-<text text-anchor="start" x="388.5" y="-349.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~Doc()</text>
-<text text-anchor="start" x="388.5" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
-<text text-anchor="start" x="388.5" y="-327.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
-<text text-anchor="start" x="388.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># Doc()</text>
+<!-- Node11 -->
+<g id="node8" class="node">
+<title>Node11</title>
+<g id="a_node8"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="{tvm::runtime::Optional\l\&lt; tvm::runtime::String \&gt;\n|+ _type_is_nullable\l|+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ operator=()\l+ operator=()\land 15 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="348,-433.5 348,-611.5 485,-611.5 485,-433.5 348,-433.5"/>
+<text text-anchor="start" x="356" y="-599.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="416.5" y="-588.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::String &gt;</text>
+<polyline fill="none" stroke="#000000" points="348,-581.5 485,-581.5 "/>
+<text text-anchor="start" x="356" y="-569.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
+<polyline fill="none" stroke="#000000" points="348,-562.5 485,-562.5 "/>
+<text text-anchor="start" x="356" y="-550.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-539.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-528.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-517.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-495.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-484.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-473.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="356" y="-462.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="356" y="-451.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="356" y="-440.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 15 more...</text>
 </a>
 </g>
 </g>
-<!-- Node9&#45;&gt;Node12 -->
-<g id="edge10" class="edge">
-<title>Node9&#45;&gt;Node12</title>
-<path fill="none" stroke="#191970" d="M428.0546,-553.8025C437.6567,-499.812 448.3788,-439.5236 455.4899,-399.539"/>
-<polygon fill="none" stroke="#191970" points="424.581,-553.3457 426.2759,-563.8041 431.4729,-554.5715 424.581,-553.3457"/>
+<!-- Node9&#45;&gt;Node11 -->
+<g id="edge9" class="edge">
+<title>Node9&#45;&gt;Node11</title>
+<path fill="none" stroke="#191970" d="M416.5,-1045.3363C416.5,-919.2581 416.5,-724.7985 416.5,-611.9668"/>
+<polygon fill="none" stroke="#191970" points="413.0001,-1045.4259 416.5,-1055.4259 420.0001,-1045.426 413.0001,-1045.4259"/>
+</g>
+<!-- Node13 -->
+<g id="node10" class="node">
+<title>Node13</title>
+<g id="a_node10"><a xlink:href="classtvm_1_1script_1_1printer_1_1Doc.html" target="_top" xlink:title="Reference type of DocNode. ">
+<polygon fill="#ffffff" stroke="#000000" points="444.5,-779 444.5,-869 610.5,-869 610.5,-779 444.5,-779"/>
+<text text-anchor="middle" x="527.5" y="-857" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer::Doc</text>
+<polyline fill="none" stroke="#000000" points="444.5,-850 610.5,-850 "/>
+<text text-anchor="middle" x="527.5" y="-838" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="444.5,-831 610.5,-831 "/>
+<text text-anchor="start" x="452.5" y="-819" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~Doc()</text>
+<text text-anchor="start" x="452.5" y="-808" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
+<text text-anchor="start" x="452.5" y="-797" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
+<text text-anchor="start" x="452.5" y="-786" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># Doc()</text>
+</a>
+</g>
+</g>
+<!-- Node9&#45;&gt;Node13 -->
+<g id="edge12" class="edge">
+<title>Node9&#45;&gt;Node13</title>
+<path fill="none" stroke="#191970" d="M455.6928,-1045.5673C475.5203,-984.388 498.3951,-913.8058 512.8978,-869.0565"/>
+<polygon fill="none" stroke="#191970" points="452.2921,-1044.7081 452.5385,-1055.3001 458.9511,-1046.8662 452.2921,-1044.7081"/>
 </g>
 <!-- Node10 -->
 <g id="node7" class="node">
 <title>Node10</title>
 <g id="a_node7"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title="{tvm::runtime::ObjectPtr\l\&lt; tvm::runtime::Object \&gt;\n||+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ObjectPtr()\l+ ~ObjectPtr()\l+ swap()\l+ get()\l+ operator&#45;\&gt;()\land 11 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="336.5,-916.5 336.5,-1094.5 476.5,-1094.5 476.5,-916.5 336.5,-916.5"/>
-<text text-anchor="start" x="344.5" y="-1082.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="406.5" y="-1071.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="#000000" points="336.5,-1064.5 476.5,-1064.5 "/>
-<text text-anchor="middle" x="406.5" y="-1052.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="336.5,-1045.5 476.5,-1045.5 "/>
-<text text-anchor="start" x="344.5" y="-1033.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="344.5" y="-1022.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="344.5" y="-1011.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="344.5" y="-1000.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="344.5" y="-989.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="344.5" y="-978.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
-<text text-anchor="start" x="344.5" y="-967.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="344.5" y="-956.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ swap()</text>
-<text text-anchor="start" x="344.5" y="-945.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
-<text text-anchor="start" x="344.5" y="-934.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="344.5" y="-923.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 11 more...</text>
+<polygon fill="#ffffff" stroke="#000000" points="346.5,-1325.5 346.5,-1503.5 486.5,-1503.5 486.5,-1325.5 346.5,-1325.5"/>
+<text text-anchor="start" x="354.5" y="-1491.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="416.5" y="-1480.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="#000000" points="346.5,-1473.5 486.5,-1473.5 "/>
+<text text-anchor="middle" x="416.5" y="-1461.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="346.5,-1454.5 486.5,-1454.5 "/>
+<text text-anchor="start" x="354.5" y="-1442.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="354.5" y="-1431.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="354.5" y="-1420.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="354.5" y="-1409.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="354.5" y="-1398.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="354.5" y="-1387.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectPtr()</text>
+<text text-anchor="start" x="354.5" y="-1376.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="354.5" y="-1365.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ swap()</text>
+<text text-anchor="start" x="354.5" y="-1354.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="354.5" y="-1343.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="354.5" y="-1332.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 11 more...</text>
 </a>
 </g>
 </g>
 <!-- Node10&#45;&gt;Node9 -->
 <g id="edge7" class="edge">
 <title>Node10&#45;&gt;Node9</title>
-<path fill="none" stroke="#404040" d="M406.5,-916.4973C406.5,-880.1115 406.5,-837.409 406.5,-798.1129"/>
-<polygon fill="none" stroke="#404040" points="406.5001,-798.0376 402.5,-792.0377 406.5,-786.0376 410.5,-792.0376 406.5001,-798.0376"/>
-<text text-anchor="middle" x="426" y="-890" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #data_</text>
+<path fill="none" stroke="#404040" d="M416.5,-1325.3167C416.5,-1313.8765 416.5,-1302.0062 416.5,-1290.1402"/>
+<polygon fill="none" stroke="#404040" points="416.5001,-1289.7944 412.5,-1283.7944 416.5,-1277.7944 420.5,-1283.7943 416.5001,-1289.7944"/>
+<text text-anchor="middle" x="436" y="-1299" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #data_</text>
 </g>
-<!-- Node11 -->
-<g id="node8" class="node">
-<title>Node11</title>
-<g id="a_node8"><a xlink:href="classtvm_1_1script_1_1printer_1_1ExprDoc.html" target="_top" xlink:title="Reference type of ExprDocNode. ">
-<polygon fill="#ffffff" stroke="#000000" points="380.5,-127.5 380.5,-217.5 546.5,-217.5 546.5,-127.5 380.5,-127.5"/>
-<text text-anchor="start" x="388.5" y="-205.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="463.5" y="-194.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDoc</text>
-<polyline fill="none" stroke="#000000" points="380.5,-187.5 546.5,-187.5 "/>
-<text text-anchor="middle" x="463.5" y="-175.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="380.5,-168.5 546.5,-168.5 "/>
-<text text-anchor="start" x="388.5" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
-<text text-anchor="start" x="388.5" y="-145.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
-<text text-anchor="start" x="388.5" y="-134.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ExprDoc()</text>
+<!-- Node11&#45;&gt;Node5 -->
+<g id="edge8" class="edge">
+<title>Node11&#45;&gt;Node5</title>
+<path fill="none" stroke="#404040" d="M409.4058,-433.0886C403.8287,-362.7981 396.2535,-267.3249 391.6296,-209.0477"/>
+<polygon fill="none" stroke="#404040" points="391.6106,-208.8072 387.1486,-203.1424 390.6614,-196.8448 395.1235,-202.5096 391.6106,-208.8072"/>
+<text text-anchor="middle" x="435.5" y="-367" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +comment</text>
+</g>
+<!-- Node12 -->
+<g id="node9" class="node">
+<title>Node12</title>
+<g id="a_node9"><a xlink:href="classtvm_1_1script_1_1printer_1_1ExprDoc.html" target="_top" xlink:title="Reference type of ExprDocNode. ">
+<polygon fill="#ffffff" stroke="#000000" points="444.5,-215.5 444.5,-305.5 610.5,-305.5 610.5,-215.5 444.5,-215.5"/>
+<text text-anchor="start" x="452.5" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="527.5" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ExprDoc</text>
+<polyline fill="none" stroke="#000000" points="444.5,-275.5 610.5,-275.5 "/>
+<text text-anchor="middle" x="527.5" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="444.5,-256.5 610.5,-256.5 "/>
+<text text-anchor="start" x="452.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
+<text text-anchor="start" x="452.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
+<text text-anchor="start" x="452.5" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ExprDoc()</text>
 </a>
 </g>
 </g>
-<!-- Node11&#45;&gt;Node4 -->
-<g id="edge8" class="edge">
-<title>Node11&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M428.3413,-127.2716C418.8684,-115.0856 408.5726,-101.841 398.9312,-89.4381"/>
-<polygon fill="none" stroke="#404040" points="398.7323,-89.1822 391.8918,-86.9001 391.3674,-79.7081 398.2079,-81.9902 398.7323,-89.1822"/>
-<text text-anchor="middle" x="428.5" y="-101" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +expr</text>
+<!-- Node12&#45;&gt;Node4 -->
+<g id="edge10" class="edge">
+<title>Node12&#45;&gt;Node4</title>
+<path fill="none" stroke="#404040" d="M522.7896,-215.2286C518.8767,-186.4753 512.0295,-148.8182 500.5,-117 497.2724,-108.0929 493.0931,-98.9932 488.6106,-90.3144"/>
+<polygon fill="none" stroke="#404040" points="488.5223,-90.1509 482.1514,-86.7727 482.8194,-79.5926 489.1903,-82.9708 488.5223,-90.1509"/>
+<text text-anchor="middle" x="536.5" y="-154.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +expr</text>
 </g>
-<!-- Node12&#45;&gt;Node11 -->
-<g id="edge9" class="edge">
-<title>Node12&#45;&gt;Node11</title>
-<path fill="none" stroke="#191970" d="M463.5,-298.942C463.5,-272.9053 463.5,-242.2808 463.5,-217.6924"/>
-<polygon fill="none" stroke="#191970" points="460.0001,-299.0432 463.5,-309.0432 467.0001,-299.0432 460.0001,-299.0432"/>
+<!-- Node13&#45;&gt;Node12 -->
+<g id="edge11" class="edge">
+<title>Node13&#45;&gt;Node12</title>
+<path fill="none" stroke="#191970" d="M527.5,-768.8356C527.5,-657.6244 527.5,-408.3981 527.5,-305.8761"/>
+<polygon fill="none" stroke="#191970" points="524.0001,-768.8389 527.5,-778.839 531.0001,-768.839 524.0001,-768.8389"/>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprStmtDocNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprStmtDocNode__inherit__graph.svg
index 0db69f0bc..e0d39cc1e 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprStmtDocNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ExprStmtDocNode__inherit__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: tvm::script::printer::ExprStmtDocNode Pages: 1 -->
-<svg width="217pt" height="788pt"
- viewBox="0.00 0.00 217.00 788.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 784)">
+<svg width="217pt" height="799pt"
+ viewBox="0.00 0.00 217.00 799.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 795)">
 <title>tvm::script::printer::ExprStmtDocNode</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-784 213,-784 213,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-795 213,-795 213,4 -4,4"/>
 <!-- Node0 -->
 <g id="node1" class="node">
 <title>Node0</title>
@@ -48,10 +48,11 @@
 <g id="node3" class="node">
 <title>Node2</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1script_1_1printer_1_1DocNode.html" target="_top" xlink:title="The base class of all Doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="1,-254.5 1,-344.5 208,-344.5 208,-254.5 1,-254.5"/>
-<text text-anchor="start" x="9" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="104.5" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
-<polyline fill="none" stroke="#000000" points="1,-314.5 208,-314.5 "/>
+<polygon fill="#ffffff" stroke="#000000" points="1,-254.5 1,-355.5 208,-355.5 208,-254.5 1,-254.5"/>
+<text text-anchor="start" x="9" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="104.5" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
+<polyline fill="none" stroke="#000000" points="1,-325.5 208,-325.5 "/>
+<text text-anchor="start" x="9" y="-313.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ source_paths</text>
 <text text-anchor="start" x="9" y="-302.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
 <polyline fill="none" stroke="#000000" points="1,-295.5 208,-295.5 "/>
 <text text-anchor="start" x="9" y="-283.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
@@ -63,58 +64,58 @@
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge2" class="edge">
 <title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="#191970" d="M104.5,-244.2012C104.5,-235.4232 104.5,-226.4326 104.5,-217.9156"/>
-<polygon fill="none" stroke="#191970" points="101.0001,-244.3669 104.5,-254.367 108.0001,-244.367 101.0001,-244.3669"/>
+<path fill="none" stroke="#191970" d="M104.5,-243.9214C104.5,-235.1275 104.5,-226.2114 104.5,-217.7978"/>
+<polygon fill="none" stroke="#191970" points="101.0001,-244.1509 104.5,-254.151 108.0001,-244.151 101.0001,-244.1509"/>
 </g>
 <!-- Node3 -->
 <g id="node4" class="node">
 <title>Node3</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers. ">
-<polygon fill="#ffffff" stroke="#000000" points="13,-381.5 13,-779.5 196,-779.5 196,-381.5 13,-381.5"/>
-<text text-anchor="middle" x="104.5" y="-767.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
-<polyline fill="none" stroke="#000000" points="13,-760.5 196,-760.5 "/>
-<text text-anchor="start" x="21" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<text text-anchor="start" x="21" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
-<text text-anchor="start" x="21" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
-<text text-anchor="start" x="21" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
-<text text-anchor="start" x="21" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
-<text text-anchor="start" x="21" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
-<text text-anchor="start" x="21" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
-<text text-anchor="start" x="21" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="21" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="21" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
-<text text-anchor="start" x="21" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="21" y="-627.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
-<text text-anchor="start" x="21" y="-616.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
-<text text-anchor="start" x="21" y="-605.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
-<text text-anchor="start" x="21" y="-594.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># deleter_</text>
-<polyline fill="none" stroke="#000000" points="13,-587.5 196,-587.5 "/>
-<text text-anchor="start" x="21" y="-575.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
-<text text-anchor="start" x="21" y="-564.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
-<text text-anchor="start" x="21" y="-553.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="21" y="-542.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
-<text text-anchor="start" x="21" y="-531.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<polygon fill="#ffffff" stroke="#000000" points="13,-392.5 13,-790.5 196,-790.5 196,-392.5 13,-392.5"/>
+<text text-anchor="middle" x="104.5" y="-778.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
+<polyline fill="none" stroke="#000000" points="13,-771.5 196,-771.5 "/>
+<text text-anchor="start" x="21" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<text text-anchor="start" x="21" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
+<text text-anchor="start" x="21" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
+<text text-anchor="start" x="21" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
+<text text-anchor="start" x="21" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
+<text text-anchor="start" x="21" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
+<text text-anchor="start" x="21" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
+<text text-anchor="start" x="21" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="21" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="21" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
+<text text-anchor="start" x="21" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="21" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
+<text text-anchor="start" x="21" y="-627.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
+<text text-anchor="start" x="21" y="-616.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
+<text text-anchor="start" x="21" y="-605.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># deleter_</text>
+<polyline fill="none" stroke="#000000" points="13,-598.5 196,-598.5 "/>
+<text text-anchor="start" x="21" y="-586.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
+<text text-anchor="start" x="21" y="-575.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
+<text text-anchor="start" x="21" y="-564.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="21" y="-553.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
+<text text-anchor="start" x="21" y="-542.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="21" y="-531.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
 <text text-anchor="start" x="21" y="-520.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
 <text text-anchor="start" x="21" y="-509.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="21" y="-498.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="21" y="-498.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
 <text text-anchor="start" x="21" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="21" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="21" y="-465.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="21" y="-454.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="21" y="-443.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
-<text text-anchor="start" x="21" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="21" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="21" y="-410.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
-<text text-anchor="start" x="21" y="-399.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
-<text text-anchor="start" x="21" y="-388.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="21" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="21" y="-465.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="21" y="-454.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
+<text text-anchor="start" x="21" y="-443.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="21" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="21" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
+<text text-anchor="start" x="21" y="-410.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
+<text text-anchor="start" x="21" y="-399.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node2 -->
 <g id="edge3" class="edge">
 <title>Node3&#45;&gt;Node2</title>
-<path fill="none" stroke="#191970" d="M104.5,-370.8999C104.5,-361.6327 104.5,-352.8995 104.5,-344.9342"/>
-<polygon fill="none" stroke="#191970" points="101.0001,-371.1543 104.5,-381.1543 108.0001,-371.1543 101.0001,-371.1543"/>
+<path fill="none" stroke="#191970" d="M104.5,-381.8341C104.5,-372.5137 104.5,-363.6751 104.5,-355.5365"/>
+<polygon fill="none" stroke="#191970" points="101.0001,-382.1263 104.5,-392.1263 108.0001,-382.1264 101.0001,-382.1263"/>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ForDocNode-members.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ForDocNode-members.html
index ebea6c6f7..55dbe8872 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ForDocNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ForDocNode-members.html
@@ -98,17 +98,18 @@ $(function() {
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a55549a6c23987890246248682560a03d">RefCounterType</a> typedef</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ForDocNode.html#aa72614136675287310ea08520f596642">rhs</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ForDocNode.html">tvm::script::printer::ForDocNode</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#ad94d79729ac85aa7c976e23d39066383">RuntimeTypeIndex</a>()</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#a57275ce6ecf2615438470f80c723e327">TVM_DECLARE_BASE_OBJECT_INFO</a>(StmtDocNode, DocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html">tvm::script::printer::StmtDocNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a78585f033948da5d1a4121aa7b969c47">tvm::script::printer::DocNode::TVM_DECLARE_BASE_OBJECT_INFO</a>(DocNode, Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ForDocNode.html#af980ad0b967b894b65ceb1bb04a80c18">TVM_DECLARE_FINAL_OBJECT_INFO</a>(ForDocNode, StmtDocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ForDocNode.html">tvm::script::printer::ForDocNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a481f01923b14e1851ebd38506e9c66ea">type_index</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a4bfc2586cb55f2af47728187b3256255">type_index_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a817ba6c23b7ee1821c48a75edf255a30">TypeIndex2Key</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6ee32a02dd44257da105fbbe5d9c8622">TypeIndex2KeyHash</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6841f97e06e6614dd7e82c6dd41b818a">TypeKey2Index</a>(const std::string &amp;key)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#afd548730a6139d19fe24473ad66026d7">unique</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ForDocNode.html#a7f6e685691fcd1d827cbe6d7521e6674">VisitAttrs</a>(AttrVisitor *v)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ForDocNode.html">tvm::script::printer::ForDocNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a6202cee16104155937f3e64c703f6885">~DocNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">source_paths</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#a57275ce6ecf2615438470f80c723e327">TVM_DECLARE_BASE_OBJECT_INFO</a>(StmtDocNode, DocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html">tvm::script::printer::StmtDocNode</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a78585f033948da5d1a4121aa7b969c47">tvm::script::printer::DocNode::TVM_DECLARE_BASE_OBJECT_INFO</a>(DocNode, Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ForDocNode.html#af980ad0b967b894b65ceb1bb04a80c18">TVM_DECLARE_FINAL_OBJECT_INFO</a>(ForDocNode, StmtDocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ForDocNode.html">tvm::script::printer::ForDocNode</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a481f01923b14e1851ebd38506e9c66ea">type_index</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a4bfc2586cb55f2af47728187b3256255">type_index_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a817ba6c23b7ee1821c48a75edf255a30">TypeIndex2Key</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6ee32a02dd44257da105fbbe5d9c8622">TypeIndex2KeyHash</a>(uint32_t tindex)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a6841f97e06e6614dd7e82c6dd41b818a">TypeKey2Index</a>(const std::string &amp;key)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#afd548730a6139d19fe24473ad66026d7">unique</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ForDocNode.html#a7f6e685691fcd1d827cbe6d7521e6674">VisitAttrs</a>(AttrVisitor *v)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1ForDocNode.html">tvm::script::printer::ForDocNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a6202cee16104155937f3e64c703f6885">~DocNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ForDocNode.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ForDocNode.html
index a171f45b3..f09fc8764 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ForDocNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ForDocNode.html
@@ -79,13 +79,13 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::script::printer::ForDocNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1ForDocNode__inherit__graph.svg" width="290" height="1080"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1ForDocNode__inherit__graph.svg" width="290" height="1095"><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::script::printer::ForDocNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1ForDocNode__coll__graph.svg" width="799" height="1724"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1ForDocNode__coll__graph.svg" width="915" height="2148"><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">
@@ -145,6 +145,10 @@ Public Attributes</h2></td></tr>
 <tr class="memitem:ab5825bdb8b993e7bcdbe592163d549a1 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1StmtDocNode"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Optional.html">Optional</a>&lt; <a class="el" href="classtvm_1_1runtime_1_1String.html">String</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#ab5825bdb8b993e7bcdbe592163d549a1">comment</a> {<a cla [...]
 <tr class="memdesc:ab5825bdb8b993e7bcdbe592163d549a1 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1StmtDocNode"><td class="mdescLeft">&#160;</td><td class="mdescRight">The comment of this doc.  <a href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#ab5825bdb8b993e7bcdbe592163d549a1">More...</a><br /></td></tr>
 <tr class="separator:ab5825bdb8b993e7bcdbe592163d549a1 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1StmtDocNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode')"><img src="closed.png" alt="-"/>&#160;Public Attributes inherited from <a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td></tr>
+<tr class="memitem:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Array.html">Array</a>&lt; <a class="el" href="classtvm_1_1ObjectPath.html">ObjectPath</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">source_paths</a></td></tr>
+<tr class="memdesc:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="mdescLeft">&#160;</td><td class="mdescRight">The list of object paths of the source IR node.  <a href="classtvm_1_1script_1_1printer_1_1DocNode.html#a29e21c8f39639d1d30697971267847a8">More...</a><br /></td></tr>
+<tr class="separator:a29e21c8f39639d1d30697971267847a8 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
 Static Public Attributes</h2></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ForDocNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ForDocNode__coll__graph.svg
index 2547d5e50..341c31156 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ForDocNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1ForDocNode__coll__graph.svg
@@ -4,307 +4,344 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: tvm::script::printer::ForDocNode Pages: 1 -->
-<svg width="599pt" height="1293pt"
- viewBox="0.00 0.00 598.50 1293.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 1289)">
+<svg width="686pt" height="1611pt"
+ viewBox="0.00 0.00 685.50 1611.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 1607)">
 <title>tvm::script::printer::ForDocNode</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1289 594.5,-1289 594.5,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1607 681.5,-1607 681.5,4 -4,4"/>
 <!-- Node4 -->
 <g id="node1" class="node">
 <title>Node4</title>
-<polygon fill="#bfbfbf" stroke="#000000" points="266,-.5 266,-79.5 475,-79.5 475,-.5 266,-.5"/>
-<text text-anchor="start" x="274" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="370.5" y="-56.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ForDocNode</text>
-<polyline fill="none" stroke="#000000" points="266,-49.5 475,-49.5 "/>
-<text text-anchor="start" x="274" y="-37.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="266,-30.5 475,-30.5 "/>
-<text text-anchor="start" x="274" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="274" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_FINAL_OBJECT_INFO()</text>
+<polygon fill="#bfbfbf" stroke="#000000" points="361,-.5 361,-79.5 570,-79.5 570,-.5 361,-.5"/>
+<text text-anchor="start" x="369" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="465.5" y="-56.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::ForDocNode</text>
+<polyline fill="none" stroke="#000000" points="361,-49.5 570,-49.5 "/>
+<text text-anchor="start" x="369" y="-37.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="361,-30.5 570,-30.5 "/>
+<text text-anchor="start" x="369" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="369" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_FINAL_OBJECT_INFO()</text>
 </g>
 <!-- Node5 -->
 <g id="node2" class="node">
 <title>Node5</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html" target="_top" xlink:title="The base class of statement doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="127,-144 127,-223 334,-223 334,-144 127,-144"/>
-<text text-anchor="start" x="135" y="-211" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="230.5" y="-200" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::StmtDocNode</text>
-<polyline fill="none" stroke="#000000" points="127,-193 334,-193 "/>
-<text text-anchor="start" x="135" y="-181" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="127,-174 334,-174 "/>
-<text text-anchor="start" x="135" y="-162" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="135" y="-151" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
+<polygon fill="#ffffff" stroke="#000000" points="222,-117.5 222,-196.5 429,-196.5 429,-117.5 222,-117.5"/>
+<text text-anchor="start" x="230" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="325.5" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::StmtDocNode</text>
+<polyline fill="none" stroke="#000000" points="222,-166.5 429,-166.5 "/>
+<text text-anchor="start" x="230" y="-154.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="222,-147.5 429,-147.5 "/>
+<text text-anchor="start" x="230" y="-135.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="230" y="-124.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node4 -->
 <g id="edge1" class="edge">
 <title>Node5&#45;&gt;Node4</title>
-<path fill="none" stroke="#191970" d="M276.1096,-136.7502C294.0008,-118.4116 314.3215,-97.5829 331.5138,-79.9608"/>
-<polygon fill="none" stroke="#191970" points="273.6042,-134.3061 269.1262,-143.9081 278.6147,-139.1944 273.6042,-134.3061"/>
+<path fill="none" stroke="#191970" d="M380.891,-110.709C393.2194,-100.4059 406.1806,-89.5741 418.1512,-79.5701"/>
+<polygon fill="none" stroke="#191970" points="378.3264,-108.2908 372.8976,-117.3891 382.8153,-113.6621 378.3264,-108.2908"/>
 </g>
 <!-- Node6 -->
 <g id="node3" class="node">
 <title>Node6</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1script_1_1printer_1_1DocNode.html" target="_top" xlink:title="The base class of all Doc. ">
-<polygon fill="#ffffff" stroke="#000000" points="0,-499.5 0,-589.5 207,-589.5 207,-499.5 0,-499.5"/>
-<text text-anchor="start" x="8" y="-577.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
-<text text-anchor="middle" x="103.5" y="-566.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
-<polyline fill="none" stroke="#000000" points="0,-559.5 207,-559.5 "/>
-<text text-anchor="start" x="8" y="-547.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<polyline fill="none" stroke="#000000" points="0,-540.5 207,-540.5 "/>
-<text text-anchor="start" x="8" y="-528.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
-<text text-anchor="start" x="8" y="-517.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
-<text text-anchor="start" x="8" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~DocNode()</text>
+<polygon fill="#ffffff" stroke="#000000" points="117,-423.5 117,-513.5 324,-513.5 324,-423.5 117,-423.5"/>
+<text text-anchor="start" x="125" y="-501.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer</text>
+<text text-anchor="middle" x="220.5" y="-490.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::DocNode</text>
+<polyline fill="none" stroke="#000000" points="117,-483.5 324,-483.5 "/>
+<text text-anchor="start" x="125" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<polyline fill="none" stroke="#000000" points="117,-464.5 324,-464.5 "/>
+<text text-anchor="start" x="125" y="-452.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ VisitAttrs()</text>
+<text text-anchor="start" x="125" y="-441.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DECLARE_BASE_OBJECT_INFO()</text>
+<text text-anchor="start" x="125" y="-430.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~DocNode()</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node5 -->
 <g id="edge2" class="edge">
 <title>Node6&#45;&gt;Node5</title>
-<path fill="none" stroke="#191970" d="M122.8138,-489.6001C148.639,-416.1915 193.7999,-287.8207 216.5546,-223.14"/>
-<polygon fill="none" stroke="#191970" points="119.4731,-488.5498 119.456,-499.1446 126.0764,-490.8729 119.4731,-488.5498"/>
+<path fill="none" stroke="#191970" d="M239.0128,-413.5786C259.9332,-351.5148 293.4813,-251.9887 312.047,-196.9105"/>
+<polygon fill="none" stroke="#191970" points="235.6455,-412.6111 235.7679,-423.2052 242.2788,-414.8471 235.6455,-412.6111"/>
 </g>
 <!-- Node7 -->
 <g id="node4" class="node">
 <title>Node7</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers. ">
-<polygon fill="#ffffff" stroke="#000000" points="12,-671.5 12,-1058.5 195,-1058.5 195,-671.5 12,-671.5"/>
-<text text-anchor="middle" x="103.5" y="-1046.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
-<polyline fill="none" stroke="#000000" points="12,-1039.5 195,-1039.5 "/>
-<text text-anchor="start" x="20" y="-1027.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
-<text text-anchor="start" x="20" y="-1016.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
-<text text-anchor="start" x="20" y="-1005.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
-<text text-anchor="start" x="20" y="-994.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
-<text text-anchor="start" x="20" y="-983.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
-<text text-anchor="start" x="20" y="-972.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
-<text text-anchor="start" x="20" y="-961.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
-<text text-anchor="start" x="20" y="-950.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="20" y="-939.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="20" y="-928.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
-<text text-anchor="start" x="20" y="-917.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
-<text text-anchor="start" x="20" y="-906.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
-<text text-anchor="start" x="20" y="-895.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
-<text text-anchor="start" x="20" y="-884.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
-<polyline fill="none" stroke="#000000" points="12,-877.5 195,-877.5 "/>
-<text text-anchor="start" x="20" y="-865.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
-<text text-anchor="start" x="20" y="-854.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
-<text text-anchor="start" x="20" y="-843.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="20" y="-832.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
-<text text-anchor="start" x="20" y="-821.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
-<text text-anchor="start" x="20" y="-810.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-799.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-788.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
-<text text-anchor="start" x="20" y="-777.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="20" y="-766.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="20" y="-755.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="20" y="-744.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="20" y="-733.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
-<text text-anchor="start" x="20" y="-722.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="20" y="-711.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="20" y="-700.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
-<text text-anchor="start" x="20" y="-689.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
-<text text-anchor="start" x="20" y="-678.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
+<polygon fill="#ffffff" stroke="#000000" points="0,-729.5 0,-1116.5 183,-1116.5 183,-729.5 0,-729.5"/>
+<text text-anchor="middle" x="91.5" y="-1104.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Object</text>
+<polyline fill="none" stroke="#000000" points="0,-1097.5 183,-1097.5 "/>
+<text text-anchor="start" x="8" y="-1085.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_key</text>
+<text text-anchor="start" x="8" y="-1074.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_final</text>
+<text text-anchor="start" x="8" y="-1063.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-1052.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-1041.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_overflow</text>
+<text text-anchor="start" x="8" y="-1030.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-1019.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_attrs</text>
+<text text-anchor="start" x="8" y="-1008.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-997.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="8" y="-986.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-975.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_reduce</text>
+<text text-anchor="start" x="8" y="-964.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_index</text>
+<text text-anchor="start" x="8" y="-953.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># type_index_</text>
+<text text-anchor="start" x="8" y="-942.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># ref_counter_</text>
+<polyline fill="none" stroke="#000000" points="0,-935.5 183,-935.5 "/>
+<text text-anchor="start" x="8" y="-923.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ type_index()</text>
+<text text-anchor="start" x="8" y="-912.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-901.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-890.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-879.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="8" y="-868.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-857.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-846.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Object()</text>
+<text text-anchor="start" x="8" y="-835.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="8" y="-824.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="8" y="-813.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-802.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-791.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-780.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-769.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-758.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># IncRef()</text>
+<text text-anchor="start" x="8" y="-747.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DecRef()</text>
+<text text-anchor="start" x="8" y="-736.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node6 -->
 <g id="edge3" class="edge">
 <title>Node7&#45;&gt;Node6</title>
-<path fill="none" stroke="#191970" d="M103.5,-660.8931C103.5,-634.284 103.5,-609.4228 103.5,-589.5654"/>
-<polygon fill="none" stroke="#191970" points="100.0001,-661.1701 103.5,-671.1701 107.0001,-661.1701 100.0001,-661.1701"/>
+<path fill="none" stroke="#191970" d="M131.7459,-719.5345C146.433,-658.3262 165.061,-591.6112 187.5,-532 189.776,-525.9536 192.4889,-519.7436 195.3674,-513.6859"/>
+<polygon fill="none" stroke="#191970" points="128.3301,-718.7706 129.4226,-729.3089 135.1403,-720.3894 128.3301,-718.7706"/>
 </g>
 <!-- Node7&#45;&gt;Node7 -->
 <g id="edge4" class="edge">
 <title>Node7&#45;&gt;Node7</title>
-<path fill="none" stroke="#404040" d="M195.3625,-898.9248C206.0482,-892.6637 213,-881.3555 213,-865 213,-854.0112 209.8618,-845.3007 204.5615,-838.8687"/>
-<polygon fill="none" stroke="#404040" points="204.5184,-838.8322 197.3548,-838.0056 195.3625,-831.0752 202.5261,-831.9017 204.5184,-838.8322"/>
-<text text-anchor="middle" x="239" y="-862.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M183.3625,-956.9248C194.0482,-950.6637 201,-939.3555 201,-923 201,-912.0112 197.8618,-903.3007 192.5615,-896.8687"/>
+<polygon fill="none" stroke="#404040" points="192.5184,-896.8322 185.3548,-896.0056 183.3625,-889.0752 190.5261,-889.9017 192.5184,-896.8322"/>
+<text text-anchor="middle" x="227" y="-920.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> #deleter_</text>
 </g>
 <!-- Node8 -->
 <g id="node5" class="node">
 <title>Node8</title>
-<g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="{tvm::runtime::Optional\l\&lt; tvm::runtime::String \&gt;\n|+ _type_is_nullable\l|+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ operator=()\l+ operator=()\land 15 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="225,-455.5 225,-633.5 362,-633.5 362,-455.5 225,-455.5"/>
-<text text-anchor="start" x="233" y="-621.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
-<text text-anchor="middle" x="293.5" y="-610.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::String &gt;</text>
-<polyline fill="none" stroke="#000000" points="225,-603.5 362,-603.5 "/>
-<text text-anchor="start" x="233" y="-591.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
-<polyline fill="none" stroke="#000000" points="225,-584.5 362,-584.5 "/>
-<text text-anchor="start" x="233" y="-572.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-561.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-550.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-539.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-528.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-517.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-495.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
-<text text-anchor="start" x="233" y="-484.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="233" y="-473.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="233" y="-462.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 15 more...</text>
+<g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="{tvm::runtime::Array\l\&lt; tvm::ObjectPath \&gt;\n||+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ operator=()\l+ operator=()\land 24 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="271,-834 271,-1012 388,-1012 388,-834 271,-834"/>
+<text text-anchor="start" x="279" y="-1000" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="middle" x="329.5" y="-989" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::ObjectPath &gt;</text>
+<polyline fill="none" stroke="#000000" points="271,-982 388,-982 "/>
+<text text-anchor="middle" x="329.5" y="-970" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="271,-963 388,-963 "/>
+<text text-anchor="start" x="279" y="-951" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-940" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-929" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-918" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-907" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-896" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-885" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-874" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="279" y="-863" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="279" y="-852" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="279" y="-841" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
 </a>
 </g>
 </g>
-<!-- Node8&#45;&gt;Node5 -->
+<!-- Node8&#45;&gt;Node6 -->
 <g id="edge5" class="edge">
-<title>Node8&#45;&gt;Node5</title>
-<path fill="none" stroke="#404040" d="M260.1268,-455.2282C258.4011,-449.1053 256.8334,-442.9898 255.5,-437 251.2425,-417.8748 240.8989,-303.7441 234.9359,-235.3112"/>
-<polygon fill="none" stroke="#404040" points="234.9136,-235.0533 230.4097,-229.4217 233.8759,-223.0983 238.3797,-228.7299 234.9136,-235.0533"/>
-<text text-anchor="middle" x="284.5" y="-339.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +comment</text>
+<title>Node8&#45;&gt;Node6</title>
+<path fill="none" stroke="#404040" d="M315.4991,-833.8519C305.863,-797.5429 289.6659,-757.5014 262.5,-729 247.6381,-713.4075 229.5763,-728.8371 217.5,-711 180.6004,-656.4981 189.884,-578.135 202.7075,-525.3744"/>
+<polygon fill="none" stroke="#404040" points="202.7632,-525.1573 200.3815,-518.3508 205.7484,-513.5345 208.13,-520.341 202.7632,-525.1573"/>
+<text text-anchor="middle" x="255.5" y="-619" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> +source_paths</text>
 </g>
 <!-- Node9 -->
 <g id="node6" class="node">
 <title>Node9</title>
 <g id="a_node6"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference. ">
-<polygon fill="#ffffff" stroke="#000000" points="323.5,-754 323.5,-976 457.5,-976 457.5,-754 323.5,-754"/>
-<text text-anchor="middle" x="390.5" y="-964" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="#000000" points="323.5,-957 457.5,-957 "/>
-<text text-anchor="start" x="331.5" y="-945" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
-<polyline fill="none" stroke="#000000" points="323.5,-938 457.5,-938 "/>
-<text text-anchor="start" x="331.5" y="-926" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
-<text text-anchor="start" x="331.5" y="-915" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
-<text text-anchor="start" x="331.5" y="-904" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
-<text text-anchor="start" x="331.5" y="-893" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
-<text text-anchor="start" x="331.5" y="-882" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
-<text text-anchor="start" x="331.5" y="-871" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
-<text text-anchor="start" x="331.5" y="-860" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
-<text text-anchor="start" x="331.5" y="-849" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
-<text text-anchor="start" x="331.5" y="-838" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="331.5" y="-827" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
-<text text-anchor="start" x="331.5" y="-816" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
-<text text-anchor="start" x="331.5" y="-805" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
-<text text-anchor="start" x="331.5" y="-794" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
-<text text-anchor="start" x="331.5" y="-783" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
-<text text-anchor="start" x="331.5" y="-772" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="331.5" y="-761" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
+<polygon fill="#ffffff" stroke="#000000" points="368.5,-1154.5 368.5,-1376.5 502.5,-1376.5 502.5,-1154.5 368.5,-1154.5"/>
+<text text-anchor="middle" x="435.5" y="-1364.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="#000000" points="368.5,-1357.5 502.5,-1357.5 "/>
+<text text-anchor="start" x="376.5" y="-1345.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
+<polyline fill="none" stroke="#000000" points="368.5,-1338.5 502.5,-1338.5 "/>
+<text text-anchor="start" x="376.5" y="-1326.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="376.5" y="-1315.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ObjectRef()</text>
+<text text-anchor="start" x="376.5" y="-1304.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ same_as()</text>
+<text text-anchor="start" x="376.5" y="-1293.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator==()</text>
+<text text-anchor="start" x="376.5" y="-1282.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator!=()</text>
+<text text-anchor="start" x="376.5" y="-1271.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&lt;()</text>
+<text text-anchor="start" x="376.5" y="-1260.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ defined()</text>
+<text text-anchor="start" x="376.5" y="-1249.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ get()</text>
+<text text-anchor="start" x="376.5" y="-1238.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="376.5" y="-1227.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ unique()</text>
+<text text-anchor="start" x="376.5" y="-1216.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ use_count()</text>
+<text text-anchor="start" x="376.5" y="-1205.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ as()</text>
+<text text-anchor="start" x="376.5" y="-1194.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># get_mutable()</text>
+<text text-anchor="start" x="376.5" y="-1183.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># DowncastNoCheck()</text>
+<text text-anchor="start" x="376.5" y="-1172.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="376.5" y="-1161.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node9&#45;&gt;Node8 -->
 <g id="edge6" class="edge">
 <title>Node9&#45;&gt;Node8</title>
-<path fill="none" stroke="#191970" d="M353.8927,-744.0448C342.789,-707.3571 330.7991,-667.7409 320.4517,-633.5518"/>
-<polygon fill="none" stroke="#191970" points="350.5996,-745.2468 356.8463,-753.8041 357.2994,-743.219 350.5996,-745.2468"/>
+<path fill="none" stroke="#191970" d="M398.0532,-1144.5043C384.5725,-1100.9464 369.6189,-1052.6293 357.1267,-1012.2656"/>
+<polygon fill="none" stroke="#191970" points="394.7847,-1145.7819 401.0848,-1154.3001 401.4718,-1143.7123 394.7847,-1145.7819"/>
 </g>
 <!-- Node11 -->
 <g id="node8" class="node">
 <title>Node11</title>
-<g id="a_node8"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="{tvm::runtime::Array\l\&lt; tvm::script::printer\l::StmtDoc \&gt;\n||+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ operator=()\l+ operator=()\land 24 more...\l}">
-<polygon fill="#ffffff" stroke="#000000" points="322,-247.5 322,-436.5 441,-436.5 441,-247.5 322,-247.5"/>
-<text text-anchor="start" x="330" y="-424.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
-<text text-anchor="start" x="330" y="-413.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::script::printer</text>
-<text text-anchor="middle" x="381.5" y="-402.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::StmtDoc &gt;</text>
-<polyline fill="none" stroke="#000000" points="322,-395.5 441,-395.5 "/>
-<text text-anchor="middle" x="381.5" y="-383.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="322,-376.5 441,-376.5 "/>
-<text text-anchor="start" x="330" y="-364.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="330" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="330" y="-342.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="330" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="330" y="-320.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="330" y="-309.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="330" y="-298.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="330" y="-287.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
-<text text-anchor="start" x="330" y="-276.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="330" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
-<text text-anchor="start" x="330" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
+<g id="a_node8"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title="{tvm::runtime::Optional\l\&lt; tvm::runtime::String \&gt;\n|+ _type_is_nullable\l|+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ Optional()\l+ operator=()\l+ operator=()\land 15 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="302,-532.5 302,-710.5 439,-710.5 439,-532.5 302,-532.5"/>
+<text text-anchor="start" x="310" y="-698.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="370.5" y="-687.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::runtime::String &gt;</text>
+<polyline fill="none" stroke="#000000" points="302,-680.5 439,-680.5 "/>
+<text text-anchor="start" x="310" y="-668.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ _type_is_nullable</text>
+<polyline fill="none" stroke="#000000" points="302,-661.5 439,-661.5 "/>
+<text text-anchor="start" x="310" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="310" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="310" y="-627.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="310" y="-616.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="310" y="-605.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="310" y="-594.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="310" y="-583.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="310" y="-572.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Optional()</text>
+<text text-anchor="start" x="310" y="-561.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="310" y="-550.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="310" y="-539.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 15 more...</text>
 </a>
 </g>
 </g>
 <!-- Node9&#45;&gt;Node11 -->
 <g id="edge9" class="edge">
 <title>Node9&#45;&gt;Node11</title>
-<path fill="none" stroke="#191970" d="M388.4125,-743.6902C386.8046,-650.2548 384.6133,-522.9195 383.1324,-436.8594"/>
-<polygon fill="none" stroke="#191970" points="384.9142,-743.8269 388.5858,-753.7652 391.9132,-743.7064 384.9142,-743.8269"/>
+<path fill="none" stroke="#191970" d="M432.9726,-1144.3339C429.2612,-1035.1417 420.1018,-870.4999 397.5,-729 396.5439,-723.0144 395.4143,-716.8742 394.1684,-710.7081"/>
+<polygon fill="none" stroke="#191970" points="429.4766,-1144.5167 433.3045,-1154.3959 436.4728,-1144.2859 429.4766,-1144.5167"/>
 </g>
-<!-- Node13 -->
-<g id="node10" class="node">
-<title>Node13</title>
-<g id="a_node10"><a xlink:href="classtvm_1_1script_1_1printer_1_1Doc.html" target="_top" xlink:title="Reference type of DocNode. ">
-<polygon fill="#ffffff" stroke="#000000" points="422.5,-499.5 422.5,-589.5 588.5,-589.5 588.5,-499.5 422.5,-499.5"/>
-<text text-anchor="middle" x="505.5" y="-577.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer::Doc</text>
-<polyline fill="none" stroke="#000000" points="422.5,-570.5 588.5,-570.5 "/>
-<text text-anchor="middle" x="505.5" y="-558.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-<polyline fill="none" stroke="#000000" points="422.5,-551.5 588.5,-551.5 "/>
-<text text-anchor="start" x="430.5" y="-539.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~Doc()</text>
-<text text-anchor="start" x="430.5" y="-528.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
-<text text-anchor="start" x="430.5" y="-517.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
-<text text-anchor="start" x="430.5" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># Doc()</text>
+<!-- Node12 -->
+<g id="node9" class="node">
+<title>Node12</title>
+<g id="a_node9"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title="{tvm::runtime::Array\l\&lt; tvm::script::printer\l::StmtDoc \&gt;\n||+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ Array()\l+ operator=()\l+ operator=()\land 24 more...\l}">
+<polygon fill="#ffffff" stroke="#000000" points="387,-215.5 387,-404.5 506,-404.5 506,-215.5 387,-215.5"/>
+<text text-anchor="start" x="395" y="-392.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::runtime::Array</text>
+<text text-anchor="start" x="395" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt; tvm::script::printer</text>
+<text text-anchor="middle" x="446.5" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">::StmtDoc &gt;</text>
+<polyline fill="none" stroke="#000000" points="387,-363.5 506,-363.5 "/>
+<text text-anchor="middle" x="446.5" y="-351.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="387,-344.5 506,-344.5 "/>
+<text text-anchor="start" x="395" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="395" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="395" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="395" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="395" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="395" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="395" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="395" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ Array()</text>
+<text text-anchor="start" x="395" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="395" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ operator=()</text>
+<text text-anchor="start" x="395" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">and 24 more...</text>
 </a>
 </g>
 </g>
-<!-- Node9&#45;&gt;Node13 -->
-<g id="edge12" class="edge">
-<title>Node9&#45;&gt;Node13</title>
-<path fill="none" stroke="#191970" d="M433.8668,-744.1385C453.2702,-690.0623 474.9625,-629.6066 489.3394,-589.539"/>
-<polygon fill="none" stroke="#191970" points="430.4817,-743.2096 430.3987,-753.8041 437.0704,-745.5738 430.4817,-743.2096"/>
+<!-- Node9&#45;&gt;Node12 -->
+<g id="edge11" class="edge">
+<title>Node9&#45;&gt;Node12</title>
+<path fill="none" stroke="#191970" d="M440.2992,-1144.1886C440.3709,-1141.4335 440.4381,-1138.701 440.5,-1136 446.5739,-871.126 447.0059,-558.3618 446.7759,-404.7822"/>
+<polygon fill="none" stroke="#191970" points="436.7989,-1144.1544 440.0208,-1154.2474 443.7963,-1144.3481 436.7989,-1144.1544"/>
+</g>
+<!-- Node14 -->
+<g id="node11" class="node">
+<title>Node14</title>
+<g id="a_node11"><a xlink:href="classtvm_1_1script_1_1printer_1_1Doc.html" target="_top" xlink:title="Reference type of DocNode. ">
+<polygon fill="#ffffff" stroke="#000000" points="490.5,-878 490.5,-968 656.5,-968 656.5,-878 490.5,-878"/>
+<text text-anchor="middle" x="573.5" y="-956" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tvm::script::printer::Doc</text>
+<polyline fill="none" stroke="#000000" points="490.5,-949 656.5,-949 "/>
+<text text-anchor="middle" x="573.5" y="-937" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<polyline fill="none" stroke="#000000" points="490.5,-930 656.5,-930 "/>
+<text text-anchor="start" x="498.5" y="-918" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ ~Doc()</text>
+<text text-anchor="start" x="498.5" y="-907" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">+ TVM_DEFINE_NOTNULLABLE</text>
+<text text-anchor="start" x="498.5" y="-896" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">_OBJECT_REF_METHODS()</text>
+<text text-anchor="start" x="498.5" y="-885" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"># Doc()</text>
+</a>
+</g>
+</g>
+<!-- Node9&#45;&gt;Node14 -->
+<g id="edge14" class="edge">
+<title>Node9&#45;&gt;Node14</title>
+<path fill="none" stroke="#191970" d="M484.0741,-1144.9448C508.7595,-1083.6785 537.2784,-1012.8979 555.3459,-968.0565"/>
+<polygon fill="none" stroke="#191970" points="480.7956,-1143.7166 480.3046,-1154.3001 487.2883,-1146.3327 480.7956,-1143.7166"/>
 </g>
 <!-- Node10 -->
... 25343 lines suppressed ...