def METHOD_NAME():
    @tvm.script.ir_module
    class TestChangeShape:
        @R.function
        def main(x: R.Tensor(("m", "n"))):
            y = x
            # not trivial: introduces new shape vars
            o, p = T.int64(), T.int64()
            z = R.match_cast(x, R.Tensor((o, p)))
            w = z
            q = R.add(w, y)
            return R.add(q, w)
    @tvm.script.ir_module
    class Expected:
        @R.function
        def main(x: R.Tensor(("m", "n"))):
            y = x
            o, p = T.int64(), T.int64()
            z = R.match_cast(x, R.Tensor((o, p)))
            w = z
            # the shape_ field on q will need to be updated
            q = R.add(z, x)
            return R.add(q, z)
    new_mod = relax.transform.CanonicalizeBindings()(TestChangeShape)
    assert_structural_equal(new_mod, Expected)